[dna-commits] DNA SVN: r762 - trunk/dna-jcr/src/main/java/org/jboss/dna/jcr.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Fri Mar 6 12:03:00 EST 2009


Author: rhauch
Date: 2009-03-06 12:03:00 -0500 (Fri, 06 Mar 2009)
New Revision: 762

Modified:
   trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/DnaBuiltinNodeTypeSource.java
   trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/DnaLexicon.java
   trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrItemDefinition.java
   trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrLexicon.java
   trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrNodeTypeManager.java
Log:
DNA-294 Define a custom node type for the root node in a repository

Applied the patch.  Also changed the JcrNodeTypeManager.getRootNodeDefinition() method to return "dna:root" node type (rather than "nt:unstructured").

Modified: trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/DnaBuiltinNodeTypeSource.java
===================================================================
--- trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/DnaBuiltinNodeTypeSource.java	2009-03-06 16:51:55 UTC (rev 761)
+++ trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/DnaBuiltinNodeTypeSource.java	2009-03-06 17:03:00 UTC (rev 762)
@@ -29,6 +29,7 @@
 import java.util.List;
 import javax.jcr.PropertyType;
 import javax.jcr.nodetype.NodeType;
+import org.jboss.dna.graph.JcrMixLexicon;
 import net.jcip.annotations.Immutable;
 
 /**
@@ -57,17 +58,86 @@
             throw new IllegalStateException(JcrI18n.supertypeNotFound.text(baseTypeName, namespaceTypeName));
         }
 
+        JcrNodeType referenceable = findType(JcrMixLexicon.REFERENCEABLE);
+
+        if (referenceable == null) {
+            String baseTypeName = JcrMixLexicon.REFERENCEABLE.getString(session.getExecutionContext().getNamespaceRegistry());
+            String namespaceTypeName = DnaLexicon.SYSTEM.getString(session.getExecutionContext().getNamespaceRegistry());
+            throw new IllegalStateException(JcrI18n.supertypeNotFound.text(baseTypeName, namespaceTypeName));
+        }
+
         // Stubbing in child node and property definitions for now
-        JcrNodeType namespace = new JcrNodeType(session, DnaLexicon.NAMESPACE, Arrays.asList(new NodeType[] {base}),
-                                                DnaLexicon.URI, NO_CHILD_NODES, Arrays.asList(new JcrPropertyDefinition[] {
-                                                    new JcrPropertyDefinition(session, null, DnaLexicon.URI,
-                                                                              OnParentVersionBehavior.VERSION.getJcrValue(),
-                                                                              true, true, true, NO_DEFAULT_VALUES,
-                                                                              PropertyType.STRING, NO_CONSTRAINTS, false)}),
+        JcrNodeType namespace = new JcrNodeType(
+                                                session,
+                                                DnaLexicon.NAMESPACE,
+                                                Arrays.asList(new NodeType[] {base}),
+                                                DnaLexicon.URI,
+                                                NO_CHILD_NODES,
+                                                Arrays.asList(new JcrPropertyDefinition[] {new JcrPropertyDefinition(
+                                                                                                                     session,
+                                                                                                                     null,
+                                                                                                                     DnaLexicon.URI,
+                                                                                                                     OnParentVersionBehavior.VERSION.getJcrValue(),
+                                                                                                                     true,
+                                                                                                                     true,
+                                                                                                                     true,
+                                                                                                                     NO_DEFAULT_VALUES,
+                                                                                                                     PropertyType.STRING,
+                                                                                                                     NO_CONSTRAINTS,
+                                                                                                                     false)}),
                                                 NOT_MIXIN, UNORDERABLE_CHILD_NODES);
 
-        primaryNodeTypes.addAll(Arrays.asList(new JcrNodeType[] {namespace}));
+        JcrNodeType namespaces = new JcrNodeType(
+                                                 session,
+                                                 DnaLexicon.NAMESPACES,
+                                                 Arrays.asList(new NodeType[] {base}),
+                                                 NO_PRIMARY_ITEM_NAME,
+                                                 Arrays.asList(new JcrNodeDefinition[] {new JcrNodeDefinition(
+                                                                                                              session,
+                                                                                                              null,
+                                                                                                              null,
+                                                                                                              OnParentVersionBehavior.VERSION.getJcrValue(),
+                                                                                                              false,
+                                                                                                              false,
+                                                                                                              true,
+                                                                                                              false,
+                                                                                                              DnaLexicon.NAMESPACE,
+                                                                                                              new NodeType[] {namespace})}),
+                                                 NO_PROPERTIES, NOT_MIXIN, UNORDERABLE_CHILD_NODES);
 
+        JcrNodeType system = new JcrNodeType(
+                                             session,
+                                             DnaLexicon.SYSTEM,
+                                             Arrays.asList(new NodeType[] {base}),
+                                             NO_PRIMARY_ITEM_NAME,
+                                             Arrays.asList(new JcrNodeDefinition[] {new JcrNodeDefinition(
+                                                                                                          session,
+                                                                                                          null,
+                                                                                                          DnaLexicon.NAMESPACES,
+                                                                                                          OnParentVersionBehavior.VERSION.getJcrValue(),
+                                                                                                          true,
+                                                                                                          true,
+                                                                                                          true,
+                                                                                                          false,
+                                                                                                          DnaLexicon.NAMESPACES,
+                                                                                                          new NodeType[] {namespaces})}),
+                                             NO_PROPERTIES, NOT_MIXIN, UNORDERABLE_CHILD_NODES);
+
+        JcrNodeType root = new JcrNodeType(session, DnaLexicon.ROOT, Arrays.asList(new NodeType[] {base, referenceable}),
+                                           NO_PRIMARY_ITEM_NAME, Arrays.asList(new JcrNodeDefinition[] {
+                                               new JcrNodeDefinition(session, null, JcrLexicon.SYSTEM,
+                                                                     OnParentVersionBehavior.IGNORE.getJcrValue(), true, true,
+                                                                     true, false, DnaLexicon.NAMESPACES,
+                                                                     new NodeType[] {namespaces}),
+                                               new JcrNodeDefinition(session, null, null,
+                                                                     OnParentVersionBehavior.VERSION.getJcrValue(), false, false,
+                                                                     false, true, DnaLexicon.NAMESPACES,
+                                                                     new NodeType[] {namespaces}),
+
+                                           }), NO_PROPERTIES, NOT_MIXIN, UNORDERABLE_CHILD_NODES);
+
+        primaryNodeTypes.addAll(Arrays.asList(new JcrNodeType[] {root, system, namespaces, namespace}));
+
     }
 
     /**

Modified: trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/DnaLexicon.java
===================================================================
--- trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/DnaLexicon.java	2009-03-06 16:51:55 UTC (rev 761)
+++ trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/DnaLexicon.java	2009-03-06 17:03:00 UTC (rev 762)
@@ -33,6 +33,8 @@
 
     public static final Name NAMESPACES = new BasicName(Namespace.URI, "namespaces");
     public static final Name NAMESPACE = new BasicName(Namespace.URI, "namespace");
+    public static final Name ROOT = new BasicName(Namespace.URI, "root");
+    public static final Name SYSTEM = new BasicName(Namespace.URI, "system");
     public static final Name URI = new BasicName(Namespace.URI, "uri");
     public static final Name NODE_DEFINITON = new BasicName(Namespace.URI, "nodeDefinition");
 

Modified: trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrItemDefinition.java
===================================================================
--- trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrItemDefinition.java	2009-03-06 16:51:55 UTC (rev 761)
+++ trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrItemDefinition.java	2009-03-06 17:03:00 UTC (rev 762)
@@ -29,8 +29,8 @@
 import org.jboss.dna.graph.property.Name;
 
 /**
- * DNA implementation of the {@link ItemDefinition} interface.  This implementation is immutable and has all fields initialized
- * through its constructor. 
+ * DNA implementation of the {@link ItemDefinition} interface. This implementation is immutable and has all fields initialized
+ * through its constructor.
  */
 @Immutable
 class JcrItemDefinition implements ItemDefinition {
@@ -77,7 +77,7 @@
      */
     public String getName() {
         if (name == null) {
-            return "*";
+            return JcrNodeType.RESIDUAL_ITEM_NAME;
         }
 
         return name.getString(session.getExecutionContext().getNamespaceRegistry());

Modified: trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrLexicon.java
===================================================================
--- trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrLexicon.java	2009-03-06 16:51:55 UTC (rev 761)
+++ trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrLexicon.java	2009-03-06 17:03:00 UTC (rev 762)
@@ -63,6 +63,7 @@
     public static final Name PROTECTED = new BasicName(Namespace.URI, "protected");
     public static final Name REQUIRED_PRIMARY_TYPES = new BasicName(Namespace.URI, "requiredPrimaryTypes");
     public static final Name REQUIRED_TYPE = new BasicName(Namespace.URI, "requiredType");
+    public static final Name ROOT = new BasicName(Namespace.URI, "root");
     public static final Name ROOT_VERSION = new BasicName(Namespace.URI, "rootVersion");
     public static final Name SAME_NAME_SIBLINGS = new BasicName(Namespace.URI, "sameNameSiblings");
     public static final Name STATEMENT = new BasicName(Namespace.URI, "statement");
@@ -73,5 +74,7 @@
     public static final Name VERSIONABLE_UUID = new BasicName(Namespace.URI, "versionableUuid");
     public static final Name VERSION_HISTORY = new BasicName(Namespace.URI, "versionHistory");
     public static final Name VERSION_LABELS = new BasicName(Namespace.URI, "versionLabels");
+    public static final Name XMLTEXT = new BasicName(Namespace.URI, "xmltext");
+    public static final Name XMLCHARACTERS = new BasicName(Namespace.URI, "xmlcharacters");
 
 }

Modified: trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrNodeTypeManager.java
===================================================================
--- trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrNodeTypeManager.java	2009-03-06 16:51:55 UTC (rev 761)
+++ trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/JcrNodeTypeManager.java	2009-03-06 17:03:00 UTC (rev 762)
@@ -134,8 +134,7 @@
      * @throws NoSuchNodeTypeException
      */
     JcrNodeDefinition getRootNodeDefinition() throws NoSuchNodeTypeException, RepositoryException {
-        // TODO: Fix this
-        for (NodeDefinition definition : getNodeType("nt:unstructured").getChildNodeDefinitions()) {
+        for (NodeDefinition definition : getNodeType(DnaLexicon.ROOT).getChildNodeDefinitions()) {
             if (definition.getName().equals(JcrNodeType.RESIDUAL_ITEM_NAME)) return (JcrNodeDefinition)definition;
         }
         assert false; // should not get here




More information about the dna-commits mailing list