Index: oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java
===================================================================
--- oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java	(revision 1531236)
+++ oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java	(working copy)
@@ -28,6 +28,9 @@
 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;
 
@@ -47,17 +50,7 @@
             "foo", "http://www.example.com/foo",
             "quu", "http://www.example.com/quu");
 
-    private final NameMapper mapper = new LocalNameMapper() {
-        @Override
-        protected Map<String, String> getNamespaceMap() {
-            return GLOBAL;
-        }
-
-        @Override
-        protected Map<String, String> getSessionLocalMappings() {
-            return LOCAL;
-        }
-    };
+    private final NameMapper mapper = new TestNameMapper(GLOBAL, LOCAL);
 
     private NamePathMapper npMapper = new NamePathMapperImpl(mapper);
 
@@ -136,12 +129,7 @@
 
     @Test
     public void testJcrToOakKeepIndexNoRemap() {
-        NameMapper mapper = new GlobalNameMapper() {
-            @Override
-            protected Map<String, String> getNamespaceMap() {
-                return GLOBAL;
-            }
-        };
+        NameMapper mapper = new TestGlobalNameMapper(GLOBAL);
         NamePathMapper npMapper = new NamePathMapperImpl(mapper);
 
         assertEquals("/", npMapper.getOakPathKeepIndex("/"));
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/LocalNameMapper.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/LocalNameMapper.java	(revision 1531236)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/LocalNameMapper.java	(working copy)
@@ -18,6 +18,7 @@
 
 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 java.util.Map;
 
@@ -47,7 +48,7 @@
             int colon = oakName.indexOf(':');
             if (colon > 0) {
                 String oakPrefix = oakName.substring(0, colon);
-                String uri = getNamespaceMap().get(oakPrefix);
+                String uri = getNamespaceURI(getReadTree(), oakPrefix);
                 if (uri == null) {
                     throw new IllegalStateException(
                             "No namespace mapping found for " + oakName);
@@ -107,7 +108,7 @@
                 }
 
                 // Check that a global mapping is present and not remapped
-                uri = getNamespaceMap().get(jcrPrefix);
+                uri = getNamespaceURI(getReadTree(), jcrPrefix);
                 if (uri == null || local.values().contains(uri)) {
                     return null;
                 }
Index: oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapperTest.java
===================================================================
--- oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapperTest.java	(revision 1531236)
+++ oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapperTest.java	(working copy)
@@ -16,18 +16,21 @@
  */
 package org.apache.jackrabbit.oak.namepath;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
 import javax.jcr.RepositoryException;
 
-import com.google.common.collect.ImmutableMap;
+import org.apache.jackrabbit.oak.TestGlobalNameMapper;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
+import com.google.common.collect.ImmutableMap;
 
 public class GlobalNameMapperTest {
 
@@ -38,12 +41,7 @@
             "foo", "http://www.example.com/foo",
             "quu", "http://www.example.com/quu");
 
-    private NameMapper mapper = new GlobalNameMapper() {
-        @Override
-        protected Map<String, String> getNamespaceMap() {
-            return NAMESPACES;
-        }
-    };
+    private NameMapper mapper = new TestGlobalNameMapper(NAMESPACES);
 
     @Test
     public void testEmptyName() throws RepositoryException {
Index: oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java
===================================================================
--- oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java	(revision 1531236)
+++ oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java	(working copy)
@@ -30,18 +30,19 @@
 import javax.jcr.RepositoryException;
 import javax.jcr.security.Privilege;
 
-import com.google.common.collect.Lists;
+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;
-import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
-import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
 import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition;
 import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
 import org.junit.Test;
 
+import com.google.common.collect.Lists;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -107,12 +108,7 @@
 
     @Test
     public void testGetPath() {
-        NameMapper nameMapper = new GlobalNameMapper() {
-            @Override
-            protected Map<String, String> getNamespaceMap() {
-                return Collections.singletonMap("jr", "http://jackrabbit.apache.org");
-            }
-        };
+        NameMapper nameMapper = new TestGlobalNameMapper(Collections.singletonMap("jr", "http://jackrabbit.apache.org"));
         NamePathMapper npMapper = new NamePathMapperImpl(nameMapper);
 
         // map of jcr-path to standard jcr-path
Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java
===================================================================
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java	(revision 1531236)
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java	(working copy)
@@ -22,19 +22,22 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+
 import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
 
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ListMultimap;
-import org.apache.jackrabbit.commons.NamespaceHelper;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.jcr.session.SessionContext;
 import org.apache.jackrabbit.oak.namepath.LocalNameMapper;
 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.spi.xml.Importer;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
 
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ListMultimap;
+
 /**
  * {@code TargetImportHandler} serves as the base class for the concrete
  * classes {@code {@link DocViewImportHandler}} and
@@ -43,15 +46,13 @@
 public abstract class TargetImportHandler extends DefaultHandler {
 
     protected final Importer importer;
-    protected final ValueFactory valueFactory;
-    protected final NamespaceHelper helper;
+    protected final SessionContext sessionContext;
     private final ListMultimap<String, String> documentContext = ArrayListMultimap.create();
     private Map<String, String> documentPrefixMap = Collections.emptyMap();
 
-    protected TargetImportHandler(Importer importer, ValueFactory valueFactory, NamespaceHelper helper) {
+    protected TargetImportHandler(Importer importer, SessionContext sessionContext) {
         this.importer = importer;
-        this.valueFactory = valueFactory;
-        this.helper = helper;
+        this.sessionContext = sessionContext;
     }
 
     //--------------------------------------------------------< ImportHandler >
@@ -109,12 +110,8 @@
     public NamePathMapper currentNamePathMapper() {
         return new NamePathMapperImpl(new LocalNameMapper() {
             @Override
-            protected Map<String, String> getNamespaceMap() {
-                try {
-                    return helper.getNamespaces();
-                } catch (RepositoryException e) {
-                    return Collections.emptyMap();
-                }
+            protected Tree getReadTree() {
+                return getNSReadTree();
             }
 
             @Override
@@ -124,6 +121,10 @@
         });
     }
 
+    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();
@@ -171,11 +172,11 @@
             } else {
                 List<String> uris = documentContext.get(docPrefix);
                 if (uris.isEmpty()) {
-                    namespaceUri = helper.getURI(docPrefix);
+                    namespaceUri = Namespaces.getNamespaceURI(getNSReadTree(), docPrefix);
                     repoPrefix = docPrefix;
                 } else {
                     namespaceUri = uris.get(uris.size() - 1);
-                    repoPrefix = helper.getPrefix(namespaceUri);
+                    repoPrefix = Namespaces.getNamespacePrefix(getNSReadTree(), namespaceUri);
                 }
             }
         }
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/BuiltInNodeTypes.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/BuiltInNodeTypes.java	(revision 1531236)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/BuiltInNodeTypes.java	(working copy)
@@ -21,7 +21,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.util.Map;
 
 import javax.annotation.Nonnull;
 import javax.jcr.NamespaceRegistry;
@@ -29,17 +28,17 @@
 import javax.jcr.ValueFactory;
 import javax.jcr.nodetype.NodeTypeManager;
 
-import com.google.common.base.Charsets;
 import org.apache.jackrabbit.commons.cnd.CndImporter;
 import org.apache.jackrabbit.commons.cnd.ParseException;
 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.NamePathMapperImpl;
-import org.apache.jackrabbit.oak.plugins.name.Namespaces;
 import org.apache.jackrabbit.oak.plugins.name.ReadWriteNamespaceRegistry;
 import org.apache.jackrabbit.oak.plugins.value.ValueFactoryImpl;
 
+import com.google.common.base.Charsets;
+
 /**
  * {@code BuiltInNodeTypes} is a utility class that registers the built-in
  * node types required for a JCR repository running on Oak.
@@ -80,8 +79,8 @@
         this.vf = new ValueFactoryImpl(null, new NamePathMapperImpl(
                 new GlobalNameMapper() {
                     @Override
-                    protected Map<String, String> getNamespaceMap() {
-                        return Namespaces.getNamespaceMap(root.getTree("/"));
+                    protected Tree getReadTree() {
+                        return root.getTree("/");
                     }
                 }));
     }
Index: oak-core/src/test/java/org/apache/jackrabbit/oak/TestGlobalNameMapper.java
===================================================================
--- oak-core/src/test/java/org/apache/jackrabbit/oak/TestGlobalNameMapper.java	(revision 0)
+++ oak-core/src/test/java/org/apache/jackrabbit/oak/TestGlobalNameMapper.java	(revision 0)
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.oak;
+
+import java.util.Map;
+
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.namepath.GlobalNameMapper;
+import org.apache.jackrabbit.oak.plugins.name.Namespaces;
+
+/**
+ * TestGlobalNameMapper... TODO
+ */
+public final class TestGlobalNameMapper extends GlobalNameMapper {
+
+    private final Tree tree;
+
+    public TestGlobalNameMapper(Map<String, String> global) {
+        this(Namespaces.setupTestNamespaces(global));
+    }
+
+    public TestGlobalNameMapper(Tree tree) {
+        this.tree = tree;
+    }
+
+    @Override
+    protected Tree getReadTree() {
+        return tree;
+    }
+
+}
\ No newline at end of file
Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
===================================================================
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java	(revision 1531236)
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java	(working copy)
@@ -38,6 +38,7 @@
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.oak.api.ContentSession;
+import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.jcr.delegate.AccessControlManagerDelegator;
 import org.apache.jackrabbit.oak.jcr.delegate.JackrabbitAccessControlManagerDelegator;
 import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
@@ -51,7 +52,6 @@
 import org.apache.jackrabbit.oak.namepath.LocalNameMapper;
 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.ReadOnlyNodeTypeManager;
 import org.apache.jackrabbit.oak.plugins.observation.Observable;
 import org.apache.jackrabbit.oak.plugins.value.ValueFactoryImpl;
@@ -122,8 +122,8 @@
         this.namespaces = new SessionNamespaces(this);
         LocalNameMapper nameMapper = new LocalNameMapper() {
             @Override
-            protected Map<String, String> getNamespaceMap() {
-                return Namespaces.getNamespaceMap(delegate.getRoot().getTree("/"));
+            protected Tree getReadTree() {
+                return delegate.getRoot().getTree("/");
             }
 
             @Override
Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SysViewImportHandler.java
===================================================================
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SysViewImportHandler.java	(revision 1531236)
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SysViewImportHandler.java	(working copy)
@@ -16,18 +16,17 @@
  */
 package org.apache.jackrabbit.oak.jcr.xml;
 
-
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Stack;
+
 import javax.jcr.InvalidSerializedDataException;
 import javax.jcr.NamespaceRegistry;
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
 
-import org.apache.jackrabbit.commons.NamespaceHelper;
+import org.apache.jackrabbit.oak.jcr.session.SessionContext;
 import org.apache.jackrabbit.oak.plugins.name.NamespaceConstants;
 import org.apache.jackrabbit.oak.spi.xml.Importer;
 import org.apache.jackrabbit.oak.spi.xml.NodeInfo;
@@ -63,11 +62,10 @@
      * Constructs a new {@code SysViewImportHandler}.
      *
      * @param importer     the underlying importer
-     * @param valueFactory the value factory
-     * @param helper the namespace helper
+     * @param sessionContext the session context
      */
-    SysViewImportHandler(Importer importer, ValueFactory valueFactory, NamespaceHelper helper) {
-        super(importer, valueFactory, helper);
+    SysViewImportHandler(Importer importer, SessionContext sessionContext) {
+        super(importer, sessionContext);
     }
 
     private void processNode(ImportState state, boolean start, boolean end)
@@ -168,7 +166,7 @@
             }
         } else if (namespaceURI.equals(NamespaceConstants.NAMESPACE_SV) && "value".equals(localName)) {
             // sv:value element
-            currentPropValue = new BufferedStringValue(valueFactory, currentNamePathMapper());
+            currentPropValue = new BufferedStringValue(sessionContext.getValueFactory(), currentNamePathMapper());
             String xsiType = atts.getValue("xsi:type");
             currentPropValue.setBase64("xs:base64Binary".equals(xsiType));
         } else {
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapper.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapper.java	(revision 1531236)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/GlobalNameMapper.java	(working copy)
@@ -16,13 +16,15 @@
  */
 package org.apache.jackrabbit.oak.namepath;
 
-import java.util.Map;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import javax.jcr.RepositoryException;
 
+import org.apache.jackrabbit.oak.api.Tree;
+
 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;
 
 /**
  * Name mapper with no local prefix remappings. URI to prefix mappings
@@ -96,17 +98,11 @@
         return expandedName; // not an expanded name
     }
 
-    protected abstract Map<String, String> getNamespaceMap();
+    protected abstract Tree getReadTree();
 
     @CheckForNull
     protected String getOakPrefixOrNull(String uri) {
-        Map<String, String> namespaces = getNamespaceMap();
-        for (Map.Entry<String, String> entry : namespaces.entrySet()) {
-            if (uri.equals(entry.getValue())) {
-                return entry.getKey();
-            }
-        }
-        return null;
+        return getNamespacePrefix(getReadTree(), uri);
     }
 
 }
Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/DocViewImportHandler.java
===================================================================
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/DocViewImportHandler.java	(revision 1531236)
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/DocViewImportHandler.java	(working copy)
@@ -22,15 +22,14 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Stack;
+
 import javax.jcr.NamespaceRegistry;
 import javax.jcr.Node;
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
 import javax.jcr.nodetype.ConstraintViolationException;
 
-import com.google.common.collect.Lists;
-import org.apache.jackrabbit.commons.NamespaceHelper;
+import org.apache.jackrabbit.oak.jcr.session.SessionContext;
 import org.apache.jackrabbit.oak.namepath.JcrNameParser;
 import org.apache.jackrabbit.oak.plugins.name.NamespaceConstants;
 import org.apache.jackrabbit.oak.spi.xml.Importer;
@@ -43,6 +42,8 @@
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 
+import com.google.common.collect.Lists;
+
 /**
  * {@code DocViewImportHandler} processes Document View XML SAX events
  * and 'translates' them into {@code {@link Importer}} method calls.
@@ -64,11 +65,10 @@
      * Constructs a new {@code DocViewImportHandler}.
      *
      * @param importer     the importer
-     * @param valueFactory a value factory
-     * @param helper The namespace helper
+     * @param sessionContext the session context
      */
-    DocViewImportHandler(Importer importer, ValueFactory valueFactory, NamespaceHelper helper) {
-        super(importer, valueFactory, helper);
+    DocViewImportHandler(Importer importer, SessionContext sessionContext) {
+        super(importer, sessionContext);
     }
 
     /**
@@ -108,7 +108,7 @@
     private void appendCharacters(char[] ch, int start, int length)
             throws SAXException {
         if (textHandler == null) {
-            textHandler = new BufferedStringValue(valueFactory, currentNamePathMapper());
+            textHandler = new BufferedStringValue(sessionContext.getValueFactory(), currentNamePathMapper());
         }
         try {
             textHandler.append(ch, start, length);
@@ -158,11 +158,11 @@
                 }
 
                 NodeInfo node =
-                        new NodeInfo(helper.getJcrName(NamespaceRegistry.NAMESPACE_JCR, "xmltext"), null, null, null);
+                        new NodeInfo(getJcrName(NamespaceRegistry.NAMESPACE_JCR, "xmltext"), null, null, null);
                 TextValue[] values =
                         new TextValue[]{textHandler};
                 ArrayList<PropInfo> props = new ArrayList<PropInfo>();
-                props.add(new PropInfo(helper.getJcrName(NamespaceRegistry.NAMESPACE_JCR, "xmlcharacters"),
+                props.add(new PropInfo(getJcrName(NamespaceRegistry.NAMESPACE_JCR, "xmlcharacters"),
                         PropertyType.STRING, values));
                 // call Importer
                 importer.startNode(node, props);
@@ -181,6 +181,11 @@
         }
     }
 
+    private String getJcrName(String uri, String name)
+            throws RepositoryException {
+        return sessionContext.getSession().getNamespacePrefix(uri) + ":" + name;
+    }
+
     /**
      * Processes the given {@code name}, i.e. decodes it and checks
      * the format of the decoded name.
@@ -250,7 +255,7 @@
                 // see also DocViewSAXEventGenerator#leavingProperties(Node, int)
                 // TODO proper multi-value serialization support
                 propValues = new TextValue[1];
-                propValues[0] = new StringValue(attrValue, valueFactory, currentNamePathMapper());
+                propValues[0] = new StringValue(attrValue, sessionContext.getValueFactory(), currentNamePathMapper());
 
                 if (NamespaceRegistry.NAMESPACE_JCR.equals(propNameInfo.getNamespaceUri())
                         && "primaryType".equals(propNameInfo.getLocalName())) {
Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java
===================================================================
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java	(revision 1531236)
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java	(working copy)
@@ -18,14 +18,14 @@
 
 import java.util.HashMap;
 import java.util.Map;
+
 import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
 
 import org.apache.jackrabbit.commons.NamespaceHelper;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.jcr.session.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
+import org.apache.jackrabbit.oak.jcr.session.SessionContext;
 import org.apache.jackrabbit.oak.plugins.name.NamespaceConstants;
 import org.apache.jackrabbit.oak.spi.xml.Importer;
 import org.slf4j.Logger;
@@ -61,7 +61,6 @@
 
     private final SessionContext sessionContext;
     private final Importer importer;
-    private final NamespaceHelper helper;
     private final boolean isWorkspaceImport;
 
     protected Locator locator;
@@ -76,7 +75,6 @@
         SessionDelegate sd = sessionContext.getSessionDelegate();
         initialRoot = sd.getContentSession().getLatestRoot();
         root = (isWorkspaceImport) ? sd.getContentSession().getLatestRoot() : sd.getRoot();
-        helper = new NamespaceHelper(sessionContext.getSession());
         importer = new ImporterImpl(absPath, sessionContext, root, initialRoot, uuidBehavior, isWorkspaceImport);
     }
 
@@ -143,7 +141,8 @@
     public void startPrefixMapping(String prefix, String uri)
             throws SAXException {
         try {
-            helper.registerNamespace(prefix, uri);
+            new NamespaceHelper(sessionContext.getSession()).registerNamespace(
+                    prefix, uri);
             if (targetHandler != null) {
                 targetHandler.startPrefixMapping(prefix, uri);
             } else {
@@ -169,11 +168,10 @@
         if (targetHandler == null) {
             // the namespace of the first element determines the type of XML
             // (system view/document view)
-            ValueFactory vf = sessionContext.getValueFactory();
             if (NamespaceConstants.NAMESPACE_SV.equals(namespaceURI)) {
-                targetHandler = new SysViewImportHandler(importer, vf, helper);
+                targetHandler = new SysViewImportHandler(importer, sessionContext);
             } else {
-                targetHandler = new DocViewImportHandler(importer, vf, helper);
+                targetHandler = new DocViewImportHandler(importer, sessionContext);
             }
 
             targetHandler.startDocument();
Index: oak-core/src/test/java/org/apache/jackrabbit/oak/TestNameMapper.java
===================================================================
--- oak-core/src/test/java/org/apache/jackrabbit/oak/TestNameMapper.java	(revision 1531236)
+++ oak-core/src/test/java/org/apache/jackrabbit/oak/TestNameMapper.java	(working copy)
@@ -21,7 +21,9 @@
 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
@@ -34,32 +36,34 @@
 
     public static final Map<String, String> LOCAL_MAPPING = Collections.singletonMap(TEST_LOCAL_PREFIX, TEST_URI);
 
-    private final Map<String, String> global;
+    private final Tree tree;
     private final Map<String, String> local;
 
     public TestNameMapper() {
-        this.global = Collections.singletonMap(TEST_PREFIX, TEST_URI);
-        this.local = LOCAL_MAPPING;
+        this(Collections.singletonMap(TEST_PREFIX, TEST_URI), LOCAL_MAPPING);
     }
 
-    public TestNameMapper(Map<String, String> global, Map<String, String> local) {
-        this.global = global;
-        this.local = local;
+    public TestNameMapper(Map<String, String> global) {
+        this(global, global);
     }
 
-    public TestNameMapper(Map<String, String> global) {
-        this.global = global;
-        this.local = 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.global = base.global;
+        this(base.tree, local);
+    }
+
+    public TestNameMapper(Tree tree, Map<String, String> local) {
+        this.tree = tree;
         this.local = local;
     }
 
+    
     @Override
-    protected Map<String, String> getNamespaceMap() {
-        return global;
+    protected Tree getReadTree() {
+        return tree;
     }
 
     @Override
