You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2013/08/27 11:54:46 UTC

svn commit: r1517773 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/ oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/ oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/

Author: mduerig
Date: Tue Aug 27 09:54:46 2013
New Revision: 1517773

URL: http://svn.apache.org/r1517773
Log:
OAK-978: Compatibility - AssertionError thrown for invalid paths
- Remove premature optimisation
- Add regression test
- Adapted test expectation

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java?rev=1517773&r1=1517772&r2=1517773&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java Tue Aug 27 09:54:46 2013
@@ -162,44 +162,7 @@ public class NamePathMapperImpl implemen
             return this.idManager.getPath(jcrPath.substring(1, length - 1));
         }
 
-        boolean hasClarkBrackets = false;
-        boolean hasIndexBrackets = false;
-        boolean hasColon = false;
-        boolean hasNameStartingWithDot = false;
-        boolean hasTrailingSlash = false;
-
-        char prev = 0;
-        for (int i = 0; i < length; i++) {
-            char c = jcrPath.charAt(i);
-
-            if (c == '{' || c == '}') {
-                hasClarkBrackets = true;
-            } else if (c == '[' || c == ']') {
-                hasIndexBrackets = true;
-            } else if (c == ':') {
-                hasColon = true;
-            } else if (c == '.' && (prev == 0 || prev == '/')) {
-                hasNameStartingWithDot = true;
-            } else if(c == '/' && i == (length - 1)){
-                hasTrailingSlash = true;
-            }
-
-            prev = c;
-        }
-
-        // try a shortcut
-        if (!hasNameStartingWithDot && !hasClarkBrackets && !hasIndexBrackets) {
-            if (!hasColon || !hasSessionLocalMappings()) {
-                if (hasTrailingSlash){
-                    return jcrPath.substring(0, length - 1);
-                } else {
-                    return jcrPath;
-                }
-            }
-        }
-
         final StringBuilder parseErrors = new StringBuilder();
-
         PathListener listener = new PathListener() {
             @Override
             public void error(String message) {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java?rev=1517773&r1=1517772&r2=1517773&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java Tue Aug 27 09:54:46 2013
@@ -16,6 +16,10 @@
  */
 package org.apache.jackrabbit.oak.namepath;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -27,10 +31,6 @@ import org.apache.jackrabbit.oak.core.Id
 import org.junit.Ignore;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
-
 public class NamePathMapperImplTest {
 
     private static final Map<String, String> GLOBAL = ImmutableMap.of(
@@ -148,10 +148,10 @@ public class NamePathMapperImplTest {
         };
         NamePathMapper npMapper = new NamePathMapperImpl(mapper);
 
-        checkIdentical(npMapper, "/");
-        checkIdentical(npMapper, "/foo:bar");
-        checkIdentical(npMapper, "/foo:bar/quu:qux");
-        checkIdentical(npMapper, "foo:bar");
+        assertEquals("/", npMapper.getOakPathKeepIndex("/"));
+        assertEquals("/foo:bar", npMapper.getOakPathKeepIndex("/foo:bar"));
+        assertEquals("/foo:bar/quu:qux", npMapper.getOakPathKeepIndex("/foo:bar/quu:qux"));
+        assertEquals("foo:bar", npMapper.getOakPathKeepIndex("foo:bar"));
     }
 
     @Test
@@ -214,16 +214,4 @@ public class NamePathMapperImplTest {
         assertFalse(JcrPathParser.validate("/foo/../.."));
     }
 
-    private void checkIdentical(NamePathMapper npMapper, String jcrPath) {
-        String oakPath = npMapper.getOakPathKeepIndex(jcrPath);
-        checkIdentical(jcrPath, oakPath);
-    }
-
-    private static void checkIdentical(String expected, String actual) {
-        assertEquals(expected, actual);
-        if (expected != actual) {
-            fail("Expected the strings to be the same");
-        }
-    }
-
 }

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=1517773&r1=1517772&r2=1517773&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 Aug 27 09:54:46 2013
@@ -274,6 +274,12 @@ public class RepositoryTest extends Abst
         root.getNode("/foo");
     }
 
+    @Test(expected = RepositoryException.class)
+    public void testExceptionThrownForInvalidPath() throws RepositoryException {
+        Session session = getAdminSession();
+        session.itemExists("//jcr:content");
+    }
+
     @Test
     public void getNodeByIdentifier() throws RepositoryException {
         Node node = getNode("/foo");