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] Created: (JDO-499) JDOImplHelper should catch exceptions in nonBinaryCompatibleGet and nonBinaryCompatibleIs
Date Tue, 12 Jun 2007 22:09:26 GMT
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


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