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 ::= "<" prefix "=" namespace ">"
+ * 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 ::= ">" 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 ::= "<" 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>