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 ju...@apache.org on 2014/02/12 11:32:00 UTC

svn commit: r1567588 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java

Author: jukka
Date: Wed Feb 12 10:32:00 2014
New Revision: 1567588

URL: http://svn.apache.org/r1567588
Log:
OAK-1417: Processing pending observation events does not scale linearly with the number of events

Shortcut NamePathMapperImpl.getJcrPath() for the common case where
there are no local namespace remappings. This removes the O(log n)
cost of each Event.getPath() call, and helps drop the observed performance
closer to O(n) than O(n log n)

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.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=1567588&r1=1567587&r2=1567588&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 Wed Feb 12 10:32:00 2014
@@ -92,6 +92,12 @@ public class NamePathMapperImpl implemen
         if ("/".equals(oakPath)) {
             // avoid the need to special case the root path later on
             return "/";
+        } else if (oakPath.isEmpty()) {
+            // empty path: map to "."
+            return ".";
+        } else if (getSessionLocalMappings().isEmpty()) {
+            // no local namespace mappings
+            return oakPath;
         }
 
         PathListener listener = new PathListener() {
@@ -120,11 +126,6 @@ public class NamePathMapperImpl implemen
 
         JcrPathParser.parse(oakPath, listener);
 
-        // empty path: map to "."
-        if (listener.elements.isEmpty()) {
-            return ".";
-        }
-
         StringBuilder jcrPath = new StringBuilder();
         for (String element : listener.elements) {
             if (element.isEmpty()) {