You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2009/05/14 18:06:08 UTC

svn commit: r774832 - in /jackrabbit/trunk/jackrabbit-core/src: main/java/org/apache/jackrabbit/core/nodetype/ main/java/org/apache/jackrabbit/core/nodetype/compact/ main/java/org/apache/jackrabbit/core/nodetype/xml/ main/resources/org/apache/jackrabbi...

Author: stefan
Date: Thu May 14 16:06:07 2009
New Revision: 774832

URL: http://svn.apache.org/viewvc?rev=774832&view=rev
Log:
JCR-1591: JSR 283: NodeType Management (WIP...)
JCR-2091: Searchability settings in PropertyDefinition (WIP...)

Added:
    jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/nodetypes.dtd
Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDefDiff.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/compact/CompactNodeTypeDefReader.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/Constants.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeReader.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeWriter.java
    jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd
    jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_nodetypes.xml
    jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_ns_xml_nodetypes.xml

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDefDiff.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDefDiff.java?rev=774832&r1=774831&r2=774832&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDefDiff.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDefDiff.java Thu May 14 16:06:07 2009
@@ -132,7 +132,14 @@
                 type = tmpType;
             }
 
+            // check abstract flag (MAJOR modification)
+            tmpType = abstractFlagDiff();
+            if (tmpType > type) {
+                type = tmpType;
+            }
+
             // no need to check orderableChildNodes flag (TRIVIAL modification)
+            // no need to check queryable flag (TRIVIAL modification)
 
             // check property definitions
             tmpType = buildPropDefDiffs();
@@ -219,6 +226,13 @@
     /**
      * @return
      */
+    public int abstractFlagDiff() {
+        return oldDef.isAbstract() && !newDef.isAbstract() ? MAJOR : NONE;
+    }
+
+    /**
+     * @return
+     */
     public int supertypesDiff() {
         return !Arrays.equals(oldDef.getSupertypes(), newDef.getSupertypes()) ? MAJOR : NONE;
     }
@@ -535,6 +549,8 @@
                 }
 
                 // no need to check defaultValues (TRIVIAL change)
+                // no need to check availableQueryOperators (TRIVIAL change)
+                // no need to check queryOrderable (TRIVIAL change)
 
                 if (type == TRIVIAL) {
                     int t1 = getOldDef().getRequiredType();

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/compact/CompactNodeTypeDefReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/compact/CompactNodeTypeDefReader.java?rev=774832&r1=774831&r2=774832&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/compact/CompactNodeTypeDefReader.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/compact/CompactNodeTypeDefReader.java Thu May 14 16:06:07 2009
@@ -61,77 +61,98 @@
  * <p/>
  * The EBNF grammar of the compact node type definition:<br>
  * <pre>
- * cnd ::= ns_mapping* node_type_def+
+ *   Cnd ::= {NamespaceMapping | NodeTypeDef}
  *
- * ns_mapping ::= "&lt;" prefix "=" namespace "&gt;"
+ *   NamespaceMapping ::= '<' Prefix '=' Uri '>'
+ *   Prefix ::= String
+ *   Uri ::= String
  *
- * prefix ::= string
+ *   NodeTypeDef ::= NodeTypeName [Supertypes]
+ *                   [NodeTypeAttribute {NodeTypeAttribute}]
+ *                   {PropertyDef | ChildNodeDef}
  *
- * namespace ::= string
+ *   NodeTypeName ::= '[' String ']'
  *
- * node_type_def ::= node_type_name [super_types] [options] {property_def | node_def}
+ *   Supertypes ::= '>' (StringList | '?')
  *
- * node_type_name ::= "[" string "]"
+ *   Option ::= Orderable | Mixin | Abstract | NoQuery | PrimaryItem
  *
- * super_types ::= "&gt;" string_list
+ *   Orderable ::= ('orderable' | 'ord' | 'o') ['?']
  *
- * options ::= orderable_opt | mixin_opt | orderable_opt mixin_opt | mixin_opt orderable_opt
  *
- * orderable_opt ::= "orderable" | "ord" | "o"
+ *   Mixin ::= ('mixin' | 'mix' | 'm') ['?']
  *
- * mixin_opt ::= "mixin" | "mix" | "m"
+ *   Abstract ::= ('abstract' | 'abs' | 'a') ['?']
  *
- * property_def ::= "-" property_name [property_type_decl] [default_values] [attributes] [value_constraints]
+ *   NoQuery ::= ('noquery' | 'nq') ['?']
  *
- * property_name ::= string
+ *   PrimaryItem ::= ('primaryitem'| '!')(String | '?')
  *
- * property_type_decl ::= "(" property_type ")"
+ *   PropertyDef ::= PropertyName [PropertyType] [DefaultValues]
+ *                   [PropertyAttribute {PropertyAttribute}]
+ *                   [ValueConstraints]
  *
- * property_type ::= "STRING" | "String |"string" |
- *                   "BINARY" | "Binary" | "binary" |
- *                   "LONG" | "Long" | "long" |
- *                   "DOUBLE" | "Double" | "double" |
- *                   "BOOLEAN" | "Boolean" | "boolean" |
- *                   "DATE" | "Date" | "date" |
- *                   "NAME | "Name | "name |
- *                   "PATH" | "Path" | "path" |
- *                   "REFERENCE" | "Reference" | "reference" |
- *                   "UNDEFINED" | "Undefined" | "undefined" | "*"
+ *   PropertyName ::= '-' String
  *
+ *   PropertyType ::= '(' ('STRING' | 'BINARY' | 'LONG' | 'DOUBLE' |
+ *                         'BOOLEAN' | 'DATE' | 'NAME' | 'PATH' |
+ *                         'REFERENCE' | 'WEAKREFERENCE' |
+ *                         'DECIMAL' | 'URI' | 'UNDEFINED' | '*' |
+ *                         '?') ')'
  *
- * default_values ::= "=" string_list
+ *   DefaultValues ::= '=' (StringList | '?')
  *
- * value_constraints ::= "&lt;" string_list
+ *   ValueConstraints ::= '<' (StringList | '?')
  *
- * node_def ::= "+" node_name [required_types] [default_type] [attributes]
+ *   ChildNodeDef ::= NodeName [RequiredTypes] [DefaultType]
+ *                    [NodeAttribute {NodeAttribute}]
  *
- * node_name ::= string
+ *   NodeName ::= '+' String
  *
- * required_types ::= "(" string_list ")"
+ *   RequiredTypes ::= '(' (String_list | '?') ')'
  *
- * default_type ::= "=" string
+ *   DefaultType ::= '=' (String | '?')
  *
- * attributes ::= "primary" | "pri" | "!" |
- *                "autocreated" | "aut" | "a" |
- *                "mandatory" | "man" | "m" |
- *                "protected" | "pro" | "p" |
- *                "multiple" | "mul" | "*" |
- *                "COPY" | "Copy" | "copy" |
- *                "VERSION" | "Version" | "version" |
- *                "INITIALIZE" | "Initialize" | "initialize" |
- *                "COMPUTE" | "Compute" | "compute" |
- *                "IGNORE" | "Ignore" | "ignore" |
- *                "ABORT" | "Abort" | "abort"
+ *   PropertyAttribute ::= Autocreated | Mandatory | Protected |
+ *                         Opv | Multiple | QueryOps | NoFullText |
+ *                         NoQueryOrder
  *
- * string_list ::= string {"," string}
+ *   NodeAttribute ::= Autocreated | Mandatory | Protected |
+ *                     Opv | Sns
  *
- * string ::= quoted_string | unquoted_string
+ *   Autocreated ::= ('autocreated' | 'aut' | 'a' )['?']
  *
- * quoted_string :: = "'" unquoted_string "'"
+ *   Mandatory ::= ('mandatory' | 'man' | 'm') ['?']
  *
- * unquoted_string ::= [A-Za-z0-9:_]+
+ *   Protected ::= ('protected' | 'pro' | 'p') ['?']
+ *
+ *   Opv ::= 'COPY' | 'VERSION' | 'INITIALIZE' | 'COMPUTE' |
+ *          'IGNORE' | 'ABORT' | ('OPV' '?')
+ *
+ *   Multiple ::= ('multiple' | 'mul' | '*') ['?']
+ *
+ *   QueryOps ::= ('queryops' | 'qop')
+ *               (( ''' Operator { ',' Operator} ''' ) | '?')
+ *   Operator ::= '=' | '<>' | '<' | '<=' | '>' | '>=' | 'LIKE'
+ *
+ *   NoFullText ::= ('nofulltext' | 'nof') ['?']
+ *
+ *   NoQueryOrder ::= ('noqueryorder' | 'nqord') ['?']
+ *
+ *   Sns ::= ('sns' | '*') ['?']
+ *
+ *   StringList ::= String {',' String}
+ *   String ::= QuotedString | UnquotedString
+ *
+ *   QuotedString ::= SingleQuotedString | DoubleQuotedString
+ *
+ *   SingleQuotedString ::= ''' UnquotedString '''
+ *
+ *   DoubleQuotedString ::= '"' UnquotedString '"'
+ *   UnquotedString ::= XmlChar {XmlChar}
  * </pre>
  */
+
 public class CompactNodeTypeDefReader {
 
     /**

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/Constants.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/Constants.java?rev=774832&r1=774831&r2=774832&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/Constants.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/Constants.java Thu May 14 16:06:07 2009
@@ -36,6 +36,12 @@
     /** Name of the <code>isMixin</code> attribute. */
     String ISMIXIN_ATTRIBUTE = "isMixin";
 
+    /** Name of the <code>isQueryable</code> attribute. */
+    String ISQUERYABLE_ATTRIBUTE = "isQueryable";
+
+    /** Name of the <code>isAbstract</code> attribute. */
+    String ISABSTRACT_ATTRIBUTE = "isAbstract";
+
     /** Name of the <code>hasOrderableChildNodes</code> attribute. */
     String HASORDERABLECHILDNODES_ATTRIBUTE = "hasOrderableChildNodes";
 
@@ -78,6 +84,23 @@
     /** Name of the default value element. */
     String DEFAULTVALUE_ELEMENT = "defaultValue";
 
+    /** Name of the <code>isQueryOrderable</code> attribute. */
+    String ISQUERYORDERABLE_ATTRIBUTE = "isQueryOrderable";
+
+    /** Name of the <code>isFullTextSearchable</code> attribute. */
+    String ISFULLTEXTSEARCHABLE_ATTRIBUTE = "isFullTextSearchable";
+
+    /** Name of the <code>availableQueryOperators</code> attribute. */
+    String AVAILABLEQUERYOPERATORS_ATTRIBUTE = "availableQueryOperators";
+
+    String EQ_ENTITY = "OP_EQ";
+    String NE_ENTITY = "OP_NE";
+    String LT_ENTITY = "OP_LT";
+    String LE_ENTITY = "OP_LE";
+    String GT_ENTITY = "OP_GT";
+    String GE_ENTITY = "OP_GE";
+    String LIKE_ENTITY = "OP_LIKE";
+
     /** Name of the <code>multiple</code> attribute. */
     String MULTIPLE_ATTRIBUTE = "multiple";
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeReader.java?rev=774832&r1=774831&r2=774832&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeReader.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeReader.java Thu May 14 16:06:07 2009
@@ -38,6 +38,7 @@
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.NamespaceException;
+import javax.jcr.query.qom.QueryObjectModelConstants;
 import javax.jcr.version.OnParentVersionAction;
 import java.io.IOException;
 import java.io.InputStream;
@@ -145,6 +146,12 @@
         type.setOrderableChildNodes(Boolean.valueOf(
                 walker.getAttribute(Constants.HASORDERABLECHILDNODES_ATTRIBUTE))
                 .booleanValue());
+        type.setAbstract(Boolean.valueOf(
+                walker.getAttribute(Constants.ISABSTRACT_ATTRIBUTE))
+                .booleanValue());
+        type.setQueryable(Boolean.valueOf(
+                walker.getAttribute(Constants.ISQUERYABLE_ATTRIBUTE))
+                .booleanValue());
         String primaryItemName =
             walker.getAttribute(Constants.PRIMARYITEMNAME_ATTRIBUTE);
         if (primaryItemName != null && primaryItemName.length() > 0) {
@@ -220,6 +227,39 @@
         def.setMultiple(Boolean.valueOf(
                 walker.getAttribute(Constants.MULTIPLE_ATTRIBUTE))
                 .booleanValue());
+        def.setFullTextSearchable(Boolean.valueOf(
+                walker.getAttribute(Constants.ISFULLTEXTSEARCHABLE_ATTRIBUTE))
+                .booleanValue());
+        def.setQueryOrderable(Boolean.valueOf(
+                walker.getAttribute(Constants.ISQUERYORDERABLE_ATTRIBUTE))
+                .booleanValue());
+        String s = walker.getAttribute(Constants.AVAILABLEQUERYOPERATORS_ATTRIBUTE);
+        if (s != null && s.length() > 0) {
+            String[] ops = s.split(" ");
+            List queryOps = new ArrayList();
+            for (int i = 0; i < ops.length; i++) {
+                String op = ops[i].trim();
+                if (op.equals(Constants.EQ_ENTITY)) {
+                    queryOps.add(QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO);
+                } else if (op.equals(Constants.NE_ENTITY)) {
+                    queryOps.add(QueryObjectModelConstants.JCR_OPERATOR_NOT_EQUAL_TO);
+                } else if (op.equals(Constants.LT_ENTITY)) {
+                    queryOps.add(QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN);
+                } else if (op.equals(Constants.LE_ENTITY)) {
+                    queryOps.add(QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO);
+                } else if (op.equals(Constants.GT_ENTITY)) {
+                    queryOps.add(QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN);
+                } else if (op.equals(Constants.GE_ENTITY)) {
+                    queryOps.add(QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO);
+                } else if (op.equals(Constants.LIKE_ENTITY)) {
+                    queryOps.add(QueryObjectModelConstants.JCR_OPERATOR_LIKE);
+                } else {
+                    throw new InvalidNodeTypeDefException("'" + op + "' is not a valid query operator");
+                }
+            }
+            def.setAvailableQueryOperators((String[]) queryOps.toArray(new String[queryOps.size()]));
+
+        }
         def.setRequiredType(PropertyType.valueFromName(
                 walker.getAttribute(Constants.REQUIREDTYPE_ATTRIBUTE)));
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeWriter.java?rev=774832&r1=774831&r2=774832&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeWriter.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeWriter.java Thu May 14 16:06:07 2009
@@ -25,16 +25,20 @@
 import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
 import org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver;
+import org.apache.jackrabbit.spi.commons.query.qom.Operator;
 import org.apache.jackrabbit.spi.Name;
 
 import javax.jcr.NamespaceRegistry;
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.NamespaceException;
+import javax.jcr.query.qom.QueryObjectModelConstants;
 import javax.jcr.version.OnParentVersionAction;
 import javax.xml.parsers.ParserConfigurationException;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.List;
+import java.util.Arrays;
 
 /**
  * Node type definition writer. This class is used to write the
@@ -125,6 +129,10 @@
         builder.setAttribute(
                 Constants.ISMIXIN_ATTRIBUTE, def.isMixin());
         builder.setAttribute(
+                Constants.ISQUERYABLE_ATTRIBUTE, def.isQueryable());
+        builder.setAttribute(
+                Constants.ISABSTRACT_ATTRIBUTE, def.isAbstract());
+        builder.setAttribute(
                 Constants.HASORDERABLECHILDNODES_ATTRIBUTE,
                 def.hasOrderableChildNodes());
 
@@ -193,6 +201,42 @@
         builder.setAttribute(
                 Constants.MULTIPLE_ATTRIBUTE, def.isMultiple());
         builder.setAttribute(
+                Constants.ISFULLTEXTSEARCHABLE_ATTRIBUTE, def.isFullTextSearchable());
+        builder.setAttribute(
+                Constants.ISQUERYORDERABLE_ATTRIBUTE, def.isQueryOrderable());
+        // TODO do properly...
+        String[] qops = def.getAvailableQueryOperators();
+        if (qops != null && qops.length > 0) {
+            List ops = Arrays.asList(qops);
+            List defaultOps = Arrays.asList(Operator.getAllQueryOperators());
+            if (!ops.containsAll(defaultOps)) {
+                StringBuffer sb = new StringBuffer();
+                for (int i = 0; i < qops.length; i++) {
+                    if (i > 0) {
+                        sb.append(' ');
+                    }
+                    if (qops[i].equals(QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO)) {
+                        sb.append(Constants.EQ_ENTITY);
+                    } else if (qops[i].equals(QueryObjectModelConstants.JCR_OPERATOR_NOT_EQUAL_TO)) {
+                        sb.append(Constants.NE_ENTITY);
+                    } else if (qops[i].equals(QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN)) {
+                        sb.append(Constants.GT_ENTITY);
+                    } else if (qops[i].equals(QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO)) {
+                        sb.append(Constants.GE_ENTITY);
+                    } else if (qops[i].equals(QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN)) {
+                        sb.append(Constants.LT_ENTITY);
+                    } else if (qops[i].equals(QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO)) {
+                        sb.append(Constants.LE_ENTITY);
+                    } else if (qops[i].equals(QueryObjectModelConstants.JCR_OPERATOR_LIKE)) {
+                        sb.append(Constants.LIKE_ENTITY);
+                    }
+                }
+                builder.setAttribute(
+                        Constants.AVAILABLEQUERYOPERATORS_ATTRIBUTE, sb.toString());
+            }
+        }
+
+        builder.setAttribute(
                 Constants.REQUIREDTYPE_ATTRIBUTE,
                 PropertyType.nameFromValue(def.getRequiredType()));
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd?rev=774832&r1=774831&r2=774832&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd Thu May 14 16:06:07 2009
@@ -32,6 +32,11 @@
   orderable
   - * (undefined) multiple
   - * (undefined)
+  + * (nt:base) = nt:unstructured sns version
+[nt:unstructured]
+  orderable
+  - * (undefined) multiple
+  - * (undefined)
   + * (nt:base) = nt:unstructured multiple version
 
 [mix:referenceable]

Added: jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/nodetypes.dtd
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/nodetypes.dtd?rev=774832&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/nodetypes.dtd (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/nodetypes.dtd Thu May 14 16:06:07 2009
@@ -0,0 +1,75 @@
+<!--
+/*
+ * 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.
+ */
+ -->
+<!--
+Note: The following DTD is included as an informal description of
+the node type configuration file format. It can however not be used for
+formal validation because of the namespace declarations.
+-->
+<!ELEMENT nodeTypes (nodeType)*>
+    <!ELEMENT nodeType (supertypes?|propertyDefinition*|childNodeDefinition*)>
+
+    <!ATTLIST nodeType
+        name CDATA #REQUIRED
+        isMixin (true|false) #REQUIRED
+        isAbstract (true|false) #REQUIRED
+        isQueryable (true|false) #REQUIRED
+        hasOrderableChildNodes (true|false) #REQUIRED
+        primaryItemName CDATA #REQUIRED
+    >
+    <!ELEMENT supertypes (supertype+)>
+    <!ELEMENT supertype (CDATA)>
+
+    <!ELEMENT propertyDefinition (valueConstraints?|defaultValues?)>
+    <!ATTLIST propertyDefinition
+        name CDATA #REQUIRED
+        requiredType (String|Date|Path|Name|Reference|Binary|Double|Long|Boolean|undefined) #REQUIRED
+        autoCreated (true|false) #REQUIRED
+        mandatory (true|false) #REQUIRED
+        onParentVersion (COPY|VERSION|INITIALIZE|COMPUTE|IGNORE|ABORT) #REQUIRED
+        protected (true|false) #REQUIRED
+        multiple (true|false) #REQUIRED
+        isFullTextSearchable (true|false) #REQUIRED
+        isQueryOrderable (true|false) #REQUIRED
+        multiple (true|false) #REQUIRED
+        availableQueryOperators ENTITIES #IMPLIED
+    >
+    <!ENTITY OP_EQ "{http://www.jcp.org/jcr/1.0s}operatorEqualTo">
+    <!ENTITY OP_NQ "{http://www.jcp.org/jcr/1.0}operatorNotEqualTo">
+    <!ENTITY OP_GT "{http://www.jcp.org/jcr/1.0}operatorGreaterThan">
+    <!ENTITY OP_GE "{http://www.jcp.org/jcr/1.0}operatorGreaterThanOrEqualTo">
+    <!ENTITY OP_LT "{http://www.jcp.org/jcr/1.0}operatorLessThan">
+    <!ENTITY OP_LE "{http://www.jcp.org/jcr/1.0}operatorLessThanOrEqualTo">
+    <!ENTITY OP_LIKE "{http://www.jcp.org/jcr/1.0}operatorLike">
+    <!ELEMENT valueConstraints (valueConstraint+)>
+    <!ELEMENT valueConstraint (CDATA)>
+    <!ELEMENT defaultValues (defaultValue+)>
+    <!ELEMENT defaultValue (CDATA)>
+
+    <!ELEMENT childNodeDefinition (requiredPrimaryTypes)>
+    <!ATTLIST childNodeDefinition
+        name CDATA #REQUIRED
+        defaultPrimaryType CDATA #REQUIRED
+        autoCreated (true|false) #REQUIRED
+        mandatory (true|false) #REQUIRED
+        onParentVersion (COPY|VERSION|INITIALIZE|COMPUTE|IGNORE|ABORT) #REQUIRED
+        protected (true|false) #REQUIRED
+        sameNameSiblings (true|false) #REQUIRED
+    >
+    <!ELEMENT requiredPrimaryTypes (requiredPrimaryType+)>
+    <!ELEMENT requiredPrimaryType (CDATA)>

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=774832&r1=774831&r2=774832&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 Thu May 14 16:06:07 2009
@@ -21,26 +21,36 @@
            xmlns:nt="http://www.jcp.org/jcr/nt/1.0">
 
   <nodeType name="test:emptyNodeType"
-            isMixin="false" hasOrderableChildNodes="false" primaryItemName=""/>
+            isMixin="false" hasOrderableChildNodes="false" primaryItemName=""
+            isAbstract="true" isQueryable="false"/>
 
   <nodeType name="test:mixinNodeType"
-            isMixin="true" hasOrderableChildNodes="false" primaryItemName=""/>
+            isMixin="true" hasOrderableChildNodes="false" primaryItemName=""
+            isAbstract="false" isQueryable="true"/>
 
   <nodeType name="test:orderedNodeType"
-            isMixin="false" hasOrderableChildNodes="true" primaryItemName=""/>
+            isMixin="false" hasOrderableChildNodes="true" primaryItemName=""
+            isAbstract="false" isQueryable="true"/>
 
   <nodeType name="test:itemNodeType"
             isMixin="false" hasOrderableChildNodes="false"
-            primaryItemName="test:emptyItem">
+            primaryItemName="test:emptyItem"
+            isAbstract="false" isQueryable="true">
     <propertyDefinition name="*"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false"/>
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
+                 availableQueryOperators="OP_EQ OP_NE OP_LT OP_LE OP_GT OP_GE"/>
     <propertyDefinition name="test:emptyItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false"/>
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
+                 availableQueryOperators="OP_EQ OP_NE OP_LT OP_LE OP_GT OP_GE"/>
     <propertyDefinition name="test:autoCreatedItem"
                  requiredType="String" autoCreated="true" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false">
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
+                 availableQueryOperators="OP_EQ OP_NE OP_LIKE">
       <defaultValues>
         <defaultValue>"defvalue"</defaultValue>
       </defaultValues>
@@ -48,34 +58,44 @@
 
     <propertyDefinition name="test:mandatoryItem"
                  requiredType="undefined" autoCreated="false" mandatory="true"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="false"/>
     <propertyDefinition name="test:copyItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="COPY" protected="false" multiple="false"/>
     <propertyDefinition name="test:versionItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="VERSION" protected="false" multiple="false"/>
     <propertyDefinition name="test:initializeItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="INITIALIZE" protected="false" multiple="false"/>
     <propertyDefinition name="test:computeItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="COMPUTE" protected="false" multiple="false"/>
     <propertyDefinition name="test:abortItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="ABORT" protected="false" multiple="false"/>
     <propertyDefinition name="test:protectedItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="true" multiple="false"/>
   </nodeType>
 
   <nodeType name="test:propertyNodeType"
-            isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
+            isMixin="false" hasOrderableChildNodes="false" primaryItemName=""
+            isAbstract="false" isQueryable="true">
     <propertyDefinition name="test:emptyProperty"
                  requiredType="undefined" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="false"/>
     <propertyDefinition name="test:binaryProperty"
                  requiredType="Binary" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="false">
       <valueConstraints>
         <valueConstraint>[0,)</valueConstraint>
@@ -83,6 +103,7 @@
     </propertyDefinition>
     <propertyDefinition name="test:booleanProperty"
                  requiredType="Boolean" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="false">
       <valueConstraints>
         <valueConstraint>true</valueConstraint>
@@ -94,6 +115,7 @@
     </propertyDefinition>
     <propertyDefinition name="test:dateProperty"
                  requiredType="Date" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="false">
       <valueConstraints>
         <valueConstraint>
@@ -106,6 +128,8 @@
     </propertyDefinition>
     <propertyDefinition name="test:doubleProperty"
                  requiredType="Double" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="false" isQueryOrderable="true"
+                 availableQueryOperators="OP_EQ OP_NE OP_GT OP_GE OP_LT OP_LE"
                  onParentVersion="IGNORE" protected="false" multiple="false">
       <valueConstraints>
         <valueConstraint>[,0.0)</valueConstraint>
@@ -118,6 +142,7 @@
     </propertyDefinition>
     <propertyDefinition name="test:longProperty"
                  requiredType="Long" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="false" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="false">
       <valueConstraints>
         <valueConstraint>(-10,0]</valueConstraint>
@@ -130,6 +155,7 @@
     </propertyDefinition>
     <propertyDefinition name="test:nameProperty"
                  requiredType="Name" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="false" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="false">
       <valueConstraints>
         <valueConstraint>test:testName</valueConstraint>
@@ -140,6 +166,7 @@
     </propertyDefinition>
     <propertyDefinition name="test:pathProperty"
                  requiredType="Path" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="false" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="false">
       <valueConstraints>
         <valueConstraint>/test:testPath</valueConstraint>
@@ -147,6 +174,7 @@
     </propertyDefinition>
     <propertyDefinition name="test:referenceProperty"
                  requiredType="Reference" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="false" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="false">
       <valueConstraints>
         <valueConstraint>nt:base</valueConstraint>
@@ -154,6 +182,7 @@
     </propertyDefinition>
     <propertyDefinition name="test:stringProperty"
                  requiredType="String" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="false" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="true">
       <valueConstraints>
         <valueConstraint>bananas?</valueConstraint>
@@ -165,11 +194,13 @@
     </propertyDefinition>
     <propertyDefinition name="test:multipleProperty"
                  requiredType="undefined" autoCreated="false" mandatory="false"
+                 isFullTextSearchable="false" isQueryOrderable="true"
                  onParentVersion="IGNORE" protected="false" multiple="true"/>
   </nodeType>
 
   <nodeType name="test:childNodeType"
-            isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
+            isMixin="false" hasOrderableChildNodes="false" primaryItemName=""
+            isAbstract="false" isQueryable="true">
     <childNodeDefinition name="test:emptyNode"
                   defaultPrimaryType="" sameNameSiblings="false"
                   autoCreated="false" mandatory="false"

Modified: jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_ns_xml_nodetypes.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_ns_xml_nodetypes.xml?rev=774832&r1=774831&r2=774832&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_ns_xml_nodetypes.xml (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/nodetype/xml/test_ns_xml_nodetypes.xml Thu May 14 16:06:07 2009
@@ -22,17 +22,20 @@
            xmlns:nt="http://www.jcp.org/jcr/nt/1.0">
 
   <nodeType name="testns2:emptyNodeType"
-            isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
+            isMixin="false" hasOrderableChildNodes="false" primaryItemName=""
+            isAbstract="true" isQueryable="false">
     <supertypes>
       <supertype>nt:base</supertype>
     </supertypes>
   </nodeType>
 
   <nodeType name="testns1:mixinNodeType"
-            isMixin="true" hasOrderableChildNodes="false" primaryItemName=""/>
+            isMixin="true" hasOrderableChildNodes="false" primaryItemName=""
+            isAbstract="false" isQueryable="true"/>
 
   <nodeType name="testns1:orderedNodeType"
-            isMixin="false" hasOrderableChildNodes="true" primaryItemName="">
+            isMixin="false" hasOrderableChildNodes="true" primaryItemName=""
+            isAbstract="false" isQueryable="true">
         <supertypes>
           <supertype>nt:base</supertype>
         </supertypes>
@@ -41,60 +44,78 @@
 
   <nodeType name="testns2:itemNodeType"
             isMixin="false" hasOrderableChildNodes="false"
-            primaryItemName="testns1:emptyItem">
+            primaryItemName="testns1:emptyItem" isAbstract="false" isQueryable="true">
     <supertypes>
       <supertype>nt:base</supertype>
     </supertypes>
     <propertyDefinition name="*"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false"/>
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
+                 availableQueryOperators="OP_EQ OP_NE OP_LT OP_LE OP_GT OP_GE"/>
     <propertyDefinition name="testns1:emptyItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false"/>
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
+                 availableQueryOperators="OP_EQ OP_NE OP_LT OP_LE OP_GT OP_GE"/>
     <propertyDefinition name="testns1:autoCreatedItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false"/>
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
+                 availableQueryOperators="OP_EQ OP_NE OP_LT OP_LE OP_GT OP_GE"/>
     <propertyDefinition name="testns1:mandatoryItem"
                  requiredType="undefined" autoCreated="false" mandatory="true"
-                 onParentVersion="IGNORE" protected="false" multiple="false"/>
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"
+                 availableQueryOperators="OP_EQ OP_LIKE"/>
     <propertyDefinition name="testns1:copyItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="COPY" protected="false" multiple="false"/>
+                 onParentVersion="COPY" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"/>
     <propertyDefinition name="testns1:versionItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="VERSION" protected="false" multiple="false"/>
+                 onParentVersion="VERSION" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"/>
     <propertyDefinition name="testns1:initializeItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="INITIALIZE" protected="false" multiple="false"/>
+                 onParentVersion="INITIALIZE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"/>
     <propertyDefinition name="testns1:computeItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="COMPUTE" protected="false" multiple="false"/>
+                 onParentVersion="COMPUTE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"/>
     <propertyDefinition name="testns1:abortItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="ABORT" protected="false" multiple="false"/>
+                 onParentVersion="ABORT" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"/>
     <propertyDefinition name="testns1:protectedItem"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="true" multiple="false"/>
+                 onParentVersion="IGNORE" protected="true" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true"/>
   </nodeType>
 
   <nodeType name="testns1:propertyNodeType"
-            isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
+            isMixin="false" hasOrderableChildNodes="false" primaryItemName=""
+            isAbstract="false" isQueryable="true">
     <supertypes>
       <supertype>nt:base</supertype>
     </supertypes>
     <propertyDefinition name="testns1:emptyProperty"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false"/>
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="false" isQueryOrderable="false"/>
     <propertyDefinition name="testns1:binaryProperty"
                  requiredType="Binary" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false">
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="true" isQueryOrderable="true">
       <valueConstraints>
         <valueConstraint>[0,)</valueConstraint>
       </valueConstraints>
     </propertyDefinition>
     <propertyDefinition name="testns1:booleanProperty"
                  requiredType="Boolean" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false">
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="false" isQueryOrderable="false">
       <valueConstraints>
         <valueConstraint>true</valueConstraint>
         <valueConstraint>false</valueConstraint>
@@ -105,7 +126,8 @@
     </propertyDefinition>
     <propertyDefinition name="testns1:dateProperty"
                  requiredType="Date" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false">
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="false" isQueryOrderable="false">
       <valueConstraints>
         <valueConstraint>
           [2005-01-01T00:00:00.000Z,2006-01-01T00:00:00.000Z)
@@ -117,7 +139,8 @@
     </propertyDefinition>
     <propertyDefinition name="testns1:doubleProperty"
                  requiredType="Double" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false">
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="false" isQueryOrderable="false">
       <valueConstraints>
         <valueConstraint>[,0.0)</valueConstraint>
         <valueConstraint>(1.0,2.0)</valueConstraint>
@@ -129,7 +152,8 @@
     </propertyDefinition>
     <propertyDefinition name="testns1:longProperty"
                  requiredType="Long" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false">
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="false" isQueryOrderable="false">
       <valueConstraints>
         <valueConstraint>(-10,0]</valueConstraint>
         <valueConstraint>[1,2]</valueConstraint>
@@ -141,7 +165,8 @@
     </propertyDefinition>
     <propertyDefinition name="testns1:nameProperty"
                  requiredType="Name" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false">
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="false" isQueryOrderable="false">
       <valueConstraints>
         <valueConstraint>testns1:testName</valueConstraint>
       </valueConstraints>
@@ -151,14 +176,16 @@
     </propertyDefinition>
     <propertyDefinition name="testns1:pathProperty"
                  requiredType="Path" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="false">
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="false" isQueryOrderable="false">
       <valueConstraints>
         <valueConstraint>/testns1:testPath</valueConstraint>
       </valueConstraints>
     </propertyDefinition>
     <propertyDefinition name="testns1:stringProperty"
                  requiredType="String" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="true">
+                 onParentVersion="IGNORE" protected="false" multiple="false"
+                 isFullTextSearchable="false" isQueryOrderable="false">
       <valueConstraints>
         <valueConstraint>bananas?</valueConstraint>
       </valueConstraints>
@@ -169,11 +196,13 @@
     </propertyDefinition>
     <propertyDefinition name="testns1:multipleProperty"
                  requiredType="undefined" autoCreated="false" mandatory="false"
-                 onParentVersion="IGNORE" protected="false" multiple="true"/>
+                 onParentVersion="IGNORE" protected="false" multiple="true"
+                 isFullTextSearchable="false" isQueryOrderable="false"/>
   </nodeType>
 
   <nodeType name="testns1:childNodeType"
-            isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
+            isMixin="false" hasOrderableChildNodes="false" primaryItemName=""
+            isAbstract="false" isQueryable="true">
     <supertypes>
       <supertype>nt:base</supertype>
     </supertypes>