db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig Russell (JIRA)" <j...@apache.org>
Subject [jira] Updated: (JDO-499) JDOImplHelper should catch exceptions in nonBinaryCompatibleGet and nonBinaryCompatibleIs
Date Fri, 19 Oct 2007 22:04:52 GMT

     [ https://issues.apache.org/jira/browse/JDO-499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Craig Russell updated JDO-499:
------------------------------

    Attachment: jdo-499.patch

Please review this patch. It wraps the binary compatible callouts to external implementations
with try-catch to protect against errant implementations.

> JDOImplHelper should catch exceptions in nonBinaryCompatibleGet and nonBinaryCompatibleIs
> -----------------------------------------------------------------------------------------
>
>                 Key: JDO-499
>                 URL: https://issues.apache.org/jira/browse/JDO-499
>             Project: JDO
>          Issue Type: Bug
>          Components: api2, api2-legacy
>    Affects Versions: JDO 2 final
>            Reporter: Craig Russell
>            Assignee: Craig Russell
>            Priority: Minor
>             Fix For: JDO 2 maintenance release 1
>
>         Attachments: jdo-499.patch
>
>
> The code to perform non-binary-compatible state tests should catch and ignore exceptions
thrown from registered implementations. This would protect users from errant implementations.
> For example, the following returns the appropriate result if an implementation (not the
implementation responsible for the instance) throws an exception.
>     /**
>      * Return an object associated with a non-binary-compatible instance.
>      * Delegate to all registered StateInterrogation instances until
>      * one of them handles the call (returns a non-null answer).
>      * The caller provides the stateless "method object" that does 
>      * the actual call to the StateInterrogation instance.
>      * @param pc the instance whose associated object is needed
>      * @param sibr the method object that delegates to the 
>      * non-binary-compatible implementation
>      * @return the associated object or null if the implementation does not
>      * manage the class of the instance
>      */
>     public Object nonBinaryCompatibleGet(Object pc, 
>             StateInterrogationObjectReturn sibr) {
>         Iterator sit = getStateInterrogationIterator();
>         while (sit.hasNext()) {
>             try {
>                 StateInterrogation si = (StateInterrogation)sit.next();
>                 Object result = sibr.get(pc, si);
>                 if (result != null) return result;
>             } catch (Throwable t) {
>                 // ignore exceptions thrown by non-binary-compatible impls
>             }
>         }
>         return null;
>     }
>     

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message