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.