[
https://issues.apache.org/jira/browse/JCR-1212?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12542409
]
David Nuescheler commented on JCR-1212:
---------------------------------------
I would take the following position on this.
I think that JCR2SPI and SPI2JCR should be as tolerant as possible with
different "JCR compliant" implementations.
"JCR compliant" being the keyword ;)
I guess I would agree to make modifications in any SPI layer in case we find
out that we are not lenient enough
to allow compliant repositories. I would probably have the jeceira guys fix
their behavior in case they
clearly violate the JCR spec.
David, do you have an indication on what JCR method exactly you are talking
about, and if the jeceira behaviour
according to your reading of the JCR v1.0 spec is correct? Does that make sense?
> JCR2SPI Node.hasProperty(String) "optional property 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 PathNotFoundException 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.