You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2012/09/13 16:58:29 UTC

svn commit: r1384354 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/ oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ oak-jcr/src/test/resources/org/ oak-jcr/src/test/resources/org/apache/ oak-jcr/src/test...

Author: mduerig
Date: Thu Sep 13 14:58:28 2012
New Revision: 1384354

URL: http://svn.apache.org/viewvc?rev=1384354&view=rev
Log:
OAK-6: Setup integration tests and TCK tests
 import test node types from CND

Added:
    jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/
    jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/
    jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/jackrabbit/
    jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/jackrabbit/oak/
    jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/jackrabbit/oak/jcr/
    jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/jackrabbit/oak/jcr/test_nodetypes.cnd   (with props)
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java?rev=1384354&r1=1384353&r2=1384354&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java Thu Sep 13 14:58:28 2012
@@ -34,6 +34,7 @@ import javax.jcr.nodetype.NodeType;
 import javax.jcr.nodetype.NodeTypeDefinition;
 import javax.jcr.nodetype.NodeTypeExistsException;
 import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.nodetype.NodeTypeManager;
 import javax.jcr.nodetype.NodeTypeTemplate;
 import javax.jcr.nodetype.PropertyDefinition;
 import javax.jcr.version.OnParentVersionAction;
@@ -42,6 +43,7 @@ import javax.security.auth.Subject;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefReader;
+import org.apache.jackrabbit.commons.cnd.ParseException;
 import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.ContentSession;
@@ -121,40 +123,7 @@ public class NodeTypeManagerImpl extends
                     try {
                         InputStream stream = NodeTypeManagerImpl.class.getResourceAsStream("builtin_nodetypes.cnd");
                         try {
-                            CompactNodeTypeDefReader<NodeTypeTemplate, Map<String, String>> reader =
-                                    new CompactNodeTypeDefReader<NodeTypeTemplate, Map<String, String>>(
-                                            new InputStreamReader(stream, "UTF-8"), null, new DefBuilderFactory());
-                            Map<String, NodeTypeTemplate> templates = Maps.newHashMap();
-                            for (NodeTypeTemplate template : reader.getNodeTypeDefinitions()) {
-                                templates.put(template.getName(), template);
-                            }
-                            for (NodeTypeTemplate template : templates.values()) {
-                                if (!template.isMixin()
-                                        && !NT_BASE.equals(template.getName())) {
-                                    String[] supertypes =
-                                            template.getDeclaredSupertypeNames();
-                                    if (supertypes.length == 0) {
-                                        template.setDeclaredSuperTypeNames(
-                                                new String[] {NT_BASE});
-                                    } else {
-                                        // Check whether we need to add the implicit "nt:base" supertype
-                                        boolean needsNtBase = true;
-                                        for (String name : supertypes) {
-                                            if (!templates.get(name).isMixin()) {
-                                                needsNtBase = false;
-                                            }
-                                        }
-                                        if (needsNtBase) {
-                                            String[] withBase = new String[supertypes.length + 1];
-                                            withBase[0] = NT_BASE;
-                                            System.arraycopy(supertypes, 0, withBase, 1, supertypes.length);
-                                            template.setDeclaredSuperTypeNames(withBase);
-                                        }
-                                    }
-                                }
-                            }
-                            registerNodeTypes(templates.values().toArray(
-                                    new NodeTypeTemplate[templates.size()]), true);
+                            registerNodeTypes(NodeTypeManagerImpl.this, new InputStreamReader(stream, "UTF-8"));
                         } finally {
                             stream.close();
                         }
@@ -168,6 +137,55 @@ public class NodeTypeManagerImpl extends
         }
     }
 
+    /**
+     * Utility method for registering node types from a CND format.
+     * @param nodeTypeManager  mode type manager where the node types are registered.
+     * @param cnd  reader for the CND
+     * @throws ParseException  if parsing the CND fails
+     * @throws RepositoryException  if registering the node types fails
+     */
+    public static void registerNodeTypes(NodeTypeManager nodeTypeManager, InputStreamReader cnd)
+            throws ParseException, RepositoryException {
+        CompactNodeTypeDefReader<NodeTypeTemplate, Map<String, String>> reader =
+                new CompactNodeTypeDefReader<NodeTypeTemplate, Map<String, String>>(
+                        cnd, null, new DefBuilderFactory());
+        Map<String, NodeTypeTemplate> templates = Maps.newHashMap();
+        for (NodeTypeTemplate template : reader.getNodeTypeDefinitions()) {
+            templates.put(template.getName(), template);
+        }
+        for (NodeTypeTemplate template : templates.values()) {
+            if (!template.isMixin()
+                    && !NT_BASE.equals(template.getName())) {
+                String[] supertypes =
+                        template.getDeclaredSupertypeNames();
+                if (supertypes.length == 0) {
+                    template.setDeclaredSuperTypeNames(
+                            new String[] {NT_BASE});
+                } else {
+                    // Check whether we need to add the implicit "nt:base" supertype
+                    boolean needsNtBase = true;
+                    for (String name : supertypes) {
+                        NodeTypeDefinition st = templates.get(name);
+                        if (st == null) {
+                            st = nodeTypeManager.getNodeType(name);
+                        }
+                        if (st != null && !st.isMixin()) {
+                            needsNtBase = false;
+                        }
+                    }
+                    if (needsNtBase) {
+                        String[] withBase = new String[supertypes.length + 1];
+                        withBase[0] = NT_BASE;
+                        System.arraycopy(supertypes, 0, withBase, 1, supertypes.length);
+                        template.setDeclaredSuperTypeNames(withBase);
+                    }
+                }
+            }
+        }
+        nodeTypeManager.registerNodeTypes(templates.values().toArray(
+                new NodeTypeTemplate[templates.size()]), true);
+    }
+
     @Override
     protected Tree getTypes() {
         return session.getCurrentRoot().getTree(NODE_TYPES_PATH);

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java?rev=1384354&r1=1384353&r2=1384354&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java Thu Sep 13 14:58:28 2012
@@ -18,6 +18,8 @@ package org.apache.jackrabbit.oak.jcr;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.Calendar;
 
 import javax.jcr.Node;
@@ -25,14 +27,13 @@ import javax.jcr.PathNotFoundException;
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.Value;
 import javax.jcr.ValueFactory;
-import javax.jcr.nodetype.NodeDefinitionTemplate;
 import javax.jcr.nodetype.NodeTypeManager;
-import javax.jcr.nodetype.NodeTypeTemplate;
-import javax.jcr.nodetype.PropertyDefinitionTemplate;
-import javax.jcr.version.OnParentVersionAction;
 
 import org.apache.jackrabbit.commons.JcrUtils;
+import org.apache.jackrabbit.commons.cnd.ParseException;
+import org.apache.jackrabbit.oak.plugins.type.NodeTypeManagerImpl;
 import org.apache.jackrabbit.value.BinaryValue;
 
 public class TestContentLoader {
@@ -42,106 +43,37 @@ public class TestContentLoader {
      */
     private static final String ENCODING = "UTF-8";
 
-    public void loadTestContent(Session session) throws RepositoryException, IOException {
+    public void loadTestContent(Session session) throws RepositoryException, IOException, ParseException {
         session.getWorkspace().getNamespaceRegistry().registerNamespace(
                 "test", "http://www.apache.org/jackrabbit/test");
 
-        NodeTypeManager ntm = session.getWorkspace().getNodeTypeManager();
-
-        // TEST NODE TYPES (in Jackrabbit-core: imported from XML file using JackrabbitNodeTypeManager)
-
-        // test:setProperty
-        {
-            NodeTypeTemplate nttmpl = ntm.createNodeTypeTemplate();
-            nttmpl.setName("test:setProperty");
-            nttmpl.setDeclaredSuperTypeNames(new String[] { "nt:base", "mix:referenceable" });
-
-            NodeDefinitionTemplate ndtmpl = ntm.createNodeDefinitionTemplate();
-            ndtmpl.setName("*");
-            ndtmpl.setRequiredPrimaryTypeNames(new String[] { "test:setProperty" });
-            ndtmpl.setOnParentVersion(OnParentVersionAction.COPY);
-
-            nttmpl.getNodeDefinitionTemplates().add(ndtmpl);
-
-            PropertyDefinitionTemplate pdtmpl = ntm.createPropertyDefinitionTemplate();
-            pdtmpl.setName("*");
-            pdtmpl.setOnParentVersion(OnParentVersionAction.COPY);
-
-            nttmpl.getPropertyDefinitionTemplates().add(pdtmpl);
-
-            pdtmpl = ntm.createPropertyDefinitionTemplate();
-            pdtmpl.setName("*");
-            pdtmpl.setMultiple(true);
-            pdtmpl.setOnParentVersion(OnParentVersionAction.COPY);
-
-            nttmpl.getPropertyDefinitionTemplates().add(pdtmpl);
-
-            ntm.registerNodeType(nttmpl, true);
-        }
-
-        // test:canSetProperty
-        // TODO: add all property definitions from jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/test-nodetypes.xml
-        {
-            NodeTypeTemplate nttmpl = ntm.createNodeTypeTemplate();
-            nttmpl.setName("test:canSetProperty");
-            nttmpl.setDeclaredSuperTypeNames(new String[] { "nt:base" });
-
-            // add property definitions
-
-            PropertyDefinitionTemplate pdtmpl = ntm.createPropertyDefinitionTemplate();
-            pdtmpl.setName("String");
-            pdtmpl.setRequiredType(PropertyType.STRING);
-            pdtmpl.setOnParentVersion(OnParentVersionAction.COPY);
-            nttmpl.getPropertyDefinitionTemplates().add(pdtmpl);
-
-            pdtmpl = ntm.createPropertyDefinitionTemplate();
-            pdtmpl.setName("StringConstraints");
-            pdtmpl.setRequiredType(PropertyType.STRING);
-            pdtmpl.setOnParentVersion(OnParentVersionAction.COPY);
-            pdtmpl.setValueConstraints(new String[] { "abc", "def", "ghi" });
-            nttmpl.getPropertyDefinitionTemplates().add(pdtmpl);
-
-            pdtmpl = ntm.createPropertyDefinitionTemplate();
-            pdtmpl.setName("StringMultipleConstraints");
-            pdtmpl.setMultiple(true);
-            pdtmpl.setRequiredType(PropertyType.STRING);
-            pdtmpl.setOnParentVersion(OnParentVersionAction.COPY);
-            nttmpl.getPropertyDefinitionTemplates().add(pdtmpl);
-
-            pdtmpl = ntm.createPropertyDefinitionTemplate();
-            pdtmpl.setName("Binary");
-            pdtmpl.setRequiredType(PropertyType.BINARY);
-            pdtmpl.setOnParentVersion(OnParentVersionAction.COPY);
-            nttmpl.getPropertyDefinitionTemplates().add(pdtmpl);
-
-            pdtmpl = ntm.createPropertyDefinitionTemplate();
-            pdtmpl.setName("BinaryConstraints");
-            pdtmpl.setRequiredType(PropertyType.BINARY);
-            pdtmpl.setOnParentVersion(OnParentVersionAction.COPY);
-            pdtmpl.setValueConstraints(new String[] { "(,100)" });
-            nttmpl.getPropertyDefinitionTemplates().add(pdtmpl);
-
-            pdtmpl = ntm.createPropertyDefinitionTemplate();
-            pdtmpl.setName("BinaryMultipleConstraints");
-            pdtmpl.setMultiple(true);
-            pdtmpl.setRequiredType(PropertyType.BINARY);
-            pdtmpl.setOnParentVersion(OnParentVersionAction.COPY);
-            pdtmpl.setValueConstraints(new String[] { "(,100)" });
-            nttmpl.getPropertyDefinitionTemplates().add(pdtmpl);
-
-            ntm.registerNodeType(nttmpl, true);
-        }
+        registerTestNodeTypes(session.getWorkspace().getNodeTypeManager());
 
         Node data = getOrAddNode(session.getRootNode(), "testdata");
         addPropertyTestData(getOrAddNode(data, "property"));
         addQueryTestData(getOrAddNode(data, "query"));
         addNodeTestData(getOrAddNode(data, "node"));
+        // TODO add lifecycle test data
+        // addLifecycleTestData(getOrAddNode(data, "lifecycle"));
         addExportTestData(getOrAddNode(data, "docViewTest"));
 
+        // TODO add retention test data
+        // Node conf = getOrAddNode(session.getRootNode(), "testconf");
+        // addRetentionTestData(getOrAddNode(conf, "retentionTest"));
+
         session.save();
     }
 
-    private Node getOrAddNode(Node node, String name) throws RepositoryException {
+    private static void registerTestNodeTypes(NodeTypeManager ntm) throws RepositoryException, ParseException, IOException {
+        InputStream stream = TestContentLoader.class.getResourceAsStream("test_nodetypes.cnd");
+        try {
+            NodeTypeManagerImpl.registerNodeTypes(ntm, new InputStreamReader(stream, "UTF-8"));
+        } finally {
+            stream.close();
+        }
+    }
+
+    private static Node getOrAddNode(Node node, String name) throws RepositoryException {
         try {
             return node.getNode(name);
         } catch (PathNotFoundException e) {
@@ -153,10 +85,10 @@ public class TestContentLoader {
      * Creates a boolean, double, long, calendar and a path property at the
      * given node.
      */
-    private void addPropertyTestData(Node node) throws RepositoryException {
+    private static void addPropertyTestData(Node node) throws RepositoryException {
         node.setProperty("boolean", true);
         node.setProperty("double", Math.PI);
-        node.setProperty("long", 90834953485278298l);
+        node.setProperty("long", 90834953485278298L);
         Calendar c = Calendar.getInstance();
         c.set(2005, 6, 18, 17, 30);
         node.setProperty("calendar", c);
@@ -165,11 +97,20 @@ public class TestContentLoader {
         node.setProperty("multi", new String[] { "one", "two", "three" });
     }
 
+    // TODO add retention test data
+    /**
+     * Creates a node with a RetentionPolicy
+     */
+    // private  void addRetentionTestData(Node node) throws RepositoryException {
+    //    RetentionPolicy rp = RetentionPolicyImpl.createRetentionPolicy("testRetentionPolicy", node.getSession());
+    //    node.getSession().getRetentionManager().setRetentionPolicy(node.getPath(), rp);
+    // }
+
     /**
      * Creates four nodes under the given node. Each node has a String property
      * named "prop1" with some content set.
      */
-    private void addQueryTestData(Node node) throws RepositoryException {
+    private static void addQueryTestData(Node node) throws RepositoryException {
         while (node.hasNode("node1")) {
             node.getNode("node1").remove();
         }
@@ -183,7 +124,7 @@ public class TestContentLoader {
      * Creates three nodes under the given node: one of type nt:resource and the
      * other nodes referencing it.
      */
-    private void addNodeTestData(Node node) throws RepositoryException, IOException {
+    private static void addNodeTestData(Node node) throws RepositoryException, IOException {
         if (node.hasNode("multiReference")) {
             node.getNode("multiReference").remove();
         }
@@ -202,24 +143,39 @@ public class TestContentLoader {
         resource.setProperty("jcr:data", new BinaryValue("Hello w\u00F6rld.".getBytes(ENCODING)));
         resource.setProperty("jcr:lastModified", Calendar.getInstance());
 
-        // TODO: re-add once we have referenceable nodes
-        // Node resReference = getOrAddNode(node, "reference");
-        // resReference.setProperty("ref", resource);
-        // // make this node itself referenceable
-        // resReference.addMixin("mix:referenceable");
-        //
-        // Node multiReference = node.addNode("multiReference");
-        // ValueFactory factory = node.getSession().getValueFactory();
-        // multiReference.setProperty("ref", new Value[] {
-        // factory.createValue(resource),
-        // factory.createValue(resReference)
-        // });
+        Node resReference = getOrAddNode(node, "reference");
+        resReference.setProperty("ref", resource);
+        // make this node itself referenceable
+        resReference.addMixin("mix:referenceable");
+
+        Node multiReference = node.addNode("multiReference");
+        ValueFactory factory = node.getSession().getValueFactory();
+        multiReference.setProperty("ref", new Value[] {
+            factory.createValue(resource),
+            factory.createValue(resReference)
+        });
 
         // NodeDefTest requires a test node with a mandatory child node
         JcrUtils.putFile(node, "testFile", "text/plain", new ByteArrayInputStream("Hello, World!".getBytes("UTF-8")));
     }
 
-    private void addExportTestData(Node node) throws RepositoryException, IOException {
+    // TODO add lifecycle test data
+    /**
+     * Creates a lifecycle policy node and another node with a lifecycle
+     * referencing that policy.
+     */
+    // private  void addLifecycleTestData(Node node) throws RepositoryException {
+    //    Node policy = getOrAddNode(node, "policy");
+    //    policy.addMixin(NodeType.MIX_REFERENCEABLE);
+    //    Node transitions = getOrAddNode(policy, "transitions");
+    //    Node transition = getOrAddNode(transitions, "identity");
+    //    transition.setProperty("from", "identity");
+    //    transition.setProperty("to", "identity");
+    //    Node lifecycle = getOrAddNode(node, "node");
+    //    ((NodeImpl) lifecycle).assignLifecyclePolicy(policy, "identity");
+    //}
+
+    private static void addExportTestData(Node node) throws RepositoryException, IOException {
         getOrAddNode(node, "invalidXmlName").setProperty("propName", "some text");
 
         // three nodes which should be serialized as xml text in docView export
@@ -245,7 +201,7 @@ public class TestContentLoader {
      * create nodes with following properties binary & single binary & multival
      * notbinary & single notbinary & multival
      */
-    private void addExportValues(Node node, String name) throws RepositoryException, IOException {
+    private static void addExportValues(Node node, String name) throws RepositoryException, IOException {
         String prefix = "valid";
         if (name.indexOf('<') != -1) {
             prefix = "invalid";

Added: jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/jackrabbit/oak/jcr/test_nodetypes.cnd
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/jackrabbit/oak/jcr/test_nodetypes.cnd?rev=1384354&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/jackrabbit/oak/jcr/test_nodetypes.cnd (added)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/jackrabbit/oak/jcr/test_nodetypes.cnd Thu Sep 13 14:58:28 2012
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ */
+
+<'test'='http://www.apache.org/jackrabbit/test'>
+
+[test:canAddChildNode]
+  + testChildWithDefaultType (nt:base) = nt:base
+  + testChildWithoutDefaultType (nt:base)
+
+[test:canSetProperty]
+  - BinaryMultipleConstraints (binary) multiple nofulltext noqueryorder < '(,100)'
+  - Boolean (boolean) nofulltext noqueryorder
+  - DateConstraints (date) nofulltext noqueryorder < '(1974-02-15T00:00:00.000Z,)'
+  - NameConstraints (name) nofulltext noqueryorder < 'abc'
+  - LongMultipleConstraints (long) multiple nofulltext noqueryorder < '(,100)'
+  - ReferenceMultipleConstraints (reference) multiple nofulltext noqueryorder < 'test:canSetProperty'
+  - StringMultiple (string) multiple nofulltext noqueryorder
+  - DoubleMultiple (double) multiple nofulltext noqueryorder
+  - DoubleConstraints (double) nofulltext noqueryorder < '(100,)'
+  - BinaryConstraints (binary) nofulltext noqueryorder < '(,100)'
+  - PathMultiple (path) multiple nofulltext noqueryorder
+  - Path (path) nofulltext noqueryorder
+  - StringMultipleConstraints (string) multiple nofulltext noqueryorder < 'abc', 'def', 'ghi'
+  - PathMultipleConstraints (path) multiple nofulltext noqueryorder < '/abc'
+  - DateMultiple (date) multiple nofulltext noqueryorder
+  - Binary (binary) nofulltext noqueryorder
+  - LongMultiple (long) multiple nofulltext noqueryorder
+  - LongConstraints (long) nofulltext noqueryorder < '(100,)'
+  - BooleanConstraints (boolean) nofulltext noqueryorder < 'true'
+  - BinaryMultiple (binary) multiple nofulltext noqueryorder
+  - Long (long) nofulltext noqueryorder
+  - StringConstraints (string) nofulltext noqueryorder < 'abc', 'def', 'ghi'
+  - Date (date) nofulltext noqueryorder
+  - ReferenceConstraints (reference) nofulltext noqueryorder < 'test:canSetProperty'
+  - Double (double) nofulltext noqueryorder
+  - NameMultipleConstraints (name) multiple nofulltext noqueryorder < 'abc'
+  - BooleanMultiple (boolean) multiple nofulltext noqueryorder
+  - Name (name) nofulltext noqueryorder
+  - PathConstraints (path) nofulltext noqueryorder < '/abc'
+  - String (string) nofulltext noqueryorder
+  - NameMultiple (name) multiple nofulltext noqueryorder
+  - BooleanMultipleConstraints (boolean) multiple nofulltext noqueryorder < 'true'
+  - DateMultipleConstraints (date) multiple nofulltext noqueryorder < '(,1974-02-15T00:00:00.000Z)'
+  - DoubleMultipleConstraints (double) multiple nofulltext noqueryorder < '(,100)'
+
+[test:refTargetNode] > mix:versionable
+  - * (undefined) nofulltext noqueryorder
+
+[test:sameNameSibsFalseChildNodeDefinition]
+  - * (undefined) nofulltext noqueryorder
+  + * (nt:base) = test:sameNameSibsFalseChildNodeDefinition compute
+
+[test:setProperty] > mix:referenceable
+  - test:multiProperty (undefined) multiple nofulltext noqueryorder
+  - * (undefined) nofulltext noqueryorder
+  + * (nt:base) = test:setProperty
+
+[test:setPropertyAssumingType]
+  - test:multiProperty (undefined) multiple nofulltext noqueryorder
+  - test:singleProperty (undefined) nofulltext noqueryorder
+  + * (nt:base) = test:setPropertyAssumingType
+
+[test:versionable] > mix:versionable
+  - test:initializeOnParentVersionProp (string) initialize nofulltext noqueryorder
+  - test:copyOnParentVersionProp (string) nofulltext noqueryorder
+  - test:abortOnParentVersionProp (string) abort nofulltext noqueryorder
+  - test:ignoreOnParentVersionProp (string) ignore nofulltext noqueryorder
+  - test:computeOnParentVersionProp (string) compute nofulltext noqueryorder
+  - test:versionOnParentVersionProp (string) version nofulltext noqueryorder
+  - * (undefined) nofulltext noqueryorder
+  + test:computeOnParentVersion (nt:base) = nt:unstructured compute
+  + test:initializeOnParentVersion (nt:base) = nt:unstructured initialize
+  + test:versionOnParentVersion (nt:base) = nt:unstructured version
+  + * (nt:base) = test:versionable
+  + test:ignoreOnParentVersion (nt:base) = nt:unstructured ignore
+  + test:abortOnParentVersion (nt:base) = nt:unstructured abort
+  + test:copyOnParentVersion (nt:base) = nt:unstructured

Propchange: jackrabbit/oak/trunk/oak-jcr/src/test/resources/org/apache/jackrabbit/oak/jcr/test_nodetypes.cnd
------------------------------------------------------------------------------
    svn:eol-style = native