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
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
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;
+ }
}
@Override
public boolean hasProperty(String relPath) throws RepositoryException {
- final String oakPath = getOakPathOrThrow(relPath);
- return perform(new NodeOperation<Boolean>(dlg) {
- @Override
- public Boolean perform() throws RepositoryException {
- return node.getPropertyOrNull(oakPath) != null;
- }
- });
+ try {
+ final String oakPath = getOakPathOrThrow(relPath);
+ return perform(new NodeOperation<Boolean>(dlg) {
+ @Override
+ public Boolean perform() throws RepositoryException {
+ return node.getPropertyOrNull(oakPath) != null;
+ }
+ });
+ } catch (PathNotFoundException e) {
+ return false;
+ }
}
@Override
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java?rev=1545647&r1=1545646&r2=1545647&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
Tue Nov 26 13:17:34 2013
@@ -307,8 +307,12 @@ public class RepositoryTest extends Abst
}
assertTrue(getAdminSession().nodeExists("/foo[1]/bar[1]"));
+ assertTrue(node.hasNode("bar[1]"));
+ assertTrue(node.hasProperty("bar[1]/jcr:primaryType"));
assertTrue(getAdminSession().propertyExists("/foo[1]/bar[1]/jcr:primaryType"));
assertFalse(getAdminSession().nodeExists("/foo[1]/bar[2]"));
+ assertFalse(node.hasNode("bar[2]"));
+ assertFalse(node.hasProperty("bar[2]/jcr:primaryType"));
assertFalse(getAdminSession().propertyExists("/foo[1]/bar[2]/jcr:primaryType"));
}