[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