You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2009/06/17 22:22:09 UTC

svn commit: r785777 [2/4] - in /jackrabbit/trunk: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/com...

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/nodetype/xml/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/nodetype/xml/TestAll.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/nodetype/xml/TestAll.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/nodetype/xml/TestAll.java Wed Jun 17 20:21:54 2009
@@ -17,7 +17,6 @@
 package org.apache.jackrabbit.core.nodetype.xml;
 
 import junit.framework.AssertionFailedError;
-import junit.framework.TestCase;
 
 import org.apache.jackrabbit.api.JackrabbitNodeTypeManager;
 import org.apache.jackrabbit.core.TestRepository;
@@ -34,6 +33,7 @@
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
 import org.apache.jackrabbit.spi.commons.value.ValueFactoryQImpl;
+import org.apache.jackrabbit.test.AbstractJCRTest;
 
 import javax.jcr.NamespaceException;
 import javax.jcr.NamespaceRegistry;
@@ -50,7 +50,7 @@
 /**
  * Test cases for reading and writing node type definition files.
  */
-public class TestAll extends TestCase {
+public class TestAll extends AbstractJCRTest {
 
     /** The dummy test namespace. */
     private static final String TEST_NAMESPACE = "http://www.apache.org/jackrabbit/test";
@@ -81,6 +81,7 @@
      * @throws Exception on initialization errors
      */
     protected void setUp() throws Exception {
+        super.setUp();
         InputStream xml =
             getClass().getClassLoader().getResourceAsStream(TEST_NODETYPES);
 
@@ -119,7 +120,7 @@
      * @param propertyName property name, or <code>null</code>
      * @return property definition
      */
-    private PropDef getProperty(String typeName, String propertyName) {
+    private PropDef getPropDef(String typeName, String propertyName) {
         Name name;
         if (propertyName != null) {
             name = FACTORY.create(TEST_NAMESPACE, propertyName);
@@ -229,7 +230,7 @@
                 def.getPrimaryItemName());
         assertEquals("itemNodeType propertyDefs",
                 10, def.getPropertyDefs().length);
-        PropDef pdef = getProperty("itemNodeType", null);
+        PropDef pdef = getPropDef("itemNodeType", null);
         assertTrue("itemNodeType wildcard property", pdef.definesResidual());
     }
 
@@ -280,7 +281,7 @@
 
     /** Test for the empty item definition. */
     public void testEmptyItem() {
-        PropDef def = getProperty("itemNodeType", "emptyItem");
+        PropDef def = getPropDef("itemNodeType", "emptyItem");
         assertEquals("emptyItem autoCreate",
                 false, def.isAutoCreated());
         assertEquals("emptyItem mandatory",
@@ -293,56 +294,56 @@
 
     /** Test for the <code>autoCreated</code> item definition attribute. */
     public void testAutoCreateItem() {
-        PropDef def = getProperty("itemNodeType", "autoCreatedItem");
+        PropDef def = getPropDef("itemNodeType", "autoCreatedItem");
         assertEquals("autoCreatedItem autoCreated",
                 true, def.isAutoCreated());
     }
 
     /** Test for the <code>mandatory</code> item definition attribute. */
     public void testMandatoryItem() {
-        PropDef def = getProperty("itemNodeType", "mandatoryItem");
+        PropDef def = getPropDef("itemNodeType", "mandatoryItem");
         assertEquals("mandatoryItem mandatory",
                 true, def.isMandatory());
     }
 
     /** Test for the <code>copy</code> parent version action. */
     public void testCopyItem() {
-        PropDef def = getProperty("itemNodeType", "copyItem");
+        PropDef def = getPropDef("itemNodeType", "copyItem");
         assertEquals("copyItem onParentVersion",
                 OnParentVersionAction.COPY, def.getOnParentVersion());
     }
 
     /** Test for the <code>version</code> parent version action. */
     public void testVersionItem() {
-        PropDef def = getProperty("itemNodeType", "versionItem");
+        PropDef def = getPropDef("itemNodeType", "versionItem");
         assertEquals("versionItem onParentVersion",
                 OnParentVersionAction.VERSION, def.getOnParentVersion());
     }
 
     /** Test for the <code>initialize</code> parent version action. */
     public void testInitializeItem() {
-        PropDef def = getProperty("itemNodeType", "initializeItem");
+        PropDef def = getPropDef("itemNodeType", "initializeItem");
         assertEquals("initializeItem onParentVersion",
                 OnParentVersionAction.INITIALIZE, def.getOnParentVersion());
     }
 
     /** Test for the <code>compute</code> parent version action. */
     public void testComputeItem() {
-        PropDef def = getProperty("itemNodeType", "computeItem");
+        PropDef def = getPropDef("itemNodeType", "computeItem");
         assertEquals("computeItem onParentVersion",
                 OnParentVersionAction.COMPUTE, def.getOnParentVersion());
     }
 
     /** Test for the <code>abort</code> parent version action. */
     public void testAbortItem() {
-        PropDef def = getProperty("itemNodeType", "abortItem");
+        PropDef def = getPropDef("itemNodeType", "abortItem");
         assertEquals("abortItem onParentVersion",
                 OnParentVersionAction.ABORT, def.getOnParentVersion());
     }
 
     /** Test for the <code>protected</code> item definition attribute. */
     public void testProtectedItem() {
-        PropDef def = getProperty("itemNodeType", "protectedItem");
+        PropDef def = getPropDef("itemNodeType", "protectedItem");
         assertEquals("protectedItem protected",
                 true, def.isProtected());
     }
@@ -351,12 +352,12 @@
     public void testPropertyNodeType() {
         NodeTypeDef def = getNodeType("propertyNodeType");
         assertEquals("propertyNodeType propertyDefs",
-                11, def.getPropertyDefs().length);
+                13, def.getPropertyDefs().length);
     }
 
     /** Test for the empty property definition. */
     public void testEmptyProperty() {
-        PropDef def = getProperty("propertyNodeType", "emptyProperty");
+        PropDef def = getPropDef("propertyNodeType", "emptyProperty");
         assertEquals("emptyProperty requiredType",
                 PropertyType.UNDEFINED, def.getRequiredType());
         assertEquals("emptyProperty multiple",
@@ -369,28 +370,28 @@
 
     /** Test for the <code>binary</code> property definition type. */
     public void testBinaryProperty() {
-        PropDef def = getProperty("propertyNodeType", "binaryProperty");
+        PropDef def = getPropDef("propertyNodeType", "binaryProperty");
         assertEquals("binaryProperty requiredType",
                 PropertyType.BINARY, def.getRequiredType());
         assertEquals("binaryProperty valueConstraints",
                 1, def.getValueConstraints().length);
         assertEquals("binaryProperty valueConstraints[0]",
-                "[0,)", (def.getValueConstraints())[0].getDefinition());
+                "[0,)", (def.getValueConstraints())[0].getString());
         assertEquals("binaryProperty defaultValues",
                 0, def.getDefaultValues().length);
     }
 
     /** Test for the <code>boolean</code> property definition type. */
     public void testBooleanProperty() {
-        PropDef def = getProperty("propertyNodeType", "booleanProperty");
+        PropDef def = getPropDef("propertyNodeType", "booleanProperty");
         assertEquals("booleanProperty requiredType",
                 PropertyType.BOOLEAN, def.getRequiredType());
         assertEquals("booleanProperty valueConstraints",
                 2, def.getValueConstraints().length);
         assertEquals("booleanProperty valueConstraints[0]",
-                "true", (def.getValueConstraints())[0].getDefinition());
+                "true", (def.getValueConstraints())[0].getString());
         assertEquals("booleanProperty valueConstraints[1]",
-                "false", (def.getValueConstraints())[1].getDefinition());
+                "false", (def.getValueConstraints())[1].getString());
         assertEquals("booleanProperty defaultValues",
                 1, def.getDefaultValues().length);
         assertEquals("booleanProperty defaultValues[0]",
@@ -399,14 +400,14 @@
 
     /** Test for the <code>date</code> property definition type. */
     public void testDateProperty() {
-        PropDef def = getProperty("propertyNodeType", "dateProperty");
+        PropDef def = getPropDef("propertyNodeType", "dateProperty");
         assertEquals("dateProperty requiredType",
                 PropertyType.DATE, def.getRequiredType());
         assertEquals("dateProperty valueConstraints",
                 1, def.getValueConstraints().length);
         assertEquals("dateProperty valueConstraints[0]",
                 "[2005-01-01T00:00:00.000Z,2006-01-01T00:00:00.000Z)",
-                (def.getValueConstraints())[0].getDefinition());
+                (def.getValueConstraints())[0].getString());
         assertEquals("dateProperty defaultValues",
                 1, def.getDefaultValues().length);
         assertEquals("dateProperty defaultValues[0]",
@@ -415,17 +416,17 @@
 
     /** Test for the <code>double</code> property definition type. */
     public void testDoubleProperty() {
-        PropDef def = getProperty("propertyNodeType", "doubleProperty");
+        PropDef def = getPropDef("propertyNodeType", "doubleProperty");
         assertEquals("doubleProperty requiredType",
                 PropertyType.DOUBLE, def.getRequiredType());
         assertEquals("doubleProperty valueConstraints",
                 3, def.getValueConstraints().length);
         assertEquals("doubleProperty valueConstraints[0]",
-                "[,0.0)", (def.getValueConstraints())[0].getDefinition());
+                "[,0.0)", (def.getValueConstraints())[0].getString());
         assertEquals("doubleProperty valueConstraints[1]",
-                "(1.0,2.0)", (def.getValueConstraints())[1].getDefinition());
+                "(1.0,2.0)", (def.getValueConstraints())[1].getString());
         assertEquals("doubleProperty valueConstraints[2]",
-                "(3.0,]", (def.getValueConstraints())[2].getDefinition());
+                "(3.0,]", (def.getValueConstraints())[2].getString());
         assertEquals("doubleProperty defaultValues",
                 1, def.getDefaultValues().length);
         assertEquals("doubleProperty defaultValues[0]",
@@ -434,17 +435,17 @@
 
     /** Test for the <code>long</code> property definition type. */
     public void testLongProperty() {
-        PropDef def = getProperty("propertyNodeType", "longProperty");
+        PropDef def = getPropDef("propertyNodeType", "longProperty");
         assertEquals("longProperty requiredType",
                 PropertyType.LONG, def.getRequiredType());
         assertEquals("longProperty valueConstraints",
                 3, def.getValueConstraints().length);
         assertEquals("longProperty valueConstraints[0]",
-                "(-10,0]", (def.getValueConstraints())[0].getDefinition());
+                "(-10,0]", (def.getValueConstraints())[0].getString());
         assertEquals("longProperty valueConstraints[1]",
-                "[1,2]", (def.getValueConstraints())[1].getDefinition());
+                "[1,2]", (def.getValueConstraints())[1].getString());
         assertEquals("longProperty valueConstraints[2]",
-                "[10,100)", (def.getValueConstraints())[2].getDefinition());
+                "[10,100)", (def.getValueConstraints())[2].getString());
         assertEquals("longProperty defaultValues",
                 1, def.getDefaultValues().length);
         assertEquals("longProperty defaultValues[0]",
@@ -453,14 +454,14 @@
 
     /** Test for the <code>name</code> property definition type. */
     public void testNameProperty() {
-        PropDef def = getProperty("propertyNodeType", "nameProperty");
+        PropDef def = getPropDef("propertyNodeType", "nameProperty");
         assertEquals("nameProperty requiredType",
                 PropertyType.NAME, def.getRequiredType());
         assertEquals("nameProperty valueConstraints",
                 1, def.getValueConstraints().length);
         assertEquals("nameProperty valueConstraints[0]",
-                "test:testName",
-                (def.getValueConstraints())[0].getDefinition());
+                "{http://www.apache.org/jackrabbit/test}testName",
+                (def.getValueConstraints())[0].getString());
         assertEquals("nameProperty defaultValues",
                 1, def.getDefaultValues().length);
         assertEquals("nameProperty defaultValues[0]",
@@ -469,42 +470,70 @@
 
     /** Test for the <code>path</code> property definition type. */
     public void testPathProperty() {
-        PropDef def = getProperty("propertyNodeType", "pathProperty");
+        PropDef def = getPropDef("propertyNodeType", "pathProperty");
         assertEquals("pathProperty requiredType",
                 PropertyType.PATH, def.getRequiredType());
         assertEquals("pathProperty valueConstraints",
                 1, def.getValueConstraints().length);
         assertEquals("pathProperty valueConstraints[0]",
-                "/test:testPath",
-                (def.getValueConstraints())[0].getDefinition());
+                "{}\t{http://www.apache.org/jackrabbit/test}testPath",
+                (def.getValueConstraints())[0].getString());
+        assertEquals("pathProperty defaultValues",
+                0, def.getDefaultValues().length);
+    }
+
+    /** Test for the <code>path</code> property definition type. */
+    public void testPathProperty1() {
+        PropDef def = getPropDef("propertyNodeType", "pathProperty1");
+        assertEquals("pathProperty requiredType",
+                PropertyType.PATH, def.getRequiredType());
+        assertEquals("pathProperty valueConstraints",
+                1, def.getValueConstraints().length);
+        assertEquals("pathProperty valueConstraints[0]",
+                "{}\t{http://www.apache.org/jackrabbit/test}testPath\t{}*",
+                (def.getValueConstraints())[0].getString());
+        assertEquals("pathProperty defaultValues",
+                0, def.getDefaultValues().length);
+    }
+
+    /** Test for the <code>path</code> property definition type. */
+    public void testPathProperty2() {
+        PropDef def = getPropDef("propertyNodeType", "pathProperty2");
+        assertEquals("pathProperty requiredType",
+                PropertyType.PATH, def.getRequiredType());
+        assertEquals("pathProperty valueConstraints",
+                1, def.getValueConstraints().length);
+        assertEquals("pathProperty valueConstraints[0]",
+                "{http://www.apache.org/jackrabbit/test}testPath\t{}*",
+                (def.getValueConstraints())[0].getString());
         assertEquals("pathProperty defaultValues",
                 0, def.getDefaultValues().length);
     }
 
     /** Test for the <code>reference</code> property definition type. */
     public void testReferenceProperty() {
-        PropDef def = getProperty("propertyNodeType", "referenceProperty");
+        PropDef def = getPropDef("propertyNodeType", "referenceProperty");
         assertEquals("referenceProperty requiredType",
                 PropertyType.REFERENCE, def.getRequiredType());
         assertEquals("referenceProperty valueConstraints",
                 1, def.getValueConstraints().length);
         assertEquals("referenceProperty valueConstraints[0]",
-                "nt:base",
-                (def.getValueConstraints())[0].getDefinition());
+                "{http://www.jcp.org/jcr/nt/1.0}base",
+                (def.getValueConstraints())[0].getString());
         assertEquals("referenceProperty defaultValues",
                 0, def.getDefaultValues().length);
     }
 
     /** Test for the <code>string</code> property definition type. */
     public void testStringProperty() {
-        PropDef def = getProperty("propertyNodeType", "stringProperty");
+        PropDef def = getPropDef("propertyNodeType", "stringProperty");
         assertEquals("stringProperty requiredType",
                 PropertyType.STRING, def.getRequiredType());
         assertEquals("stringProperty valueConstraints",
                 1, def.getValueConstraints().length);
         assertEquals("stringProperty valueConstraints[0]",
                 "bananas?",
-                (def.getValueConstraints())[0].getDefinition());
+                (def.getValueConstraints())[0].getString());
         assertEquals("stringProperty defaultValues",
                 2, def.getDefaultValues().length);
         assertEquals("stringProperty defaultValues[0]",
@@ -515,7 +544,7 @@
 
     /** Test for the <code>multiple</code> property definition attribute. */
     public void testMultipleProperty() {
-        PropDef def = getProperty("propertyNodeType", "multipleProperty");
+        PropDef def = getPropDef("propertyNodeType", "multipleProperty");
         assertEquals("multipleProperty multiple",
                 true, def.isMultiple());
     }

Modified: jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_nodetypes.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_nodetypes.xml?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_nodetypes.xml (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_nodetypes.xml Wed Jun 17 20:21:54 2009
@@ -172,6 +172,22 @@
         <valueConstraint>/test:testPath</valueConstraint>
       </valueConstraints>
     </propertyDefinition>
+    <propertyDefinition name="test:pathProperty1"
+                 requiredType="Path" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="false" isQueryOrderable="true"
+                 onParentVersion="IGNORE" protected="false" multiple="false">
+      <valueConstraints>
+        <valueConstraint>/test:testPath/*</valueConstraint>
+      </valueConstraints>
+    </propertyDefinition>
+    <propertyDefinition name="test:pathProperty2"
+                 requiredType="Path" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="false" isQueryOrderable="true"
+                 onParentVersion="IGNORE" protected="false" multiple="false">
+      <valueConstraints>
+        <valueConstraint>test:testPath/*</valueConstraint>
+      </valueConstraints>
+    </propertyDefinition>
     <propertyDefinition name="test:referenceProperty"
                  requiredType="Reference" autoCreated="false" mandatory="false"
                  isFullTextSearchable="false" isQueryOrderable="true"

Modified: jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/iterator/NodeTypeIteratorAdapter.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/iterator/NodeTypeIteratorAdapter.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/iterator/NodeTypeIteratorAdapter.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/iterator/NodeTypeIteratorAdapter.java Wed Jun 17 20:21:54 2009
@@ -60,7 +60,7 @@
      *
      * @param collection collection of {@link NodeType}s
      */
-    public NodeTypeIteratorAdapter(Collection collection) {
+    public NodeTypeIteratorAdapter(Collection<NodeType> collection) {
         super(new RangeIteratorAdapter(collection));
     }
 

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/DefinitionValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/DefinitionValidator.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/DefinitionValidator.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/DefinitionValidator.java Wed Jun 17 20:21:54 2009
@@ -21,6 +21,7 @@
 import org.apache.jackrabbit.spi.QNodeDefinition;
 import org.apache.jackrabbit.spi.QPropertyDefinition;
 import org.apache.jackrabbit.spi.QValue;
+import org.apache.jackrabbit.spi.QValueConstraint;
 import org.apache.jackrabbit.spi.commons.nodetype.constraint.ValueConstraint;
 import org.apache.jackrabbit.spi.commons.name.NameConstants;
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
@@ -263,13 +264,13 @@
              * the specified node type must be registered, with one notable
              * exception: the node type just being registered
              */
-            String[] constraints = pd.getValueConstraints();
+            QValueConstraint[] constraints = pd.getValueConstraints();
             if (constraints != null && constraints.length > 0) {
 
                 if (pd.getRequiredType() == PropertyType.REFERENCE) {
-                    for (int j = 0; j < constraints.length; j++) {
+                    for (QValueConstraint constraint : constraints) {
                         // TODO improve. don't rely on a specific factory impl
-                        Name ntName = NameFactoryImpl.getInstance().create(constraints[j]);
+                        Name ntName = NameFactoryImpl.getInstance().create(constraint.getString());
                         /* compare to given ntd map and not registered nts only */
                         if (!name.equals(ntName) && !validatedDefs.containsKey(ntName)) {
                             String msg = "[" + name + "#" + pd.getName()

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java Wed Jun 17 20:21:54 2009
@@ -25,6 +25,7 @@
 import org.apache.jackrabbit.spi.QPropertyDefinition;
 import org.apache.jackrabbit.spi.QValue;
 import org.apache.jackrabbit.spi.QItemDefinition;
+import org.apache.jackrabbit.spi.QValueConstraint;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -806,7 +807,7 @@
                     ps.println("\t\tName\t\t" + (pd[i].definesResidual() ? "*" : pd[i].getName().toString()));
                     String type = pd[i].getRequiredType() == 0 ? "null" : PropertyType.nameFromValue(pd[i].getRequiredType());
                     ps.println("\t\tRequiredType\t" + type);
-                    String[] vca = pd[i].getValueConstraints();
+                    QValueConstraint[] vca = pd[i].getValueConstraints();
                     StringBuffer constraints = new StringBuffer();
                     if (vca == null) {
                         constraints.append("<null>");
@@ -815,7 +816,7 @@
                             if (constraints.length() > 0) {
                                 constraints.append(", ");
                             }
-                            constraints.append(vca[n]);
+                            constraints.append(vca[n].getString());
                         }
                     }
                     ps.println("\t\tValueConstraints\t" + constraints.toString());
@@ -824,14 +825,14 @@
                     if (defVals == null) {
                         defaultValues.append("<null>");
                     } else {
-                        for (int n = 0; n < defVals.length; n++) {
+                        for (QValue defVal : defVals) {
                             if (defaultValues.length() > 0) {
                                 defaultValues.append(", ");
                             }
                             try {
-                                defaultValues.append(defVals[n].getString());
+                                defaultValues.append(defVal.getString());
                             } catch (RepositoryException e) {
-                                defaultValues.append(defVals[n].toString());
+                                defaultValues.append(defVal.toString());
                             }
                         }
                     }
@@ -843,25 +844,25 @@
                     ps.println("\t\tMultiple\t" + pd[i].isMultiple());
                 }
                 QNodeDefinition[] nd = ntd.getChildNodeDefs();
-                for (int i = 0; i < nd.length; i++) {
+                for (QNodeDefinition aNd : nd) {
                     ps.print("\tNodeDefinition");
-                    ps.println(" (declared in " + nd[i].getDeclaringNodeType() + ") ");
-                    ps.println("\t\tName\t\t" + (nd[i].definesResidual() ? "*" : nd[i].getName().toString()));
-                    Name[] reqPrimaryTypes = nd[i].getRequiredPrimaryTypes();
+                    ps.println(" (declared in " + aNd.getDeclaringNodeType() + ") ");
+                    ps.println("\t\tName\t\t" + (aNd.definesResidual() ? "*" : aNd.getName().toString()));
+                    Name[] reqPrimaryTypes = aNd.getRequiredPrimaryTypes();
                     if (reqPrimaryTypes != null && reqPrimaryTypes.length > 0) {
                         for (int n = 0; n < reqPrimaryTypes.length; n++) {
                             ps.print("\t\tRequiredPrimaryType\t" + reqPrimaryTypes[n]);
                         }
                     }
-                    Name defPrimaryType = nd[i].getDefaultPrimaryType();
+                    Name defPrimaryType = aNd.getDefaultPrimaryType();
                     if (defPrimaryType != null) {
                         ps.print("\n\t\tDefaultPrimaryType\t" + defPrimaryType);
                     }
-                    ps.println("\n\t\tAutoCreated\t" + nd[i].isAutoCreated());
-                    ps.println("\t\tMandatory\t" + nd[i].isMandatory());
-                    ps.println("\t\tOnVersion\t" + OnParentVersionAction.nameFromValue(nd[i].getOnParentVersion()));
-                    ps.println("\t\tProtected\t" + nd[i].isProtected());
-                    ps.println("\t\tAllowsSameNameSiblings\t" + nd[i].allowsSameNameSiblings());
+                    ps.println("\n\t\tAutoCreated\t" + aNd.isAutoCreated());
+                    ps.println("\t\tMandatory\t" + aNd.isMandatory());
+                    ps.println("\t\tOnVersion\t" + OnParentVersionAction.nameFromValue(aNd.getOnParentVersion()));
+                    ps.println("\t\tProtected\t" + aNd.isProtected());
+                    ps.println("\t\tAllowsSameNameSiblings\t" + aNd.allowsSameNameSiblings());
                 }
             }
         }

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java Wed Jun 17 20:21:54 2009
@@ -131,10 +131,8 @@
             this.namespaces.setMapping((String) entry.getKey(),
                     (String) entry.getValue());
         }
-        CompactNodeTypeDefReader reader = new CompactNodeTypeDefReader(
-                cnd, "", this.namespaces, new QNodeTypeDefinitionsBuilderImpl());
-        for (Iterator it = reader.getNodeTypeDefs().iterator(); it.hasNext(); ) {
-            QNodeTypeDefinition def = (QNodeTypeDefinition) it.next();
+        CompactNodeTypeDefReader reader = new CompactNodeTypeDefReader(cnd, "", this.namespaces);
+        for (QNodeTypeDefinition def : reader.getNodeTypeDefinitions()) {
             nodeTypeDefs.put(def.getName(), def);
         }
         this.wspNames = Collections.unmodifiableList(new ArrayList(wspNames));

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QItemDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QItemDefinitionImpl.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QItemDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QItemDefinitionImpl.java Wed Jun 17 20:21:54 2009
@@ -175,7 +175,7 @@
     /**
      * See {@link QNodeDefinition#hashCode()} and {@link QPropertyDefinition#hashCode()}.
      *
-     * @return
+     * @return the hashcode
      */
     public abstract int hashCode();
 }

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeDefinitionImpl.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeDefinitionImpl.java Wed Jun 17 20:21:54 2009
@@ -65,6 +65,9 @@
      * @param isMandatory       if this is a mandatory item.
      * @param onParentVersion   the on parent version behaviour.
      * @param isProtected       if this item is protected.
+     * @param defaultPrimaryType the default primary type name
+     * @param requiredPrimaryTypes the required primary type name
+     * @param allowsSameNameSiblings if this node allows SNS
      */
     public QNodeDefinitionImpl(Name name, Name declaringNodeType,
                                boolean isAutoCreated, boolean isMandatory,
@@ -139,7 +142,7 @@
     /**
      * Overwrites {@link QItemDefinitionImpl#hashCode()}.
      *
-     * @return
+     * @return the hash code
      */
     public int hashCode() {
         if (hashCode == 0) {
@@ -157,11 +160,9 @@
             }
             sb.append('/');
             // set of required node type names, sorted in ascending order
-            TreeSet set = new TreeSet();
+            TreeSet<Name> set = new TreeSet<Name>();
             Name[] names = getRequiredPrimaryTypes();
-            for (int i = 0; i < names.length; i++) {
-                set.add(names[i]);
-            }
+            set.addAll(Arrays.asList(names));
             sb.append(set.toString());
 
             hashCode = sb.toString().hashCode();

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeTypeDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeTypeDefinitionImpl.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeTypeDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeTypeDefinitionImpl.java Wed Jun 17 20:21:54 2009
@@ -23,10 +23,12 @@
 import org.apache.jackrabbit.spi.NameFactory;
 import org.apache.jackrabbit.spi.QValue;
 import org.apache.jackrabbit.spi.QValueFactory;
+import org.apache.jackrabbit.spi.QValueConstraint;
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
 import org.apache.jackrabbit.spi.commons.conversion.IllegalNameException;
 import org.apache.jackrabbit.spi.commons.value.ValueFormat;
+import org.apache.jackrabbit.spi.commons.nodetype.constraint.ValueConstraint;
 
 import javax.jcr.PropertyType;
 import javax.jcr.NamespaceException;
@@ -37,6 +39,7 @@
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Collections;
+import java.util.Arrays;
 import java.io.Serializable;
 
 /**
@@ -99,7 +102,7 @@
      * Unmodifiable collection of dependent node type <code>Name</code>s.
      * @see #getDependencies()
      */
-    private transient Collection dependencies;
+    private transient Collection<Name> dependencies;
 
     /**
      * Copy constructor.
@@ -118,64 +121,6 @@
      *
      * @param name                   the name of the node type
      * @param supertypes             the names of the supertypes
-     * @param isMixin                if this is a mixin node type
-     * @param hasOrderableChildNodes if this node type has orderable child
-     *                               nodes.
-     * @param primaryItemName        the name of the primary item, or
-     *                               <code>null</code>.
-     * @param declaredPropDefs       the declared property definitions.
-     * @param declaredNodeDefs       the declared child node definitions.
-     * @deprecated use {@link #QNodeTypeDefinitionImpl(Name, Name[], Name[], boolean, boolean, Name, QPropertyDefinition[], QNodeDefinition[])}
-     */
-    public QNodeTypeDefinitionImpl(Name name,
-                                   Name[] supertypes,
-                                   boolean isMixin,
-                                   boolean hasOrderableChildNodes,
-                                   Name primaryItemName,
-                                   QPropertyDefinition[] declaredPropDefs,
-                                   QNodeDefinition[] declaredNodeDefs) {
-        this(name, supertypes, null, isMixin, false, false,
-                hasOrderableChildNodes, primaryItemName,
-                getSerializablePropertyDefs(declaredPropDefs),
-                getSerializableNodeDefs(declaredNodeDefs));
-    }
-
-    /**
-     * Creates a new serializable SPI node type definition. Same as
-     * {@link #QNodeTypeDefinitionImpl(Name, Name[], Name[], boolean, boolean, boolean, boolean, Name, QPropertyDefinition[], QNodeDefinition[])}
-     * but using <code>false</code> for both {@link #isAbstract()} and {@link #isQueryable)}.
-     *
-     * @param name                   the name of the node type
-     * @param supertypes             the names of the supertypes
-     * @param supportedMixins        the names of supported mixins (or <code>null</code>)
-     * @param isMixin                if this is a mixin node type
-     * @param hasOrderableChildNodes if this node type has orderable child
-     *                               nodes.
-     * @param primaryItemName        the name of the primary item, or
-     *                               <code>null</code>.
-     * @param declaredPropDefs       the declared property definitions.
-     * @param declaredNodeDefs       the declared child node definitions.
-     *
-     */
-    public QNodeTypeDefinitionImpl(Name name,
-                                   Name[] supertypes,
-                                   Name[] supportedMixins,
-                                   boolean isMixin,
-                                   boolean hasOrderableChildNodes,
-                                   Name primaryItemName,
-                                   QPropertyDefinition[] declaredPropDefs,
-                                   QNodeDefinition[] declaredNodeDefs) {
-        this(name, supertypes, supportedMixins, isMixin, false, false,
-                hasOrderableChildNodes, primaryItemName,
-                getSerializablePropertyDefs(declaredPropDefs),
-                getSerializableNodeDefs(declaredNodeDefs));
-    }
-
-    /**
-     * Creates a new serializable SPI node type definition.
-     *
-     * @param name                   the name of the node type
-     * @param supertypes             the names of the supertypes
      * @param supportedMixins        the names of supported mixins (or <code>null</code>)
      * @param isMixin                if this is a mixin node type
      * @param isAbstract             if this is an abstract node type definition.
@@ -213,14 +158,15 @@
      * Createa a new <code>QNodeTypeDefinitionImpl</code> from a JCR
      * NodeType definition.
      *
-     * @param def
-     * @param resolver
-     * @param qValueFactory
-     * @throws RepositoryException
+     * @param def node type definition
+     * @param resolver resolver
+     * @param qValueFactory value factory
+     * @throws RepositoryException if an error occurs
      */
     public QNodeTypeDefinitionImpl(NodeTypeDefinition def,
                                    NamePathResolver resolver,
-                                   QValueFactory qValueFactory) throws RepositoryException {
+                                   QValueFactory qValueFactory)
+            throws RepositoryException {
         this(resolver.getQName(def.getName()),
                 getNames(def.getDeclaredSupertypeNames(), resolver), null, def.isMixin(),
                 def.isAbstract(), def.isQueryable(), def.hasOrderableChildNodes(),
@@ -304,36 +250,34 @@
      */
     public Collection getDependencies() {
         if (dependencies == null) {
-            Collection deps = new HashSet();
+            Collection<Name> deps = new HashSet<Name>();
             // supertypes
-            for (int i = 0; i < supertypes.length; i++) {
-                deps.add(supertypes[i]);
-            }
+            deps.addAll(Arrays.asList(supertypes));
             // child node definitions
-            for (int i = 0; i < childNodeDefs.length; i++) {
+            for (QNodeDefinition childNodeDef : childNodeDefs) {
                 // default primary type
-                Name ntName = childNodeDefs[i].getDefaultPrimaryType();
+                Name ntName = childNodeDef.getDefaultPrimaryType();
                 if (ntName != null && !name.equals(ntName)) {
                     deps.add(ntName);
                 }
                 // required primary type
-                Name[] ntNames = childNodeDefs[i].getRequiredPrimaryTypes();
-                for (int j = 0; j < ntNames.length; j++) {
-                    if (ntNames[j] != null && !name.equals(ntNames[j])) {
-                        deps.add(ntNames[j]);
+                Name[] ntNames = childNodeDef.getRequiredPrimaryTypes();
+                for (Name ntName1 : ntNames) {
+                    if (ntName1 != null && !name.equals(ntName1)) {
+                        deps.add(ntName1);
                     }
                 }
             }
             // property definitions
-            for (int i = 0; i < propertyDefs.length; i++) {
+            for (QPropertyDefinition propertyDef : propertyDefs) {
                 // [WEAK]REFERENCE value constraints
-                if (propertyDefs[i].getRequiredType() == PropertyType.REFERENCE
-                        || propertyDefs[i].getRequiredType() == PropertyType.WEAKREFERENCE) {
-                    String[] ca = propertyDefs[i].getValueConstraints();
+                if (propertyDef.getRequiredType() == PropertyType.REFERENCE
+                        || propertyDef.getRequiredType() == PropertyType.WEAKREFERENCE) {
+                    QValueConstraint[] ca = propertyDef.getValueConstraints();
                     if (ca != null) {
-                        for (int j = 0; j < ca.length; j++) {
+                        for (QValueConstraint aCa : ca) {
                             NameFactory factory = NameFactoryImpl.getInstance();
-                            Name ntName = factory.create(ca[j]);
+                            Name ntName = factory.create(aCa.getString());
                             if (!name.equals(ntName)) {
                                 deps.add(ntName);
                             }
@@ -409,20 +353,30 @@
 
     private static QPropertyDefinition[] createQPropertyDefinitions(PropertyDefinition[] pds,
                                                                     NamePathResolver resolver,
-                                                                    QValueFactory qValueFactory) throws RepositoryException {
+                                                                    QValueFactory qValueFactory)
+            throws RepositoryException {
         QPropertyDefinition[] declaredPropDefs = new QPropertyDefinition[pds.length];
         for (int i = 0; i < pds.length; i++) {
             PropertyDefinition propDef = pds[i];
             Name name = resolver.getQName(propDef.getName());
             Name declName = resolver.getQName(propDef.getDeclaringNodeType().getName());
             QValue[] defVls = ValueFormat.getQValues(propDef.getDefaultValues(), resolver, qValueFactory);
-
+            String[] jcrConstraints = propDef.getValueConstraints();
+            QValueConstraint[] constraints = new QValueConstraint[jcrConstraints.length];
+            for (int j=0; j<constraints.length; j++) {
+                constraints[j] = ValueConstraint.create(propDef.getRequiredType(), jcrConstraints[j], resolver);
+            }
             declaredPropDefs[i] = new QPropertyDefinitionImpl(
-                    name, declName, propDef.isAutoCreated(), propDef.isMandatory(),
-                    propDef.getOnParentVersion(), propDef.isProtected(),
-                    defVls, propDef.isMultiple(),
-                    propDef.getRequiredType(), propDef.getValueConstraints(),
-                    getNames(propDef.getAvailableQueryOperators(), resolver),
+                    name, declName,
+                    propDef.isAutoCreated(),
+                    propDef.isMandatory(),
+                    propDef.getOnParentVersion(),
+                    propDef.isProtected(),
+                    defVls,
+                    propDef.isMultiple(),
+                    propDef.getRequiredType(),
+                    constraints,
+                    propDef.getAvailableQueryOperators(),
                     propDef.isFullTextSearchable(),
                     propDef.isQueryOrderable());
         }
@@ -439,9 +393,14 @@
             Name[] requiredPrimaryTypes = getNames(nodeDef.getRequiredPrimaryTypeNames(), resolver);
 
             declaredNodeDefs[i] = new QNodeDefinitionImpl(
-                    name, declName, nodeDef.isAutoCreated(), nodeDef.isMandatory(),
-                    nodeDef.getOnParentVersion(), nodeDef.isProtected(),
-                    defaultPrimaryType, requiredPrimaryTypes,
+                    name,
+                    declName,
+                    nodeDef.isAutoCreated(),
+                    nodeDef.isMandatory(),
+                    nodeDef.getOnParentVersion(),
+                    nodeDef.isProtected(),
+                    defaultPrimaryType,
+                    requiredPrimaryTypes,
                     nodeDef.allowsSameNameSiblings());
         }
         return declaredNodeDefs;

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QPropertyDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QPropertyDefinitionImpl.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QPropertyDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QPropertyDefinitionImpl.java Wed Jun 17 20:21:54 2009
@@ -19,6 +19,7 @@
 import org.apache.jackrabbit.spi.QPropertyDefinition;
 import org.apache.jackrabbit.spi.QValue;
 import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QValueConstraint;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -28,8 +29,7 @@
  * <code>QPropertyDefinitionImpl</code> implements SPI property
  * definition interface.
  */
-public class QPropertyDefinitionImpl
-        extends QItemDefinitionImpl
+public class QPropertyDefinitionImpl extends QItemDefinitionImpl
         implements QPropertyDefinition {
 
     /**
@@ -40,7 +40,7 @@
     /**
      * The value constraints.
      */
-    private final String[] valueConstraints;
+    private final QValueConstraint[] valueConstraints;
 
     /**
      * The default values.
@@ -53,9 +53,9 @@
     private final boolean multiple;
 
     /**
-     * The 'multiple' flag
+     * The available query operators
      */
-    private final Name[] availableQueryOperators;
+    private final String[] availableQueryOperators;
 
     /**
      * The 'fullTextSearcheable' flag
@@ -98,40 +98,9 @@
      * @param requiredType      the required type for this property.
      * @param valueConstraints  the value constraints for this property. If none
      *                          exist an empty array must be passed.
-     * @throws NullPointerException if <code>valueConstraints</code> is
-     *                              <code>null</code>.
-     * @deprecated Use {@link #QPropertyDefinitionImpl(Name, Name,
-                                   boolean, boolean, int, boolean, QValue[], boolean,
-                                   int, String[], Name[], boolean, boolean)} instead.
-     */
-    public QPropertyDefinitionImpl(Name name, Name declaringNodeType,
-                                   boolean isAutoCreated, boolean isMandatory,
-                                   int onParentVersion, boolean isProtected,
-                                   QValue[] defaultValues, boolean isMultiple,
-                                   int requiredType, String[] valueConstraints) {
-        this(name, declaringNodeType, isAutoCreated, isMandatory,
-                onParentVersion, isProtected, defaultValues, isMultiple,
-                requiredType, valueConstraints, null, false, false);
-    }
-
-    /**
-     * Creates a new serializable property definition.
-     *
-     * @param name              the name of the child item.
-     * @param declaringNodeType the delaring node type
-     * @param isAutoCreated     if this item is auto created.
-     * @param isMandatory       if this is a mandatory item.
-     * @param onParentVersion   the on parent version behaviour.
-     * @param isProtected       if this item is protected.
-     * @param defaultValues     the default values or <code>null</code> if there
-     *                          are none.
-     * @param isMultiple        if this property is multi-valued.
-     * @param requiredType      the required type for this property.
-     * @param valueConstraints  the value constraints for this property. If none
-     *                          exist an empty array must be passed.
-     * @param availableQueryOperators
-     * @param isFullTextSearchable
-     * @param isQueryOrderable
+     * @param availableQueryOperators the available query operators
+     * @param isFullTextSearchable if this is fulltext searchable
+     * @param isQueryOrderable   if this is queryable
      * @throws NullPointerException if <code>valueConstraints</code> is
      *                              <code>null</code>.
      * @since JCR 2.0
@@ -140,8 +109,9 @@
                                    boolean isAutoCreated, boolean isMandatory,
                                    int onParentVersion, boolean isProtected,
                                    QValue[] defaultValues, boolean isMultiple,
-                                   int requiredType, String[] valueConstraints,
-                                   Name[] availableQueryOperators,
+                                   int requiredType,
+                                   QValueConstraint[] valueConstraints,
+                                   String[] availableQueryOperators,
                                    boolean isFullTextSearchable,
                                    boolean isQueryOrderable) {
         super(name, declaringNodeType, isAutoCreated, isMandatory,
@@ -169,7 +139,7 @@
     /**
      * {@inheritDoc}
      */
-    public String[] getValueConstraints() {
+    public QValueConstraint[] getValueConstraints() {
         return valueConstraints;
     }
 
@@ -190,7 +160,7 @@
     /**
      * {@inheritDoc}
      */
-    public Name[] getAvailableQueryOperators() {
+    public String[] getAvailableQueryOperators() {
         return availableQueryOperators;
     }
 
@@ -249,7 +219,7 @@
     /**
      * Overwrites {@link QItemDefinitionImpl#hashCode()}.
      *
-     * @return
+     * @return the hashcode
      */
     public int hashCode() {
         if (hashCode == 0) {
@@ -272,11 +242,9 @@
             sb.append('/');
             sb.append(queryOrderable ? 1 : 0);
             sb.append('/');
-            Set<Name> s = new HashSet<Name>();
-            Name[] names = getAvailableQueryOperators();
-            for (int i = 0; i < names.length; i++) {
-                s.add(names[i]);
-            }
+            Set<String> s = new HashSet<String>();
+            String[] names = getAvailableQueryOperators();
+            s.addAll(Arrays.asList(names));
             sb.append(s.toString());
 
             hashCode = sb.toString().hashCode();

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/namespace/NamespaceMapping.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/namespace/NamespaceMapping.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/namespace/NamespaceMapping.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/namespace/NamespaceMapping.java Wed Jun 17 20:21:54 2009
@@ -16,12 +16,10 @@
  */
 package org.apache.jackrabbit.spi.commons.namespace;
 
-import javax.jcr.NamespaceException;
-import java.util.Properties;
-import java.util.Map;
 import java.util.HashMap;
-import java.util.Set;
-import java.util.Iterator;
+import java.util.Map;
+
+import javax.jcr.NamespaceException;
 
 /**
  * A Simple Namespace Mapping table. Mappings can be added
@@ -31,10 +29,10 @@
 public class NamespaceMapping implements NamespaceResolver {
 
     /** local uris */
-    private final Properties prefixToURI = new Properties();
+    private final Map<String, String> prefixToURI = new HashMap<String, String>();
 
     /** local prefix */
-    private final Properties URIToPrefix = new Properties();
+    private final Map<String, String> URIToPrefix = new HashMap<String, String>();
 
     /** base */
     private final NamespaceResolver base;
@@ -45,6 +43,7 @@
 
     /**
      * Constructor
+     * @param base fallback resolver
      */
     public NamespaceMapping(NamespaceResolver base) {
         this.base = base;
@@ -56,7 +55,7 @@
      */
     public String getPrefix(String uri) throws NamespaceException {
         if (URIToPrefix.containsKey(uri)) {
-            return URIToPrefix.getProperty(uri);
+            return URIToPrefix.get(uri);
         } else if (base == null) {
             throw new NamespaceException("No prefix for URI '" + uri + "' declared.");
         } else {
@@ -69,7 +68,7 @@
      */
     public String getURI(String prefix) throws NamespaceException {
         if (prefixToURI.containsKey(prefix)) {
-            return prefixToURI.getProperty(prefix);
+            return prefixToURI.get(prefix);
         } else if (base == null) {
             throw new NamespaceException("No URI for prefix '" + prefix + "' declared.");
         } else {
@@ -79,6 +78,8 @@
 
     /**
      * Returns true if prefix is already mapped to some URI. Returns false otherwise.
+     * @param prefix prefix to check
+     * @return <code>true</code> if prefix is mapped
      */
     public boolean hasPrefix(String prefix) {
         return prefixToURI.containsKey(prefix);
@@ -87,9 +88,9 @@
     /**
      * Set a prefix == URI one-to-one mapping
      *
-     * @param prefix
-     * @param uri
-     * @throws NamespaceException
+     * @param prefix prefix to map
+     * @param uri uri to map
+     * @throws NamespaceException if an error occurs
      */
     public void setMapping(String prefix, String uri) throws NamespaceException {
         if (prefix == null) {
@@ -115,8 +116,8 @@
      * The returned Map is a copy of the internal Map.
      * @return Map
      */
-    public Map getPrefixToURIMapping() {
-        return new HashMap(prefixToURI);
+    public Map<String, String> getPrefixToURIMapping() {
+        return new HashMap<String, String>(prefixToURI);
     }
 
     /**
@@ -124,15 +125,12 @@
      * The returned Map is a copy of the internal Map.
      * @return Map
      */
-    public Map getURIToPrefixMapping() {
-        return new HashMap(URIToPrefix);
+    public Map<String, String> getURIToPrefixMapping() {
+        return new HashMap<String, String>(URIToPrefix);
     }
 
-     /**
-     * Override equals()
-      *
-     * @param obj
-     * @return boolean
+    /**
+     * {@inheritDoc}
      */
     public boolean equals(Object obj) {
         if (this == obj) {
@@ -153,11 +151,9 @@
      */
     public String toString() {
         String s = "";
-        Set mapping = prefixToURI.entrySet();
-        for (Iterator i = mapping.iterator(); i.hasNext();) {
-            Map.Entry entry = (Map.Entry) i.next();
-            String prefix = (String) entry.getKey();
-            String uri = (String) entry.getValue();
+        for (Map.Entry<String, String> entry: prefixToURI.entrySet()) {
+            String prefix = entry.getKey();
+            String uri = entry.getValue();
             s += "'" + prefix + "' == '" + uri + "'\n";
         }
         return s;

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefDiff.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefDiff.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefDiff.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefDiff.java Wed Jun 17 20:21:54 2009
@@ -22,6 +22,8 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
+import java.util.Map;
 
 import javax.jcr.PropertyType;
 
@@ -30,6 +32,7 @@
 import org.apache.jackrabbit.spi.QNodeDefinition;
 import org.apache.jackrabbit.spi.QNodeTypeDefinition;
 import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.QValueConstraint;
 
 /**
  * A <code>NodeTypeDefDiff</code> represents the result of the comparison of
@@ -100,11 +103,13 @@
     private final QNodeTypeDefinition newDef;
     private int type;
 
-    private final List propDefDiffs = new ArrayList();
-    private final List childNodeDefDiffs = new ArrayList();
+    private final List<PropDefDiff> propDefDiffs = new ArrayList<PropDefDiff>();
+    private final List<ChildNodeDefDiff> childNodeDefDiffs = new ArrayList<ChildNodeDefDiff>();
 
     /**
      * Constructor
+     * @param oldDef old definition
+     * @param newDef new definition
      */
     private NodeTypeDefDiff(QNodeTypeDefinition oldDef, QNodeTypeDefinition newDef) {
         this.oldDef = oldDef;
@@ -154,9 +159,9 @@
     }
 
     /**
-     * @param oldDef
-     * @param newDef
-     * @return
+     * @param oldDef old definition
+     * @param newDef new definition
+     * @return the diff
      */
     public static NodeTypeDefDiff create(QNodeTypeDefinition oldDef, QNodeTypeDefinition newDef) {
         if (oldDef == null || newDef == null) {
@@ -169,28 +174,28 @@
     }
 
     /**
-     * @return
+     * @return <code>true</code> if modified
      */
     public boolean isModified() {
         return type != NONE;
     }
 
     /**
-     * @return
+     * @return <code>true</code> if trivial
      */
     public boolean isTrivial() {
         return type == TRIVIAL;
     }
 
     /**
-     * @return
+     * @return <code>true</code> if minor
      */
     public boolean isMinor() {
         return type == MINOR;
     }
 
     /**
-     * @return
+     * @return <code>true</code> if major
      */
     public boolean isMajor() {
         return type == MAJOR;
@@ -215,21 +220,21 @@
     }
 
     /**
-     * @return
+     * @return <code>true</code> if mixin diff
      */
     public int mixinFlagDiff() {
         return oldDef.isMixin() != newDef.isMixin() ? MAJOR : NONE;
     }
 
     /**
-     * @return
+     * @return <code>true</code> if supertypes diff
      */
     public int supertypesDiff() {
         return !Arrays.equals(oldDef.getSupertypes(), newDef.getSupertypes()) ? MAJOR : NONE;
     }
 
     /**
-     * @return
+     * @return diff type
      */
     private int buildPropDefDiffs() {
         /**
@@ -239,15 +244,15 @@
 
         int maxType = NONE;
         QPropertyDefinition[] pda1 = oldDef.getPropertyDefs();
-        HashMap defs1 = new HashMap();
-        for (int i = 0; i < pda1.length; i++) {
-            defs1.put(pda1[i].getName(), pda1[i]);
+        Map<Name, QPropertyDefinition> defs1 = new HashMap<Name, QPropertyDefinition>();
+        for (QPropertyDefinition aPda1 : pda1) {
+            defs1.put(aPda1.getName(), aPda1);
         }
 
         QPropertyDefinition[] pda2 = newDef.getPropertyDefs();
-        HashMap defs2 = new HashMap();
-        for (int i = 0; i < pda2.length; i++) {
-            defs2.put(pda2[i].getName(), pda2[i]);
+        Map<Name, QPropertyDefinition> defs2 = new HashMap<Name, QPropertyDefinition>();
+        for (QPropertyDefinition aPda2 : pda2) {
+            defs2.put(aPda2.getName(), aPda2);
         }
 
         /**
@@ -257,8 +262,8 @@
         Iterator iter = defs1.keySet().iterator();
         while (iter.hasNext()) {
             Name name = (Name) iter.next();
-            QPropertyDefinition def1 = (QPropertyDefinition) defs1.get(name);
-            QPropertyDefinition def2 = (QPropertyDefinition) defs2.get(name);
+            QPropertyDefinition def1 = defs1.get(name);
+            QPropertyDefinition def2 = defs2.get(name);
             PropDefDiff diff = new PropDefDiff(def1, def2);
             if (diff.getType() > maxType) {
                 maxType = diff.getType();
@@ -274,7 +279,7 @@
         iter = defs2.keySet().iterator();
         while (iter.hasNext()) {
             Name name = (Name) iter.next();
-            QPropertyDefinition def = (QPropertyDefinition) defs2.get(name);
+            QPropertyDefinition def = defs2.get(name);
             PropDefDiff diff = new PropDefDiff(null, def);
             if (diff.getType() > maxType) {
                 maxType = diff.getType();
@@ -286,7 +291,7 @@
     }
 
     /**
-     * @return
+     * @return diff type
      */
     private int buildChildNodeDefDiffs() {
         /**
@@ -296,15 +301,15 @@
 
         int maxType = NONE;
         QNodeDefinition[] cnda1 = oldDef.getChildNodeDefs();
-        HashMap defs1 = new HashMap();
-        for (int i = 0; i < cnda1.length; i++) {
-            defs1.put(cnda1[i].getName(), cnda1[i]);
+        Map<Name, QNodeDefinition> defs1 = new HashMap<Name, QNodeDefinition>();
+        for (QNodeDefinition aCnda1 : cnda1) {
+            defs1.put(aCnda1.getName(), aCnda1);
         }
 
         QNodeDefinition[] cnda2 = newDef.getChildNodeDefs();
-        HashMap defs2 = new HashMap();
-        for (int i = 0; i < cnda2.length; i++) {
-            defs2.put(cnda2[i].getName(), cnda2[i]);
+        Map<Name, QNodeDefinition> defs2 = new HashMap<Name, QNodeDefinition>();
+        for (QNodeDefinition aCnda2 : cnda2) {
+            defs2.put(aCnda2.getName(), aCnda2);
         }
 
         /**
@@ -314,8 +319,8 @@
         Iterator iter = defs1.keySet().iterator();
         while (iter.hasNext()) {
             Name name = (Name) iter.next();
-            QNodeDefinition def1 = (QNodeDefinition) defs1.get(name);
-            QNodeDefinition def2 = (QNodeDefinition) defs2.get(name);
+            QNodeDefinition def1 = defs1.get(name);
+            QNodeDefinition def2 = defs2.get(name);
             ChildNodeDefDiff diff = new ChildNodeDefDiff(def1, def2);
             if (diff.getType() > maxType) {
                 maxType = diff.getType();
@@ -331,7 +336,7 @@
         iter = defs2.keySet().iterator();
         while (iter.hasNext()) {
             Name name = (Name) iter.next();
-            QNodeDefinition def = (QNodeDefinition) defs2.get(name);
+            QNodeDefinition def = defs2.get(name);
             ChildNodeDefDiff diff = new ChildNodeDefDiff(null, def);
             if (diff.getType() > maxType) {
                 maxType = diff.getType();
@@ -361,7 +366,7 @@
         return result;
     }
 
-    private String toString(List childItemDefDiffs) {
+    private String toString(List<? extends ChildItemDefDiff> childItemDefDiffs) {
         String result = "";
         for (Iterator iter = childItemDefDiffs.iterator(); iter.hasNext();) {
             ChildItemDefDiff propDefDiff = (ChildItemDefDiff) iter.next();
@@ -520,15 +525,15 @@
                  * check if valueConstraints were made more restrictive
                  * (constraints are ORed)
                  */
-                String[] vca1 = getOldDef().getValueConstraints();
-                HashSet set1 = new HashSet();
-                for (int i = 0; i < vca1.length; i++) {
-                    set1.add(vca1[i]);
+                QValueConstraint[] vca1 = getOldDef().getValueConstraints();
+                Set<String> set1 = new HashSet<String>();
+                for (QValueConstraint aVca1 : vca1) {
+                    set1.add(aVca1.getString());
                 }
-                String[] vca2 = getNewDef().getValueConstraints();
-                HashSet set2 = new HashSet();
-                for (int i = 0; i < vca2.length; i++) {
-                    set2.add(vca2[i]);
+                QValueConstraint[] vca2 = getNewDef().getValueConstraints();
+                Set<String> set2 = new HashSet<String>();
+                for (QValueConstraint aVca2 : vca2) {
+                    set2.add(aVca2.getString());
                 }
 
                 if (set1.isEmpty() && !set2.isEmpty()) {
@@ -603,8 +608,8 @@
                 // no need to check defaultPrimaryType (TRIVIAL change)
 
                 if (type == TRIVIAL) {
-                    List l1 = Arrays.asList(getOldDef().getRequiredPrimaryTypes());
-                    List l2 = Arrays.asList(getNewDef().getRequiredPrimaryTypes());
+                    List<Name> l1 = Arrays.asList(getOldDef().getRequiredPrimaryTypes());
+                    List<Name> l2 = Arrays.asList(getNewDef().getRequiredPrimaryTypes());
                     if (!l1.equals(l2)) {
                         if (l1.containsAll(l2)) {
                             // removed requiredPrimaryType (MINOR change)

Added: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefinitionFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefinitionFactory.java?rev=785777&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefinitionFactory.java (added)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefinitionFactory.java Wed Jun 17 20:21:54 2009
@@ -0,0 +1,187 @@
+/*
+ * 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.spi.commons.nodetype;
+
+import java.util.List;
+import java.util.Collection;
+import java.util.ArrayList;
+
+import javax.jcr.nodetype.NodeTypeManager;
+import javax.jcr.nodetype.NodeTypeDefinition;
+import javax.jcr.nodetype.NodeDefinition;
+import javax.jcr.nodetype.PropertyDefinition;
+import javax.jcr.nodetype.NodeTypeTemplate;
+import javax.jcr.nodetype.NodeDefinitionTemplate;
+import javax.jcr.nodetype.PropertyDefinitionTemplate;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.NamespaceException;
+import javax.jcr.Value;
+
+import org.apache.jackrabbit.spi.QNodeTypeDefinition;
+import org.apache.jackrabbit.spi.QNodeDefinition;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QValueConstraint;
+import org.apache.jackrabbit.spi.QValue;
+import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
+import org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver;
+import org.apache.jackrabbit.spi.commons.nodetype.constraint.ValueConstraint;
+import org.apache.jackrabbit.spi.commons.value.QValueValue;
+
+/**
+ * <code>NodeTypeDefinitionFactory</code> can be used to convert the qualified
+ * node type definitions to JCR {@link NodeTypeDefinition}s.
+ */
+public class NodeTypeDefinitionFactory {
+
+    private final NodeTypeManager ntMgr;
+
+    private final NamePathResolver resolver;
+
+    /**
+     * Creates a new node type definition factory that operates on the given
+     * sesion to create the templates.
+     *
+     * @param session repository session
+     * @throws RepositoryException if an error occurs
+     */
+    public NodeTypeDefinitionFactory(Session session)
+            throws RepositoryException {
+        this.ntMgr = session.getWorkspace().getNodeTypeManager();
+        this.resolver = new DefaultNamePathResolver(session);
+    }
+
+    /**
+     * Create a new node type definitions from a qualified ones.
+     *
+     * @param defs the qualified node type definitions
+     * @return the JCR node type definitions
+     * @throws RepositoryException if an error occurs
+     */
+    public List<NodeTypeDefinition> create(Collection<QNodeTypeDefinition> defs)
+            throws RepositoryException {
+        List<NodeTypeDefinition> list = new ArrayList<NodeTypeDefinition>(defs.size());
+        for (QNodeTypeDefinition qNtd: defs) {
+            list.add(create(qNtd));
+        }
+        return list;
+    }
+
+    /**
+     * Create a new node type definition from a qualified one.
+     *
+     * @param qNtd the qualified node type definition
+     * @return the JCR node type definition
+     * @throws RepositoryException if an error occurs
+     */
+    @SuppressWarnings("unchecked")
+    public NodeTypeDefinition create(QNodeTypeDefinition qNtd)
+            throws RepositoryException {
+        NodeTypeTemplate nt = ntMgr.createNodeTypeTemplate();
+        nt.setName(resolver.getJCRName(qNtd.getName()));
+        nt.setDeclaredSuperTypeNames(getJCRNames(qNtd.getSupertypes()));
+        nt.setAbstract(qNtd.isAbstract());
+        nt.setMixin(qNtd.isMixin());
+        nt.setOrderableChildNodes(qNtd.hasOrderableChildNodes());
+        nt.setPrimaryItemName(resolver.getJCRName(qNtd.getPrimaryItemName()));
+        nt.setQueryable(qNtd.isQueryable());
+        List nodeDefs = nt.getNodeDefinitionTemplates();
+        for (QNodeDefinition qNd: qNtd.getChildNodeDefs()) {
+            nodeDefs.add(create(qNd));
+        }
+        List propDefs = nt.getPropertyDefinitionTemplates();
+        for (QPropertyDefinition qPd: qNtd.getPropertyDefs()) {
+            propDefs.add(create(qPd));
+        }
+        return nt;
+    }
+
+    /**
+     * Create a new node definition from a qualified one.
+     *
+     * @param qNd the qualified node definition
+     * @return the JCR node definition
+     * @throws RepositoryException if an error occurs
+     */
+    public NodeDefinition create(QNodeDefinition qNd)
+            throws RepositoryException {
+        NodeDefinitionTemplate nt = ntMgr.createNodeDefinitionTemplate();
+        nt.setName(resolver.getJCRName(qNd.getName()));
+        nt.setAutoCreated(qNd.isAutoCreated());
+        nt.setMandatory(qNd.isMandatory());
+        nt.setOnParentVersion(qNd.getOnParentVersion());
+        nt.setProtected(qNd.isProtected());
+        nt.setSameNameSiblings(qNd.allowsSameNameSiblings());
+        nt.setDefaultPrimaryTypeName(resolver.getJCRName(qNd.getDefaultPrimaryType()));
+        nt.setRequiredPrimaryTypeNames(getJCRNames(qNd.getRequiredPrimaryTypes()));
+        return nt;
+    }
+
+    /**
+     * Create a new property definition from a qualified one.
+     *
+     * @param qPd the qualified propert definition
+     * @return the JCR property definition
+     * @throws RepositoryException if an error occurs
+     */
+    public PropertyDefinition create(QPropertyDefinition qPd) throws RepositoryException {
+        PropertyDefinitionTemplate pt = ntMgr.createPropertyDefinitionTemplate();
+        pt.setName(resolver.getJCRName(qPd.getName()));
+        pt.setAutoCreated(qPd.isAutoCreated());
+        pt.setMandatory(qPd.isMandatory());
+        pt.setOnParentVersion(qPd.getOnParentVersion());
+        pt.setProtected(qPd.isProtected());
+        pt.setMultiple(qPd.isMultiple());
+        pt.setFullTextSearchable(qPd.isFullTextSearchable());
+        pt.setValueConstraints(createValueConstraints(qPd.getRequiredType(), qPd.getValueConstraints()));
+        pt.setAvailableQueryOperators(qPd.getAvailableQueryOperators());
+        pt.setDefaultValues(createValues(qPd.getDefaultValues()));
+        return pt;
+    }
+
+    private String[] getJCRNames(Name[] names) throws NamespaceException {
+        String[] ret = new String[names.length];
+        for (int i=0; i<names.length; i++) {
+            ret[i] = resolver.getJCRName(names[i]);
+        }
+        return ret;
+    }
+
+    private String[] createValueConstraints(int type, QValueConstraint[] qv)
+            throws RepositoryException {
+        String[] ret = new String[qv.length];
+        for (int i=0; i<ret.length; i++) {
+            try {
+                ValueConstraint c = ValueConstraint.create(type, qv[i].getString());
+                ret[i] = c.getDefinition(resolver);
+            } catch (InvalidConstraintException e) {
+                throw new RepositoryException("Internal error while converting value constraints.", e);
+            }
+        }
+        return ret;
+    }
+
+    private Value[] createValues(QValue[] qv) {
+        Value[] ret = new Value[qv.length];
+        for (int i=0; i<ret.length; i++) {
+            ret[i] = new QValueValue(qv[i], resolver);
+        }
+        return ret;
+    }
+
+}
\ No newline at end of file

Propchange: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefinitionFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeDefinitionFactory.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev Url

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeTemplateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeTemplateImpl.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeTemplateImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeTypeTemplateImpl.java Wed Jun 17 20:21:54 2009
@@ -16,17 +16,15 @@
  */
 package org.apache.jackrabbit.spi.commons.nodetype;
 
-import org.apache.commons.collections.list.TypedList;
-
-import javax.jcr.nodetype.NodeTypeTemplate;
-import javax.jcr.nodetype.NodeTypeDefinition;
-import javax.jcr.nodetype.NodeDefinitionTemplate;
-import javax.jcr.nodetype.PropertyDefinitionTemplate;
+import java.util.LinkedList;
+import java.util.List;
 
 import javax.jcr.nodetype.NodeDefinition;
+import javax.jcr.nodetype.NodeDefinitionTemplate;
+import javax.jcr.nodetype.NodeTypeDefinition;
+import javax.jcr.nodetype.NodeTypeTemplate;
 import javax.jcr.nodetype.PropertyDefinition;
-import java.util.ArrayList;
-import java.util.List;
+import javax.jcr.nodetype.PropertyDefinitionTemplate;
 
 /**
  * A <code>NodeTypeTemplateImpl</code> ...
@@ -40,8 +38,8 @@
     private boolean queryable;
     private boolean mixin;
     private boolean orderableChildNodes;
-    private List nodeDefinitionTemplates;
-    private List propertyDefinitionTemplates;
+    private List<NodeDefinitionTemplate> nodeDefinitionTemplates;
+    private List<PropertyDefinitionTemplate> propertyDefinitionTemplates;
 
     /**
      * Package private constructor
@@ -66,15 +64,15 @@
         NodeDefinition[] nodeDefs = def.getDeclaredChildNodeDefinitions();
         if (nodeDefs != null) {
             List list = getNodeDefinitionTemplates();
-            for (int i = 0; i < nodeDefs.length; i++) {
-                list.add(new NodeDefinitionTemplateImpl(nodeDefs[i]));
+            for (NodeDefinition nodeDef : nodeDefs) {
+                list.add(new NodeDefinitionTemplateImpl(nodeDef));
             }
         }
         PropertyDefinition[] propDefs = def.getDeclaredPropertyDefinitions();
         if (propDefs != null) {
             List list = getPropertyDefinitionTemplates();
-            for (int i = 0; i < propDefs.length; i++) {
-                list.add(new PropertyDefinitionTemplateImpl(propDefs[i]));
+            for (PropertyDefinition propDef : propDefs) {
+                list.add(new PropertyDefinitionTemplateImpl(propDef));
             }
         }
     }
@@ -127,8 +125,7 @@
      */
     public List getPropertyDefinitionTemplates() {
         if (propertyDefinitionTemplates == null) {
-            propertyDefinitionTemplates = TypedList.decorate(
-                    new ArrayList(), PropertyDefinitionTemplate.class);
+            propertyDefinitionTemplates = new LinkedList<PropertyDefinitionTemplate>();
         }
         return propertyDefinitionTemplates;
     }
@@ -138,8 +135,7 @@
      */
     public List getNodeDefinitionTemplates() {
         if (nodeDefinitionTemplates == null) {
-            nodeDefinitionTemplates = TypedList.decorate(
-                    new ArrayList(), NodeDefinitionTemplate.class);
+            nodeDefinitionTemplates = new LinkedList<NodeDefinitionTemplate>();
         }
         return nodeDefinitionTemplates;
     }
@@ -205,7 +201,7 @@
         if (propertyDefinitionTemplates == null) {
             return null;
         } else {
-            return (PropertyDefinition[]) propertyDefinitionTemplates.toArray(
+            return propertyDefinitionTemplates.toArray(
                     new PropertyDefinition[propertyDefinitionTemplates.size()]);
         }
     }
@@ -217,7 +213,7 @@
         if (nodeDefinitionTemplates == null) {
             return null;
         } else {
-            return (NodeDefinition[]) nodeDefinitionTemplates.toArray(
+            return nodeDefinitionTemplates.toArray(
                     new NodeDefinition[nodeDefinitionTemplates.size()]);
         }
     }

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/PropertyDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/PropertyDefinitionImpl.java?rev=785777&r1=785776&r2=785777&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/PropertyDefinitionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/PropertyDefinitionImpl.java Wed Jun 17 20:21:54 2009
@@ -16,20 +16,19 @@
  */
 package org.apache.jackrabbit.spi.commons.nodetype;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.ValueFactory;
+import javax.jcr.nodetype.PropertyDefinition;
+
 import org.apache.jackrabbit.spi.QPropertyDefinition;
 import org.apache.jackrabbit.spi.QValue;
-import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QValueConstraint;
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
-import org.apache.jackrabbit.spi.commons.nodetype.constraint.ValueConstraint;
 import org.apache.jackrabbit.spi.commons.value.ValueFormat;
-
-import javax.jcr.nodetype.PropertyDefinition;
-import javax.jcr.Value;
-import javax.jcr.RepositoryException;
-import javax.jcr.NamespaceException;
-import javax.jcr.ValueFactory;
+import org.apache.jackrabbit.spi.commons.nodetype.constraint.ValueConstraint;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class implements the <code>PropertyDefinition</code> interface.
@@ -50,8 +49,8 @@
      * Package private constructor
      *
      * @param propDef    property definition
-     * @param resolver
-     * @param valueFactory
+     * @param resolver the name-path resolver
+     * @param valueFactory a value factory
      */
     public PropertyDefinitionImpl(QPropertyDefinition propDef, NamePathResolver resolver,
                                   ValueFactory valueFactory) {
@@ -60,10 +59,10 @@
 
     /**
      *
-     * @param propDef
-     * @param ntMgr
-     * @param resolver
-     * @param valueFactory
+     * @param propDef underlying propdef
+     * @param ntMgr nodetype manager
+     * @param resolver name-path resolver
+     * @param valueFactory value factory (for default values)
      */
     public PropertyDefinitionImpl(QPropertyDefinition propDef,
                                   AbstractNodeTypeManager ntMgr,
@@ -110,21 +109,21 @@
      */
     public String[] getValueConstraints() {
         QPropertyDefinition pd = (QPropertyDefinition) itemDef;
-        String[] constraints = pd.getValueConstraints();
+        QValueConstraint[] constraints = pd.getValueConstraints();
         if (constraints == null || constraints.length == 0) {
             return new String[0];
         }
-        try {
-            String[] vca = new String[constraints.length];
-            for (int i = 0; i < constraints.length; i++) {
-                ValueConstraint constr = ValueConstraint.create(pd.getRequiredType(), constraints[i]);
-                vca[i] = constr.getDefinition(resolver);
+        String[] vca = new String[constraints.length];
+        for (int i = 0; i < constraints.length; i++) {
+            try {
+                ValueConstraint vc = ValueConstraint.create(pd.getRequiredType(), constraints[i].getString());
+                vca[i] = vc.getDefinition(resolver);
+            } catch (InvalidConstraintException e) {
+                log.warn("Internal error during conversion of constraint.", e);
+                vca[i] = constraints[i].getString();
             }
-            return vca;
-        } catch (InvalidConstraintException e) {
-            log.error("Invalid value constraint: " + e.getMessage());
-            return null;
         }
+        return vca;
     }
 
     /**
@@ -138,18 +137,7 @@
      * @see javax.jcr.nodetype.PropertyDefinition#getAvailableQueryOperators()
      */
     public String[] getAvailableQueryOperators() {
-        Name[] names = ((QPropertyDefinition) itemDef).getAvailableQueryOperators();
-        String[] aqos = new String[names.length];
-        for (int i = 0; i < names.length; i++) {
-            try {
-                aqos[i] = resolver.getJCRName(names[i]);
-            } catch (NamespaceException e) {
-                // should not occure. fallback
-                log.warn(e.getMessage());
-                aqos[i] = names[i].toString();
-            }
-        }
-        return aqos;
+        return ((QPropertyDefinition) itemDef).getAvailableQueryOperators();
     }
 
     /**