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);
}
}
}