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/01/30 21:59:51 UTC

svn commit: r1562958 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/core/ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/ oak-core/src/main/java/org...

Author: jukka
Date: Thu Jan 30 20:59:50 2014
New Revision: 1562958

URL: http://svn.apache.org/r1562958
Log:
OAK-924: Optimize namespace lookups

Avoid the need to resolve /jcr:system/rep:namespaces{/rep:nsdata}
every time a prefix mapping is looked up

Removed:
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/TestGlobalNameMapper.java
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/LocalNameMapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/BuiltInNodeTypes.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/TestNameMapper.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapperTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java Thu Jan 30 20:59:50 2014
@@ -334,7 +334,8 @@ public abstract class AbstractRoot imple
                     provider = new UUIDDiffIndexProviderWrapper(
                             provider, getBaseState(), getRootState());
                 }
-                return new ExecutionContext(getBaseState(), rootTree, provider);
+                return new ExecutionContext(
+                        getBaseState(), AbstractRoot.this, provider);
             }
         };
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java Thu Jan 30 20:59:50 2014
@@ -112,7 +112,9 @@ public final class ImmutableRoot impleme
         return new QueryEngineImpl() {
             @Override
             protected ExecutionContext getExecutionContext() {
-                return new ExecutionContext(rootTree.getNodeState(), rootTree, new PropertyIndexProvider());
+                return new ExecutionContext(
+                        rootTree.getNodeState(), ImmutableRoot.this,
+                        new PropertyIndexProvider());
             }
         };
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapper.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapper.java Thu Jan 30 20:59:50 2014
@@ -18,16 +18,29 @@ package org.apache.jackrabbit.oak.namepa
 
 import java.util.Collections;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import javax.jcr.RepositoryException;
 
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.core.ImmutableTree;
+import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
+import org.apache.jackrabbit.oak.plugins.name.Namespaces;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.plugins.name.Namespaces.getNamespacePrefix;
+import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
+import static org.apache.jackrabbit.oak.api.Type.NAME;
+import static org.apache.jackrabbit.oak.api.Type.STRING;
+import static org.apache.jackrabbit.oak.plugins.name.NamespaceConstants.NAMESPACES_PATH;
+import static org.apache.jackrabbit.oak.plugins.name.NamespaceConstants.REP_NSDATA;
+import static org.apache.jackrabbit.oak.plugins.name.Namespaces.encodeUri;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.NT_REP_UNSTRUCTURED;
 
 /**
  * Name mapper with no local prefix remappings. URI to prefix mappings
@@ -57,10 +70,32 @@ public class GlobalNameMapper implements
         }
     }
 
-    protected final Tree tree;
+    private static Tree setupNamespaces(Map<String, String> global) {
+        NodeBuilder namespaces = EmptyNodeState.EMPTY_NODE.builder();
+        namespaces.setProperty(JCR_PRIMARYTYPE, NT_REP_UNSTRUCTURED, NAME);
+        for (Entry<String, String> entry : global.entrySet()) {
+            namespaces.setProperty(
+                    Namespaces.escapePropertyKey(entry.getKey()),
+                    entry.getValue());
+        }
+        Namespaces.buildIndexNode(namespaces);
+        return new ImmutableTree(namespaces.getNodeState());
+    }
+
+    protected final Tree namespaces;
+    private final Tree nsdata;
+
+    public GlobalNameMapper(Root root) {
+        this(root.getTree(NAMESPACES_PATH));
+    }
+
+    public GlobalNameMapper(Map<String, String> namespaces) {
+        this(setupNamespaces(namespaces));
+    }
 
-    public GlobalNameMapper(Tree tree) {
-        this.tree = tree;
+    private GlobalNameMapper(Tree namespaces) {
+        this.namespaces = namespaces;
+        this.nsdata = namespaces.getChild(REP_NSDATA);
     }
 
     @Override @Nonnull
@@ -122,7 +157,11 @@ public class GlobalNameMapper implements
 
     @CheckForNull
     protected String getOakPrefixOrNull(String uri) {
-        return getNamespacePrefix(tree, uri);
+        PropertyState mapping = nsdata.getProperty(encodeUri(uri));
+        if (mapping != null && mapping.getType() == STRING) {
+            return mapping.getValue(STRING);
+        }
+        return null;
     }
 
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/LocalNameMapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/LocalNameMapper.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/LocalNameMapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/LocalNameMapper.java Thu Jan 30 20:59:50 2014
@@ -18,23 +18,32 @@ package org.apache.jackrabbit.oak.namepa
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.plugins.name.Namespaces.getNamespaceURI;
+import static org.apache.jackrabbit.oak.api.Type.STRING;
 
 import java.util.Map;
 
 import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
 
-import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Root;
 
 /**
  * Name mapper with local namespace mappings.
  */
 public abstract class LocalNameMapper extends GlobalNameMapper {
 
-    public LocalNameMapper(Tree tree) {
-        super(tree);
+    public LocalNameMapper(Root root) {
+        super(root);
     }
 
+    public LocalNameMapper(Map<String, String> namespaces) {
+        super(namespaces);
+    }
+
+    @Override @Nonnull
+    public abstract Map<String, String> getSessionLocalMappings();
+
     @Override @CheckForNull
     public String getJcrName(String oakName) {
         checkNotNull(oakName);
@@ -46,11 +55,12 @@ public abstract class LocalNameMapper ex
             int colon = oakName.indexOf(':');
             if (colon > 0) {
                 String oakPrefix = oakName.substring(0, colon);
-                String uri = getNamespaceURI(tree, oakPrefix);
-                if (uri == null) {
+                PropertyState mapping = namespaces.getProperty(oakPrefix);
+                if (mapping == null || mapping.getType() != STRING) {
                     throw new IllegalStateException(
                             "No namespace mapping found for " + oakName);
                 }
+                String uri = mapping.getValue(STRING);
 
                 for (Map.Entry<String, String> entry : local.entrySet()) {
                     if (uri.equals(entry.getValue())) {
@@ -95,18 +105,20 @@ public abstract class LocalNameMapper ex
                 String uri = local.get(jcrPrefix);
                 if (uri != null) {
                     String oakPrefix = getOakPrefixOrNull(uri);
-                    if (jcrPrefix.equals(oakPrefix)) {
+                    if (oakPrefix == null) {
+                        return null;
+                    } else if (jcrPrefix.equals(oakPrefix)) {
                         return jcrName;
-                    } else if (oakPrefix != null) {
-                        return oakPrefix + jcrName.substring(colon);
                     } else {
-                        return null;
+                        return oakPrefix + jcrName.substring(colon);
                     }
                 }
 
                 // Check that a global mapping is present and not remapped
-                uri = getNamespaceURI(tree, jcrPrefix);
-                if (uri == null || local.values().contains(uri)) {
+                PropertyState mapping = namespaces.getProperty(jcrPrefix);
+                if (mapping != null
+                        && mapping.getType() == STRING
+                        && local.values().contains(mapping.getValue(STRING))) {
                     return null;
                 }
             }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java Thu Jan 30 20:59:50 2014
@@ -24,11 +24,10 @@ import java.util.Map.Entry;
 import java.util.Set;
 
 import com.google.common.collect.Sets;
+
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.core.ImmutableTree;
-import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
 import org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.util.Text;
@@ -197,7 +196,7 @@ public class Namespaces implements Names
      * @param key property key
      * @return escaped property key
      */
-    static String escapePropertyKey(String key) {
+    public static String escapePropertyKey(String key) {
         if (key.equals("")) {
             return REP_EMPTY;
         } else {
@@ -226,7 +225,7 @@ public class Namespaces implements Names
      * @param uri
      * @return encoded uri
      */
-    static String encodeUri(String uri) {
+    public static String encodeUri(String uri) {
         return Text.escapeIllegalJcrChars(uri);
     }
 
@@ -261,18 +260,4 @@ public class Namespaces implements Names
         return true;
     }
 
-    // testing
-
-    public static Tree setupTestNamespaces(Map<String, String> global) {
-        NodeBuilder root = EmptyNodeState.EMPTY_NODE.builder();
-        NodeBuilder namespaces = root.child(JCR_SYSTEM).child(REP_NAMESPACES);
-        namespaces.setProperty(JCR_PRIMARYTYPE, NodeTypeConstants.NT_REP_UNSTRUCTURED, NAME);
-        for (Entry<String, String> entry : global.entrySet()) {
-            namespaces.setProperty(escapePropertyKey(entry.getKey()),
-                    entry.getValue());
-        }
-        buildIndexNode(namespaces);
-        return new ImmutableTree(root.getNodeState());
-    }
-
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/BuiltInNodeTypes.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/BuiltInNodeTypes.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/BuiltInNodeTypes.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/BuiltInNodeTypes.java Thu Jan 30 20:59:50 2014
@@ -76,8 +76,8 @@ class BuiltInNodeTypes {
             }
         };
 
-        this.vf = new ValueFactoryImpl(root, new NamePathMapperImpl(
-                new GlobalNameMapper(root.getTree("/"))));
+        this.vf = new ValueFactoryImpl(
+                root, new NamePathMapperImpl(new GlobalNameMapper(root)));
     }
 
     /**

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java Thu Jan 30 20:59:50 2014
@@ -21,7 +21,7 @@ package org.apache.jackrabbit.oak.query;
 
 import javax.annotation.Nonnull;
 
-import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
@@ -37,15 +37,15 @@ public class ExecutionContext {
      */
     private final NodeState baseState;
 
-    private final Tree rootTree;
+    private final Root root;
 
     private final QueryIndexProvider indexProvider;
 
     public ExecutionContext(
-            NodeState baseState, Tree rootTree,
+            NodeState baseState, Root root,
             QueryIndexProvider indexProvider) {
         this.baseState = baseState;
-        this.rootTree = rootTree;
+        this.root = root;
         this.indexProvider = indexProvider;
     }
 
@@ -61,15 +61,14 @@ public class ExecutionContext {
     }
 
     /**
-     * 
      * Used to create the actual query results from the indexed paths, needs to
      * be a secured version of a tree to take into account ACLs
      * 
-     * @return Root tree of the content tree against which the query runs.
+     * @return root of the content tree against which the query runs.
      */
     @Nonnull
-    public Tree getRootTree() {
-        return rootTree;
+    public Root getRoot() {
+        return root;
     }
 
     /**

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java Thu Jan 30 20:59:50 2014
@@ -97,7 +97,7 @@ public abstract class QueryEngineImpl im
         LOG.debug("Parsing {} statement: {}", language, statement);
 
         NamePathMapper mapper = new NamePathMapperImpl(
-                new LocalNameMapper(context.getRootTree()) {
+                new LocalNameMapper(context.getRoot()) {
                     @Override
                     public Map<String, String> getSessionLocalMappings() {
                         return mappings;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java Thu Jan 30 20:59:50 2014
@@ -22,7 +22,6 @@ import java.util.List;
 
 import org.apache.jackrabbit.oak.api.PropertyValue;
 import org.apache.jackrabbit.oak.api.Tree;
-import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.namepath.JcrPathParser;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.query.ast.AndImpl;
@@ -61,7 +60,6 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.apache.jackrabbit.oak.util.TreeUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -641,7 +639,7 @@ public class QueryImpl implements Query 
 
     @Override
     public Tree getTree(String path) {
-        return TreeUtil.getTree(context.getRootTree(), PathUtils.isAbsolute(path) ? path.substring(1) : path);
+        return context.getRoot().getTree(path);
     }
 
     /**

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java Thu Jan 30 20:59:50 2014
@@ -46,6 +46,7 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexProvider;
 import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceIndexProvider;
+import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider;
 import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
 import org.apache.jackrabbit.oak.plugins.value.ValueFactoryImpl;
@@ -80,6 +81,7 @@ public abstract class AbstractSecurityTe
     public void before() throws Exception {
         Oak oak = new Oak()
                 .with(new InitialContent())
+                .with(new NamespaceEditorProvider())
                 .with(new ReferenceEditorProvider())
                 .with(new ReferenceIndexProvider())
                 .with(new PropertyIndexEditorProvider())

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/TestNameMapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/TestNameMapper.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/TestNameMapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/TestNameMapper.java Thu Jan 30 20:59:50 2014
@@ -21,9 +21,7 @@ package org.apache.jackrabbit.oak;
 import java.util.Collections;
 import java.util.Map;
 
-import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.namepath.LocalNameMapper;
-import org.apache.jackrabbit.oak.plugins.name.Namespaces;
 
 /**
  * TestNameMapper... TODO
@@ -42,20 +40,8 @@ public final class TestNameMapper extend
         this(Collections.singletonMap(TEST_PREFIX, TEST_URI), LOCAL_MAPPING);
     }
 
-    public TestNameMapper(Map<String, String> global) {
-        this(global, global);
-    }
-
     public TestNameMapper(Map<String, String> global, Map<String, String> local) {
-        this(Namespaces.setupTestNamespaces(global), local);
-    }
-
-    public TestNameMapper(TestNameMapper base, Map<String, String> local) {
-        this(base.tree, local);
-    }
-
-    public TestNameMapper(Tree tree, Map<String, String> local) {
-        super(tree);
+        super(global);
         this.local = local;
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapperTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapperTest.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapperTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapperTest.java Thu Jan 30 20:59:50 2014
@@ -27,7 +27,6 @@ import java.util.Map;
 
 import javax.jcr.RepositoryException;
 
-import org.apache.jackrabbit.oak.TestGlobalNameMapper;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableMap;
@@ -41,7 +40,7 @@ public class GlobalNameMapperTest {
             "foo", "http://www.example.com/foo",
             "quu", "http://www.example.com/quu");
 
-    private NameMapper mapper = new TestGlobalNameMapper(NAMESPACES);
+    private NameMapper mapper = new GlobalNameMapper(NAMESPACES);
 
     @Test
     public void testEmptyName() throws RepositoryException {

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=1562958&r1=1562957&r2=1562958&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 Thu Jan 30 20:59:50 2014
@@ -29,7 +29,7 @@ import java.util.Map;
 import javax.jcr.RepositoryException;
 
 import com.google.common.collect.ImmutableMap;
-import org.apache.jackrabbit.oak.TestGlobalNameMapper;
+
 import org.apache.jackrabbit.oak.TestNameMapper;
 import org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager;
 import org.junit.Test;
@@ -129,7 +129,7 @@ public class NamePathMapperImplTest {
 
     @Test
     public void testJcrToOakKeepIndexNoRemap() {
-        NameMapper mapper = new TestGlobalNameMapper(GLOBAL);
+        NameMapper mapper = new GlobalNameMapper(GLOBAL);
         NamePathMapper npMapper = new NamePathMapperImpl(mapper);
 
         assertEquals("/", npMapper.getOakPathKeepIndex("/"));

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImplTest.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImplTest.java Thu Jan 30 20:59:50 2014
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.jcr.AccessDeniedException;
@@ -46,6 +47,7 @@ import javax.jcr.security.Privilege;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
+
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlManager;
@@ -56,10 +58,11 @@ import org.apache.jackrabbit.oak.TestNam
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.namepath.GlobalNameMapper;
+import org.apache.jackrabbit.oak.namepath.LocalNameMapper;
 import org.apache.jackrabbit.oak.namepath.NameMapper;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.namepath.NamePathMapperImpl;
-import org.apache.jackrabbit.oak.plugins.name.Namespaces;
 import org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants;
 import org.apache.jackrabbit.oak.plugins.value.ValueFactoryImpl;
 import org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.ACE;
@@ -98,7 +101,7 @@ public class AccessControlManagerImplTes
     private Privilege[] testPrivileges;
     private Root testRoot;
 
-    private TestNameMapper nameMapper;
+    private NameMapper nameMapper;
     private NamePathMapper npMapper;
 
     private AccessControlManagerImpl acMgr;
@@ -110,7 +113,7 @@ public class AccessControlManagerImplTes
         super.before();
 
         registerNamespace(TestNameMapper.TEST_PREFIX, TestNameMapper.TEST_URI);
-        nameMapper = new TestNameMapper(Namespaces.getNamespaceMap(root.getTree("/")));
+        nameMapper = new GlobalNameMapper(root);
         npMapper = new NamePathMapperImpl(nameMapper);
 
         acMgr = getAccessControlManager(npMapper);
@@ -160,11 +163,6 @@ public class AccessControlManagerImplTes
         return new AccessControlManagerImpl(getTestRoot(), getNamePathMapper(), getSecurityProvider());
     }
 
-    private NamePathMapper getLocalNamePathMapper() {
-        NameMapper remapped = new TestNameMapper(nameMapper, TestNameMapper.LOCAL_MAPPING);
-        return new NamePathMapperImpl(remapped);
-    }
-
     private ACL getApplicablePolicy(@Nullable String path) throws RepositoryException {
         AccessControlPolicyIterator itr = acMgr.getApplicablePolicies(path);
         if (itr.hasNext()) {
@@ -323,7 +321,15 @@ public class AccessControlManagerImplTes
         testPaths.add('/' + TestNameMapper.TEST_LOCAL_PREFIX + ":testRoot");
         testPaths.add("/{" + TestNameMapper.TEST_URI + "}testRoot");
 
-        AccessControlManager acMgr = getAccessControlManager(getLocalNamePathMapper());
+        NameMapper remapped = new LocalNameMapper(root) {
+            @Override
+            public Map<String, String> getSessionLocalMappings() {
+                return TestNameMapper.LOCAL_MAPPING;
+            }
+        };
+
+        AccessControlManager acMgr =
+                getAccessControlManager(new NamePathMapperImpl(remapped));
         for (String path : testPaths) {
             Privilege[] supported = acMgr.getSupportedPrivileges(path);
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java Thu Jan 30 20:59:50 2014
@@ -24,14 +24,15 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.security.Privilege;
 
-import org.apache.jackrabbit.oak.TestGlobalNameMapper;
 import org.apache.jackrabbit.oak.TestNameMapper;
+import org.apache.jackrabbit.oak.namepath.GlobalNameMapper;
 import org.apache.jackrabbit.oak.namepath.NameMapper;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.namepath.NamePathMapperImpl;
@@ -108,7 +109,8 @@ public abstract class AbstractAccessCont
 
     @Test
     public void testGetPath() {
-        NameMapper nameMapper = new TestGlobalNameMapper(Collections.singletonMap("jr", "http://jackrabbit.apache.org"));
+        NameMapper nameMapper = new GlobalNameMapper(
+                Collections.singletonMap("jr", "http://jackrabbit.apache.org"));
         NamePathMapper npMapper = new NamePathMapperImpl(nameMapper);
 
         // map of jcr-path to standard jcr-path

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java Thu Jan 30 20:59:50 2014
@@ -119,10 +119,10 @@ public class SessionContext implements N
         sessionStats.setAttributes(attributes);
 
         this.namespaces = new SessionNamespaces(this);
-        LocalNameMapper nameMapper = new LocalNameMapper(delegate.getRoot().getTree("/")) {
+        LocalNameMapper nameMapper = new LocalNameMapper(delegate.getRoot()) {
             @Override
             public Map<String, String> getSessionLocalMappings() {
-                return namespaces.getSessionLocalMappings();
+                return SessionContext.this.namespaces.getSessionLocalMappings();
             }
         };
         this.namePathMapper = new NamePathMapperImpl(

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java?rev=1562958&r1=1562957&r2=1562958&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java Thu Jan 30 20:59:50 2014
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.oak.jcr.xml;
 
+import static org.apache.jackrabbit.oak.plugins.name.NamespaceConstants.NAMESPACES_PATH;
+
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -25,6 +27,7 @@ import java.util.Set;
 
 import javax.jcr.RepositoryException;
 
+import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.jcr.session.SessionContext;
 import org.apache.jackrabbit.oak.namepath.LocalNameMapper;
@@ -108,7 +111,8 @@ public abstract class TargetImportHandle
     //--------------------------------------------------------
 
     public NamePathMapper currentNamePathMapper() {
-        return new NamePathMapperImpl(new LocalNameMapper(getNSReadTree()) {
+        Root root = sessionContext.getSessionDelegate().getRoot();
+        return new NamePathMapperImpl(new LocalNameMapper(root) {
             @Override
             public Map<String, String> getSessionLocalMappings() {
                 return documentPrefixMap;
@@ -116,10 +120,6 @@ public abstract class TargetImportHandle
         });
     }
 
-    private Tree getNSReadTree() {
-        return sessionContext.getSessionDelegate().getRoot().getTree("/");
-    }
-
     private Map<String, String> createCurrentPrefixMap() {
         Map<String, String> result = new HashMap<String, String>();
         Set<Map.Entry<String, Collection<String>>> entries = documentContext.asMap().entrySet();
@@ -166,12 +166,13 @@ public abstract class TargetImportHandle
                 repoPrefix = null;
             } else {
                 List<String> uris = documentContext.get(docPrefix);
+                Tree tree = sessionContext.getSessionDelegate().getRoot().getTree("/");
                 if (uris.isEmpty()) {
-                    namespaceUri = Namespaces.getNamespaceURI(getNSReadTree(), docPrefix);
+                    namespaceUri = Namespaces.getNamespaceURI(tree, docPrefix);
                     repoPrefix = docPrefix;
                 } else {
                     namespaceUri = uris.get(uris.size() - 1);
-                    repoPrefix = Namespaces.getNamespacePrefix(getNSReadTree(), namespaceUri);
+                    repoPrefix = Namespaces.getNamespacePrefix(tree, namespaceUri);
                 }
             }
         }