You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2008/05/16 14:41:55 UTC

svn commit: r657037 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core: SessionImpl.java WorkspaceImpl.java nodetype/NodeTypeManagerImpl.java xml/ImportHandler.java

Author: jukka
Date: Fri May 16 05:41:55 2008
New Revision: 657037

URL: http://svn.apache.org/viewvc?rev=657037&view=rev
Log:
JCR-1607: Add a NamespaceHelper in jcr-commons
    - Use NamespaceHelper in core

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ImportHandler.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java?rev=657037&r1=657036&r2=657037&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java Fri May 16 05:41:55 2008
@@ -279,7 +279,7 @@
         userId = uid;
 
         namePathResolver = new DefaultNamePathResolver(this, true);
-        ntMgr = new NodeTypeManagerImpl(rep.getNodeTypeRegistry(), rep.getNamespaceRegistry(), this, this, rep.getDataStore());
+        ntMgr = new NodeTypeManagerImpl(rep.getNodeTypeRegistry(), this, rep.getDataStore());
         String wspName = wspConfig.getName();
         wsp = createWorkspaceInstance(wspConfig,
                 rep.getWorkspaceStateManager(wspName), rep, this);
@@ -924,7 +924,7 @@
         parent.checkLock();
 
         SessionImporter importer = new SessionImporter(parent, this, uuidBehavior);
-        return new ImportHandler(importer, this, rep.getNamespaceRegistry());
+        return new ImportHandler(importer, this);
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java?rev=657037&r1=657036&r2=657037&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java Fri May 16 05:41:55 2008
@@ -751,7 +751,7 @@
 
         Importer importer = new WorkspaceImporter(parentPath, this,
                 rep.getNodeTypeRegistry(), uuidBehavior);
-        return new ImportHandler(importer, session, rep.getNamespaceRegistry());
+        return new ImportHandler(importer, session);
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java?rev=657037&r1=657036&r2=657037&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java Fri May 16 05:41:55 2008
@@ -19,10 +19,10 @@
 import org.apache.commons.collections.map.ReferenceMap;
 import org.apache.jackrabbit.api.JackrabbitNodeTypeManager;
 import org.apache.jackrabbit.api.jsr283.nodetype.InvalidNodeTypeDefinitionException;
+import org.apache.jackrabbit.commons.NamespaceHelper;
 import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter;
 import org.apache.jackrabbit.spi.commons.conversion.NameException;
-import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
-import org.apache.jackrabbit.core.NamespaceRegistryImpl;
+import org.apache.jackrabbit.core.SessionImpl;
 import org.apache.jackrabbit.core.data.DataStore;
 import org.apache.jackrabbit.core.nodetype.compact.CompactNodeTypeDefReader;
 import org.apache.jackrabbit.core.nodetype.compact.ParseException;
@@ -35,7 +35,6 @@
 import org.apache.jackrabbit.core.util.Dumpable;
 import org.apache.jackrabbit.core.value.InternalValue;
 import org.apache.jackrabbit.spi.commons.namespace.NamespaceMapping;
-import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
 import org.apache.jackrabbit.spi.Name;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -79,11 +78,9 @@
     private final NodeTypeRegistry ntReg;
 
     /**
-     * The persistent namespace registry where any new namespaces are
-     * automatically registered when new node type definition files are
-     * read.
+     * Current session.
      */
-    private final NamespaceRegistryImpl nsReg;
+    private final SessionImpl session;
 
     /**
      * The root node definition.
@@ -91,16 +88,6 @@
     private final NodeDefinitionImpl rootNodeDef;
 
     /**
-     * The namespace resolver
-     */
-    private final NamespaceResolver nsResolver;
-
-    /**
-     * The resolver used to translate qualified names to JCR names.
-     */
-    private final NamePathResolver resolver;
-
-    /**
      * A cache for <code>NodeType</code> instances created by this
      * <code>NodeTypeManager</code>
      */
@@ -124,16 +111,12 @@
      * Creates a new <code>NodeTypeManagerImpl</code> instance.
      *
      * @param ntReg      node type registry
-     * @param nsReg      namespace registry
-     * @param resolver
+     * @param session    current session
      */
     public NodeTypeManagerImpl(
-            NodeTypeRegistry ntReg, NamespaceRegistryImpl nsReg,
-            NamespaceResolver nsResolver, NamePathResolver resolver, DataStore store) {
-        this.nsResolver = nsResolver;
-        this.resolver = resolver;
+            NodeTypeRegistry ntReg, SessionImpl session, DataStore store) {
         this.ntReg = ntReg;
-        this.nsReg = nsReg;
+        this.session = session;
         this.ntReg.addListener(this);
         this.store = store;
 
@@ -143,8 +126,8 @@
         pdCache = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.SOFT);
         ndCache = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.SOFT);
 
-        rootNodeDef = new NodeDefinitionImpl(ntReg.getRootNodeDef(), this,
-                resolver);
+        rootNodeDef =
+            new NodeDefinitionImpl(ntReg.getRootNodeDef(), this, session);
         ndCache.put(rootNodeDef.unwrap().getId(), rootNodeDef);
     }
 
@@ -165,7 +148,7 @@
             if (ndi == null) {
                 NodeDef nd = ntReg.getNodeDef(id);
                 if (nd != null) {
-                    ndi = new NodeDefinitionImpl(nd, this, resolver);
+                    ndi = new NodeDefinitionImpl(nd, this, session);
                     ndCache.put(id, ndi);
                 }
             }
@@ -183,7 +166,7 @@
             if (pdi == null) {
                 PropDef pd = ntReg.getPropDef(id);
                 if (pd != null) {
-                    pdi = new PropertyDefinitionImpl(pd, this, resolver);
+                    pdi = new PropertyDefinitionImpl(pd, this, session);
                     pdCache.put(id, pdi);
                 }
             }
@@ -202,7 +185,7 @@
             if (nt == null) {
                 EffectiveNodeType ent = ntReg.getEffectiveNodeType(name);
                 NodeTypeDef def = ntReg.getNodeTypeDef(name);
-                nt = new NodeTypeImpl(ent, def, this, resolver, store);
+                nt = new NodeTypeImpl(ent, def, this, session, store);
                 ntCache.put(name, nt);
             }
             return nt;
@@ -261,7 +244,7 @@
                 }
             } else if (contentType.equalsIgnoreCase(TEXT_X_JCR_CND)) {
                 try {
-                    NamespaceMapping mapping = new NamespaceMapping(nsResolver);
+                    NamespaceMapping mapping = new NamespaceMapping(session);
                     CompactNodeTypeDefReader reader = new CompactNodeTypeDefReader(
                             new InputStreamReader(in), "cnd input stream", mapping);
 
@@ -276,12 +259,7 @@
                         "Unsupported content type: " + contentType);
             }
 
-            Iterator iterator = namespaceMap.entrySet().iterator();
-            while (iterator.hasNext()) {
-                Map.Entry entry = (Map.Entry) iterator.next();
-                nsReg.safeRegisterNamespace((String) entry.getKey(),
-                        (String) entry.getValue());
-            }
+            new NamespaceHelper(session).registerNamespaces(namespaceMap);
 
             if (reregisterExisting) {
                 // split the node types into new and already registered node types.
@@ -429,7 +407,7 @@
     public NodeType getNodeType(String nodeTypeName)
             throws NoSuchNodeTypeException {
         try {
-            return getNodeType(resolver.getQName(nodeTypeName));
+            return getNodeType(session.getQName(nodeTypeName));
         } catch (NameException e) {
             throw new NoSuchNodeTypeException(nodeTypeName, e);
         } catch (NamespaceException e) {
@@ -509,7 +487,7 @@
      */
     public boolean hasNodeType(String name) throws RepositoryException {
         try {
-            Name qname = resolver.getQName(name);
+            Name qname = session.getQName(name);
             return getNodeTypeRegistry().isRegistered(qname);
         } catch (NamespaceException e) {
             return false;
@@ -758,7 +736,7 @@
         HashSet ntNames = new HashSet();
         for (int i = 0; i < names.length; i++) {
             try {
-                ntNames.add(resolver.getQName(names[i]));
+                ntNames.add(session.getQName(names[i]));
             } catch (NamespaceException e) {
                 throw new RepositoryException("Invalid name: " + names[i], e);
             } catch (NameException e) {
@@ -788,7 +766,7 @@
             throw new InvalidNodeTypeDefinitionException("No node type name specified");
         }
         try {
-            def.setName(resolver.getQName(name));
+            def.setName(session.getQName(name));
         } catch (NamespaceException e) {
             throw new InvalidNodeTypeDefinitionException("Invalid name: " + name, e);
         } catch (NameException e) {
@@ -800,7 +778,7 @@
         Name[] qnames = new Name[names.length];
         for (int i = 0; i < names.length; i++) {
             try {
-                qnames[i] = resolver.getQName(names[i]);
+                qnames[i] = session.getQName(names[i]);
             } catch (NamespaceException e) {
                 throw new InvalidNodeTypeDefinitionException("Invalid supertype name: " + names[i], e);
             } catch (NameException e) {
@@ -813,7 +791,7 @@
         name = definition.getPrimaryItemName();
         if (name != null) {
             try {
-                def.setPrimaryItemName(resolver.getQName(name));
+                def.setPrimaryItemName(session.getQName(name));
             } catch (NamespaceException e) {
                 throw new InvalidNodeTypeDefinitionException("Invalid primary item name: " + name, e);
             } catch (NameException e) {
@@ -839,7 +817,7 @@
                         qndef.setName(ItemDef.ANY_NAME);
                     } else {
                         try {
-                            qndef.setName(resolver.getQName(name));
+                            qndef.setName(session.getQName(name));
                         } catch (NamespaceException e) {
                             throw new InvalidNodeTypeDefinitionException("Invalid node name: " + name, e);
                         } catch (NameException e) {
@@ -853,7 +831,7 @@
                 name = ((NodeDefinitionTemplateImpl) ndefs[i]).getDefaultPrimaryTypeName();
                 if (name != null) {
                     try {
-                        qndef.setDefaultPrimaryType(resolver.getQName(name));
+                        qndef.setDefaultPrimaryType(session.getQName(name));
                     } catch (NamespaceException e) {
                         throw new InvalidNodeTypeDefinitionException("Invalid default primary type: " + name, e);
                     } catch (NameException e) {
@@ -867,7 +845,7 @@
                 qnames = new Name[names.length];
                 for (int j = 0; i < names.length; j++) {
                     try {
-                        qnames[i] = resolver.getQName(names[i]);
+                        qnames[i] = session.getQName(names[i]);
                     } catch (NamespaceException e) {
                         throw new InvalidNodeTypeDefinitionException("Invalid required primary type: " + names[i], e);
                     } catch (NameException e) {
@@ -901,7 +879,7 @@
                         qpdef.setName(ItemDef.ANY_NAME);
                     } else {
                         try {
-                            qpdef.setName(resolver.getQName(name));
+                            qpdef.setName(session.getQName(name));
                         } catch (NamespaceException e) {
                             throw new InvalidNodeTypeDefinitionException("Invalid property name: " + name, e);
                         } catch (NameException e) {
@@ -923,7 +901,7 @@
                     ValueConstraint[] qconstraints = new ValueConstraint[constraints.length];
                     for (int j = 0; j < constraints.length; j++) {
                         try {
-                            qconstraints[j] = ValueConstraint.create(type, constraints[i], resolver);
+                            qconstraints[j] = ValueConstraint.create(type, constraints[i], session);
                         } catch (InvalidConstraintException e) {
                             throw new InvalidNodeTypeDefinitionException(
                                     "Invalid value constraint " + constraints[i], e);
@@ -937,7 +915,7 @@
                     InternalValue[] qvalues = new InternalValue[values.length];
                     for (int j = 0; j < values.length; j++) {
                         try {
-                            qvalues[j] = InternalValue.create(values[i], resolver);
+                            qvalues[j] = InternalValue.create(values[i], session);
                         } catch (ValueFormatException e) {
                             throw new InvalidNodeTypeDefinitionException(
                                     "Invalid default value format", e);

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ImportHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ImportHandler.java?rev=657037&r1=657036&r2=657037&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ImportHandler.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ImportHandler.java Fri May 16 05:41:55 2008
@@ -16,13 +16,12 @@
  */
 package org.apache.jackrabbit.core.xml;
 
-import java.util.HashMap;
 import java.util.Map;
 
 import javax.jcr.RepositoryException;
+import javax.jcr.Session;
 
-import org.apache.jackrabbit.core.NamespaceRegistryImpl;
-import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
+import org.apache.jackrabbit.commons.NamespaceHelper;
 import org.apache.jackrabbit.spi.Name;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -53,12 +52,12 @@
     private static Logger log = LoggerFactory.getLogger(ImportHandler.class);
 
     protected final Importer importer;
-    protected final NamespaceRegistryImpl nsReg;
-    protected final NamespaceResolver nsResolver;
+
+    private final NamespaceHelper helper;
 
     protected Locator locator;
 
-    private TargetImportHandler targetHandler;
+    private TargetImportHandler targetHandler = null;
 
     /**
      * The local namespace mappings reported by
@@ -68,11 +67,11 @@
      */
     private Map localNamespaceMappings;
 
-    public ImportHandler(Importer importer, NamespaceResolver nsResolver,
-                         NamespaceRegistryImpl nsReg) {
+    public ImportHandler(Importer importer, Session session)
+            throws RepositoryException {
         this.importer = importer;
-        this.nsResolver = nsResolver;
-        this.nsReg = nsReg;
+        this.helper = new NamespaceHelper(session);
+        this.localNamespaceMappings = helper.getNamespaces();
     }
 
     //---------------------------------------------------------< ErrorHandler >
@@ -108,30 +107,15 @@
     }
 
     //-------------------------------------------------------< ContentHandler >
-    /**
-     * {@inheritDoc}
-     */
-    public void startDocument() throws SAXException {
-        targetHandler = null;
-
-        try {
-            localNamespaceMappings = new HashMap();
-            String[] uris = nsReg.getURIs();
-            for (int i = 0; i < uris.length; i++) {
-                localNamespaceMappings.put(
-                        nsResolver.getPrefix(uris[i]), uris[i]);
-            }
-        } catch (RepositoryException re) {
-            throw new SAXException(re);
-        }
-    }
 
     /**
      * {@inheritDoc}
      */
     public void endDocument() throws SAXException {
         // delegate to target handler
-        targetHandler.endDocument();
+        if (targetHandler != null) {
+            targetHandler.endDocument();
+        }
     }
 
     /**
@@ -150,8 +134,7 @@
             throws SAXException {
         localNamespaceMappings.put(prefix, uri);
         try {
-            // Register the namespace unless already registered
-            nsReg.safeRegisterNamespace(prefix, uri);
+            helper.registerNamespace(prefix, uri);
         } catch (RepositoryException re) {
             throw new SAXException(re);
         }
@@ -160,16 +143,6 @@
     /**
      * {@inheritDoc}
      */
-    public void endPrefixMapping(String prefix) throws SAXException {
-        /**
-         * nothing to do here as namespace context has already been popped
-         * in endElement event
-         */
-    }
-
-    /**
-     * {@inheritDoc}
-     */
     public void startElement(String namespaceURI, String localName, String qName,
                              Attributes atts) throws SAXException {
         if (targetHandler == null) {
@@ -217,4 +190,5 @@
     public void setDocumentLocator(Locator locator) {
         this.locator = locator;
     }
+
 }