JCR2SPI Node.hasProperty(String) "optional node incompatibility" with Jeceira
-----------------------------------------------------------------------------

                 Key: JCR-1212
                 URL: https://issues.apache.org/jira/browse/JCR-1212
             Project: Jackrabbit
          Issue Type: Improvement
          Components: SPI
    Affects Versions: 1.4
         Environment: 1.4-SNAPSHOT
            Reporter: David Rauschenbach
            Priority: Minor


Jeceira throws a PropertyNotFoundException when an SPI2JCR-wrapped Jeceira 
repository gets invoked with the SPI getPropertyInfo, specifying an optional 
property that does not exist for a given node instance.

JCR2SPI only expects an ItemNotFoundException to be thrown in such a case, 
which prevents Node.hasProperty(String) from returning true/false, and instead 
results in a RepositoryException being thrown, which in effect is an 
interoperability issue.

JCR2SPI compatibility with Jeceira-based repositories would be significantly 
improved if the code in NodeEntryImpl.java:loadPropertyEntry(PropertyId) caught 
not only ItemNotFoundException, but also PathNotFoundException, before 
returning null in both cases.

Proposed change to NodeEntryImpl.java:

    private PropertyEntry loadPropertyEntry(PropertyId childId) throws 
RepositoryException {
        try {
            PropertyState state = 
factory.getItemStateFactory().createDeepPropertyState(childId, this);
            return (PropertyEntry) state.getHierarchyEntry();
        } catch (ItemNotFoundException e) {
            return null;
        } catch (PathNotFoundException e) { <-- new
            return null; <-- new
        }
    }

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

Reply via email to