jackrabbit-oak-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dürig <mdue...@apache.org>
Subject Re: svn commit: r1545647 - in /jackrabbit/oak/trunk/oak-jcr/src: main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
Date Tue, 26 Nov 2013 13:54:26 GMT

On 26.11.13 2:17 , tripod@apache.org wrote:
> Author: tripod
> Date: Tue Nov 26 13:17:34 2013
> New Revision: 1545647
>
> URL:http://svn.apache.org/r1545647
> Log:
> OAK-1227 Node.hasNode("foo[2]") must not throw PathNotFoundException

[...]

> Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java
> URL:http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java?rev=1545647&r1=1545646&r2=1545647&view=diff
> ==============================================================================
> --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java
(original)
> +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java
Tue Nov 26 13:17:34 2013
> @@ -797,24 +797,32 @@ public class NodeImpl<T extends NodeDele
>
>       @Override
>       public boolean hasNode(String relPath) throws RepositoryException {
> -        final String oakPath = getOakPathOrThrow(relPath);
> -        return perform(new NodeOperation<Boolean>(dlg) {
> -            @Override
> -            public Boolean perform() throws RepositoryException {
> -                return node.getChild(oakPath) != null;
> -            }
> -        });
> +        try {
> +            final String oakPath = getOakPathOrThrow(relPath);
> +            return perform(new NodeOperation<Boolean>(dlg) {
> +                @Override
> +                public Boolean perform() throws RepositoryException {
> +                    return node.getChild(oakPath) != null;
> +                }
> +            });
> +        } catch (PathNotFoundException e) {
> +            return false;
> +        }
>       }

TBH I don't like this. We had long discussions on OAK-89 and related to 
avoid try catch flow control. So I think we should aim for a more 
general fix here. AFAICS the problems have already been introduce with 
http://svn.apache.org/r1545598. Throwing a PathNotFoundException in 
SessionContext#getOakPathOrThrow() stretches that method's contract and 
is clearly against its intent, which is mapping JCR path onto Oak path 
if possible. Not deciding whether such a path exists at all.

Another way to look at this is to take it as more evidence that we need 
better path handling aka OAK-1179.

Michael

Mime
View raw message