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 2004/09/24 15:42:03 UTC
svn commit: rev 47157 - incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype
Author: stefan
Date: Fri Sep 24 06:42:02 2004
New Revision: 47157
Modified:
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/EffectiveNodeType.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/NodeTypeDefStore.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/NodeTypeRegistry.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/PropDef.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/PropertyDefImpl.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/builtin_nodetypes.xml
Log:
fixing/changing xml representation of node type definitions
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/EffectiveNodeType.java
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/EffectiveNodeType.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/EffectiveNodeType.java Fri Sep 24 06:42:02 2004
@@ -347,14 +347,16 @@
throw new ConstraintViolationException("the property is not multi-valued");
}
- // check value constraint
- ValueConstraint constraint = pd.getValueConstraint();
- if (constraint != null) {
- if (values == null || values.length == 0) {
- constraint.check(null);
- } else {
- for (int i = 0; i < values.length; i++) {
- constraint.check(values[i]);
+ // check value constraints
+ ValueConstraint[] constraints = pd.getValueConstraints();
+ if (constraints != null && constraints.length != 0) {
+ for (int i = 0; i < constraints.length; i++) {
+ if (values == null || values.length == 0) {
+ constraints[i].check(null);
+ } else {
+ for (int j = 0; j < values.length; j++) {
+ constraints[i].check(values[j]);
+ }
}
}
}
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/NodeTypeDefStore.java
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/NodeTypeDefStore.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/NodeTypeDefStore.java Fri Sep 24 06:42:02 2004
@@ -21,8 +21,11 @@
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
+import org.jdom.filter.Filter;
+import org.jdom.filter.ContentFilter;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
+import org.jdom.output.Format;
import javax.jcr.NamespaceException;
import javax.jcr.PropertyType;
@@ -42,16 +45,19 @@
class NodeTypeDefStore {
private static Logger log = Logger.getLogger(NodeTypeDefStore.class);
- private static final String ROOT_ELEMENT_NAME = "nodeTypes";
- private static final String NODETYPE_ELEMENT_NAME = "nodeType";
+ private static final String ROOT_ELEMENT = "nodeTypes";
+ private static final String NODETYPE_ELEMENT = "nodeType";
private static final String NAME_ATTRIBUTE = "name";
private static final String MIXIN_ATTRIBUTE = "mixin";
private static final String ORDERABLECHILDNODES_ATTRIBUTE = "orderableChildNodes";
- private static final String SUPERTYPES_ATTRIBUTE = "supertypes";
- private static final String PROPERTYDEF_ELEMENT_NAME = "propertyDef";
+ private static final String SUPERTYPES_ELEMENT = "supertypes";
+ private static final String SUPERTYPE_ELEMENT = "supertype";
+ private static final String PROPERTYDEF_ELEMENT = "propertyDef";
private static final String TYPE_ATTRIBUTE = "type";
- private static final String VALUECONSTRAINT_ATTRIBUTE = "valueConstraint";
- private static final String DEFAULTVALUES_ATTRIBUTE = "defaultValues";
+ private static final String VALUECONSTRAINTS_ELEMENT = "valueConstraints";
+ private static final String VALUECONSTRAINT_ELEMENT = "valueConstraint";
+ private static final String DEFAULTVALUES_ELEMENT = "defaultValues";
+ private static final String DEFAULTVALUE_ELEMENT = "defaultValue";
private static final String AUTOCREATE_ATTRIBUTE = "autoCreate";
private static final String MANDATORY_ATTRIBUTE = "mandatory";
private static final String PROTECTED_ATTRIBUTE = "protected";
@@ -59,8 +65,9 @@
private static final String MULTIPLE_ATTRIBUTE = "multiple";
private static final String SAMENAMESIBS_ATTRIBUTE = "sameNameSibs";
private static final String ONPARENTVERSION_ATTRIBUTE = "onParentVersion";
- private static final String CHILDNODEDEF_ELEMENT_NAME = "childNodeDef";
- private static final String REQUIREDPRIMARYTYPES_ATTRIBUTE = "requiredPrimaryTypes";
+ private static final String CHILDNODEDEF_ELEMENT = "childNodeDef";
+ private static final String REQUIREDPRIMARYTYPES_ELEMENT = "requiredPrimaryTypes";
+ private static final String REQUIREDPRIMARYTYPE_ELEMENT = "requiredPrimaryType";
private static final String DEFAULTPRIMARYTYPE_ATTRIBUTE = "defaultPrimaryType";
// map of node type names and node type definitions
@@ -87,9 +94,9 @@
Document doc = builder.build(in);
root = doc.getRootElement();
} catch (JDOMException jde) {
- String error = "internal error: failed to parse persistent node type definitions";
- log.error(error);
- throw new RepositoryException(error);
+ String msg = "internal error: failed to parse persistent node type definitions";
+ log.error(msg, jde);
+ throw new RepositoryException(msg, jde);
}
// read namespace declarations of root element
Iterator nsIter = root.getAdditionalNamespaces().iterator();
@@ -121,7 +128,7 @@
};
// read definitions
- Iterator iter = root.getChildren(NODETYPE_ELEMENT_NAME).iterator();
+ Iterator iter = root.getChildren(NODETYPE_ELEMENT).iterator();
while (iter.hasNext()) {
NodeTypeDef ntDef = readDef((Element) iter.next(), nsResolver);
add(ntDef);
@@ -136,7 +143,7 @@
*/
void store(OutputStream out, NamespaceRegistryImpl nsReg)
throws IOException, RepositoryException {
- Element root = new Element(ROOT_ELEMENT_NAME);
+ Element root = new Element(ROOT_ELEMENT);
// namespace declarations
String[] prefixes = nsReg.getPrefixes();
@@ -153,12 +160,12 @@
Iterator iter = all().iterator();
while (iter.hasNext()) {
NodeTypeDef ntd = (NodeTypeDef) iter.next();
- Element ntElem = new Element(NODETYPE_ELEMENT_NAME);
+ Element ntElem = new Element(NODETYPE_ELEMENT);
writeDef(ntd, ntElem, nsReg);
root.addContent(ntElem);
}
- XMLOutputter serializer = new XMLOutputter("\t", true);
+ XMLOutputter serializer = new XMLOutputter(Format.getPrettyFormat());
serializer.output(new Document(root), out);
}
@@ -212,36 +219,49 @@
throws InvalidNodeTypeDefException {
String sntName = ntElem.getAttributeValue(NAME_ATTRIBUTE);
NodeTypeDef ntDef = new NodeTypeDef();
+
// name
QName qntName;
try {
qntName = QName.fromJCRName(sntName, nsResolver);
} catch (BaseException e) {
- throw new InvalidNodeTypeDefException("invalid node type name:" + sntName, e);
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid node type name: " + sntName;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
}
ntDef.setName(qntName);
// supertypes
- String supertypes = ntElem.getAttributeValue(SUPERTYPES_ATTRIBUTE);
- if (supertypes != null && supertypes.length() > 0) {
- String[] sta = supertypes.split(",\\s*");
- QName[] qNames = new QName[sta.length];
- for (int i = 0; i < sta.length; i++) {
- try {
- qNames[i] = QName.fromJCRName(sta[i], nsResolver);
- } catch (BaseException e) {
- throw new InvalidNodeTypeDefException("invalid supertype name:" + sta[i], e);
+ ArrayList list = new ArrayList();
+ Element typesElem = ntElem.getChild(SUPERTYPES_ELEMENT);
+ if (typesElem != null) {
+ Iterator iter = typesElem.getChildren(SUPERTYPE_ELEMENT).iterator();
+ while (iter.hasNext()) {
+ Element typeElem = (Element) iter.next();
+ Filter filter = new ContentFilter(ContentFilter.TEXT | ContentFilter.CDATA);
+ List content = typeElem.getContent(filter);
+ if (!content.isEmpty()) {
+ String name = typeElem.getTextTrim();
+ try {
+ list.add(QName.fromJCRName(name, nsResolver));
+ } catch (BaseException e) {
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid supertype: " + name;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
+ }
}
}
- if (sta.length > 0) {
- ntDef.setSupertypes(qNames);
+ if (!list.isEmpty()) {
+ ntDef.setSupertypes((QName[]) list.toArray(new QName[list.size()]));
}
}
+
// mixin
String mixin = ntElem.getAttributeValue(MIXIN_ATTRIBUTE);
if (mixin != null && mixin.length() > 0) {
ntDef.setMixin(Boolean.valueOf(mixin).booleanValue());
}
+
// orderableChildNodes
String orderableChildNodes = ntElem.getAttributeValue(ORDERABLECHILDNODES_ATTRIBUTE);
if (orderableChildNodes != null && orderableChildNodes.length() > 0) {
@@ -249,8 +269,8 @@
}
// property definitions
- ArrayList list = new ArrayList();
- Iterator iter = ntElem.getChildren(PROPERTYDEF_ELEMENT_NAME).iterator();
+ list.clear();
+ Iterator iter = ntElem.getChildren(PROPERTYDEF_ELEMENT).iterator();
while (iter.hasNext()) {
Element elem = (Element) iter.next();
PropDef pd = new PropDef();
@@ -262,7 +282,9 @@
try {
pd.setName(QName.fromJCRName(propName, nsResolver));
} catch (BaseException e) {
- throw new InvalidNodeTypeDefException("invalid property name:" + propName, e);
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid property name: " + propName;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
}
}
// type
@@ -273,34 +295,58 @@
type = PropertyType.valueFromName(typeName);
pd.setRequiredType(type);
} catch (IllegalArgumentException e) {
- String error = "invalid serialized node type definition: invalid type " + typeName;
- log.error(error);
- throw new InvalidNodeTypeDefException(error);
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid type: " + typeName;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
+ }
+ }
+ // valueConstraints
+ Element constraintsElem = elem.getChild(VALUECONSTRAINTS_ELEMENT);
+ if (constraintsElem != null) {
+ ArrayList list1 = new ArrayList();
+ Iterator iter1 = constraintsElem.getChildren(VALUECONSTRAINT_ELEMENT).iterator();
+ while (iter1.hasNext()) {
+ Element constraintElem = (Element) iter1.next();
+ Filter filter = new ContentFilter(ContentFilter.TEXT | ContentFilter.CDATA);
+ List content = constraintElem.getContent(filter);
+ if (!content.isEmpty()) {
+ String constraint = constraintElem.getTextTrim();
+ try {
+ list1.add(ValueConstraint.create(type, constraint));
+ } catch (InvalidConstraintException e) {
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid constraint: " + constraint;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
+ }
+ }
}
- }
- // valueConstraint
- String valueConstraint = elem.getAttributeValue(VALUECONSTRAINT_ATTRIBUTE);
- if (valueConstraint != null && valueConstraint.length() > 0) {
- try {
- pd.setValueConstraint(ValueConstraint.create(type, valueConstraint));
- } catch (InvalidConstraintException e) {
- String error = "invalid serialized node type definition: invalid constraint " + valueConstraint;
- log.error(error, e);
- throw new InvalidNodeTypeDefException(error, e);
+ if (!list1.isEmpty()) {
+ pd.setValueConstraints((ValueConstraint[]) list1.toArray(new ValueConstraint[list1.size()]));
}
}
// defaultValues
- // @todo provide escaping for separator character within single value or change xml representation for defaultValues
- String defaultValues = elem.getAttributeValue(DEFAULTVALUES_ATTRIBUTE);
- if (defaultValues != null && defaultValues.length() > 0) {
+ Element defValuesElem = elem.getChild(DEFAULTVALUES_ELEMENT);
+ if (defValuesElem != null) {
int defValType = (type == PropertyType.UNDEFINED) ? PropertyType.STRING : type;
- String[] dva = defaultValues.split(",\\s*");
- InternalValue[] defVals = new InternalValue[dva.length];
- for (int i = 0; i < dva.length; i++) {
- defVals[i] = InternalValue.valueOf(dva[i], defValType);
+ ArrayList list1 = new ArrayList();
+ Iterator iter1 = defValuesElem.getChildren(DEFAULTVALUE_ELEMENT).iterator();
+ while (iter1.hasNext()) {
+ Element valueElem = (Element) iter1.next();
+ Filter filter = new ContentFilter(ContentFilter.TEXT | ContentFilter.CDATA);
+ List content = valueElem.getContent(filter);
+ if (!content.isEmpty()) {
+ String defValue = valueElem.getTextTrim();
+ try {
+ list1.add(InternalValue.valueOf(defValue, defValType));
+ } catch (IllegalArgumentException e) {
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid defaultValue: " + defValue;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
+ }
+ }
}
- if (defVals.length > 0) {
- pd.setDefaultValues(defVals);
+ if (!list1.isEmpty()) {
+ pd.setDefaultValues((InternalValue[]) list1.toArray(new InternalValue[list1.size()]));
}
}
// autoCreate
@@ -319,9 +365,9 @@
try {
pd.setOnParentVersion(OnParentVersionAction.valueFromName(onVersion));
} catch (IllegalArgumentException e) {
- String error = "invalid serialized node type definition: invalid onVersion " + onVersion;
- log.error(error);
- throw new InvalidNodeTypeDefException(error);
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid onVersion: " + onVersion;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
}
}
// protected
@@ -348,7 +394,7 @@
// child-node definitions
list.clear();
- iter = ntElem.getChildren(CHILDNODEDEF_ELEMENT_NAME).iterator();
+ iter = ntElem.getChildren(CHILDNODEDEF_ELEMENT).iterator();
while (iter.hasNext()) {
Element elem = (Element) iter.next();
ChildNodeDef cnd = new ChildNodeDef();
@@ -360,23 +406,33 @@
try {
cnd.setName(QName.fromJCRName(nodeName, nsResolver));
} catch (BaseException e) {
- throw new InvalidNodeTypeDefException("invalid child node name:" + nodeName, e);
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid child node name: " + nodeName;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
}
}
// requiredPrimaryTypes
- String requiredPrimaryTypes = elem.getAttributeValue(REQUIREDPRIMARYTYPES_ATTRIBUTE);
- if (requiredPrimaryTypes != null && requiredPrimaryTypes.length() > 0) {
- String[] sta = requiredPrimaryTypes.split(",\\s*");
- QName[] qNames = new QName[sta.length];
- for (int i = 0; i < sta.length; i++) {
- try {
- qNames[i] = QName.fromJCRName(sta[i], nsResolver);
- } catch (BaseException e) {
- throw new InvalidNodeTypeDefException("invalid requiredPrimaryType:" + sta[i], e);
+ Element reqTtypesElem = elem.getChild(REQUIREDPRIMARYTYPES_ELEMENT);
+ if (reqTtypesElem != null) {
+ ArrayList list1 = new ArrayList();
+ Iterator iter1 = reqTtypesElem.getChildren(REQUIREDPRIMARYTYPE_ELEMENT).iterator();
+ while (iter1.hasNext()) {
+ Element typeElem = (Element) iter1.next();
+ Filter filter = new ContentFilter(ContentFilter.TEXT | ContentFilter.CDATA);
+ List content = typeElem.getContent(filter);
+ if (!content.isEmpty()) {
+ String name = typeElem.getTextTrim();
+ try {
+ list1.add(QName.fromJCRName(name, nsResolver));
+ } catch (BaseException e) {
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid requiredPrimaryType: " + name;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
+ }
}
}
- if (sta.length > 0) {
- cnd.setRequiredPrimaryTypes(qNames);
+ if (!list1.isEmpty()) {
+ cnd.setRequiredPrimaryTypes((QName[]) list1.toArray(new QName[list1.size()]));
}
}
// defaultPrimaryType
@@ -385,7 +441,9 @@
try {
cnd.setDefaultPrimaryType(QName.fromJCRName(defaultPrimaryType, nsResolver));
} catch (BaseException e) {
- throw new InvalidNodeTypeDefException("invalid defaultPrimaryType:" + defaultPrimaryType, e);
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid defaultPrimaryType: " + defaultPrimaryType;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
}
}
// autoCreate
@@ -404,9 +462,9 @@
try {
cnd.setOnParentVersion(OnParentVersionAction.valueFromName(onVersion));
} catch (IllegalArgumentException e) {
- String error = "invalid serialized node type definition: invalid onVersion " + onVersion;
- log.error(error);
- throw new InvalidNodeTypeDefException(error);
+ String msg = "invalid serialized node type definition [" + sntName + "]: invalid onVersion: " + onVersion;
+ log.error(msg, e);
+ throw new InvalidNodeTypeDefException(msg, e);
}
}
// protected
@@ -439,18 +497,22 @@
try {
// name
ntElem.setAttribute(NAME_ATTRIBUTE, ntd.getName().toJCRName(nsResolver));
+
// supertypes
- StringBuffer supertypes = new StringBuffer();
QName[] qNames = ntd.getSupertypes();
- for (int i = 0; i < qNames.length; i++) {
- if (supertypes.length() > 0) {
- supertypes.append(",");
+ if (qNames.length != 0) {
+ Element typesElem = new Element(SUPERTYPES_ELEMENT);
+ ntElem.addContent(typesElem);
+ for (int i = 0; i < qNames.length; i++) {
+ Element typeElem = new Element(SUPERTYPE_ELEMENT);
+ typesElem.addContent(typeElem);
+ typeElem.setText(qNames[i].toJCRName(nsResolver));
}
- supertypes.append(qNames[i].toJCRName(nsResolver));
}
- ntElem.setAttribute(SUPERTYPES_ATTRIBUTE, supertypes.toString());
+
// mixin
ntElem.setAttribute(MIXIN_ATTRIBUTE, Boolean.toString(ntd.isMixin()));
+
// orderableChildNodes
ntElem.setAttribute(ORDERABLECHILDNODES_ATTRIBUTE, Boolean.toString(ntd.hasOrderableChildNodes()));
@@ -458,7 +520,7 @@
PropDef[] pda = ntd.getPropertyDefs();
for (int i = 0; i < pda.length; i++) {
PropDef pd = pda[i];
- Element elem = new Element(PROPERTYDEF_ELEMENT_NAME);
+ Element elem = new Element(PROPERTYDEF_ELEMENT);
ntElem.addContent(elem);
// name
@@ -466,23 +528,28 @@
elem.setAttribute(NAME_ATTRIBUTE, name);
// type
elem.setAttribute(TYPE_ATTRIBUTE, PropertyType.nameFromValue(pd.getRequiredType()));
- // valueConstraint
- String valueConstraint = pd.getValueConstraint() == null ? "" : pd.getValueConstraint().getDefinition();
- elem.setAttribute(VALUECONSTRAINT_ATTRIBUTE, valueConstraint);
+ // valueConstraints
+ ValueConstraint[] vca = pd.getValueConstraints();
+ if (vca != null && vca.length != 0) {
+ Element constraintsElem = new Element(VALUECONSTRAINTS_ELEMENT);
+ elem.addContent(constraintsElem);
+ for (int j = 0; j < vca.length; j++) {
+ Element constraintElem = new Element(VALUECONSTRAINTS_ELEMENT);
+ constraintsElem.addContent(constraintElem);
+ constraintElem.setText(vca[j].getDefinition());
+ }
+ }
// defaultValues
- // @todo provide escaping for separator character within single value or change xml representation for defaultValues
InternalValue[] defVals = pd.getDefaultValues();
- StringBuffer defaultValues = new StringBuffer();
- if (defVals != null) {
- for (int n = 0; n < defVals.length; n++) {
- if (defaultValues.length() > 0) {
- defaultValues.append(",");
- }
- defaultValues.append(defVals[n].toString());
+ if (defVals != null && defVals.length != 0) {
+ Element valuesElem = new Element(DEFAULTVALUES_ELEMENT);
+ elem.addContent(valuesElem);
+ for (int j = 0; j < defVals.length; j++) {
+ Element valueElem = new Element(DEFAULTVALUE_ELEMENT);
+ valuesElem.addContent(valueElem);
+ valueElem.setText(defVals[j].toString());
}
}
-
- elem.setAttribute(DEFAULTVALUES_ATTRIBUTE, defaultValues.toString());
// autoCreate
String autoCreate = elem.getAttributeValue(AUTOCREATE_ATTRIBUTE);
if (autoCreate != null && autoCreate.length() > 0) {
@@ -504,22 +571,23 @@
ChildNodeDef[] nda = ntd.getChildNodeDefs();
for (int i = 0; i < nda.length; i++) {
ChildNodeDef nd = nda[i];
- Element elem = new Element(CHILDNODEDEF_ELEMENT_NAME);
+ Element elem = new Element(CHILDNODEDEF_ELEMENT);
ntElem.addContent(elem);
// name
String name = nd.getName() == null ? "" : nd.getName().toJCRName(nsResolver);
elem.setAttribute(NAME_ATTRIBUTE, name);
// requiredPrimaryTypes
- StringBuffer requiredPrimaryTypes = new StringBuffer();
qNames = nd.getRequiredPrimaryTypes();
- for (int j = 0; j < qNames.length; j++) {
- if (requiredPrimaryTypes.length() > 0) {
- requiredPrimaryTypes.append(",");
+ if (qNames.length != 0) {
+ Element typesElem = new Element(REQUIREDPRIMARYTYPES_ELEMENT);
+ elem.addContent(typesElem);
+ for (int j = 0; j < qNames.length; j++) {
+ Element typeElem = new Element(REQUIREDPRIMARYTYPE_ELEMENT);
+ typesElem.addContent(typeElem);
+ typeElem.setText(qNames[j].toJCRName(nsResolver));
}
- requiredPrimaryTypes.append(qNames[j].toJCRName(nsResolver));
}
- elem.setAttribute(REQUIREDPRIMARYTYPES_ATTRIBUTE, requiredPrimaryTypes.toString());
// defaultPrimaryType
String defaultPrimaryType = nd.getDefaultPrimaryType() == null ? "" : nd.getDefaultPrimaryType().toJCRName(nsResolver);
elem.setAttribute(DEFAULTPRIMARYTYPE_ATTRIBUTE, defaultPrimaryType);
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/NodeTypeRegistry.java
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/NodeTypeRegistry.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/NodeTypeRegistry.java Fri Sep 24 06:42:02 2004
@@ -16,13 +16,13 @@
package org.apache.jackrabbit.jcr.core.nodetype;
import org.apache.commons.collections.ReferenceMap;
-import org.apache.log4j.Logger;
+import org.apache.jackrabbit.jcr.core.InternalValue;
import org.apache.jackrabbit.jcr.core.NamespaceRegistryImpl;
import org.apache.jackrabbit.jcr.core.QName;
-import org.apache.jackrabbit.jcr.core.InternalValue;
import org.apache.jackrabbit.jcr.fs.FileSystem;
import org.apache.jackrabbit.jcr.fs.FileSystemException;
import org.apache.jackrabbit.jcr.fs.FileSystemResource;
+import org.apache.log4j.Logger;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
@@ -485,17 +485,23 @@
log.error(reason);
throw new InvalidNodeTypeDefException(reason);
}
- ValueConstraint constraint = pd.getValueConstraint();
- if (constraint != null && pd.getDefaultValues() != null) {
- // check that default values satisfy value constraint
- InternalValue[] vals = pd.getDefaultValues();
- for (int j = 0; j < vals.length; j++) {
- try {
- constraint.check(vals[j]);
- } catch (ConstraintViolationException cve) {
- String msg = "default value of property " + (pd.getName() == null ? "[null]" : pd.getName().toString()) + " does not satisfy value constraint " + constraint.getDefinition();
- log.error(msg, cve);
- throw new InvalidNodeTypeDefException(msg, cve);
+ ValueConstraint[] constraints = pd.getValueConstraints();
+ InternalValue[] defVals = pd.getDefaultValues();
+ if (constraints != null && constraints.length != 0
+ && defVals != null && defVals.length != 0) {
+ // check that default values satisfy value constraints
+ for (int j = 0; j < constraints.length; j++) {
+ for (int k = 0; k < defVals.length; k++) {
+ try {
+ constraints[j].check(defVals[k]);
+ } catch (ConstraintViolationException cve) {
+ String msg = "default value of property "
+ + (pd.getName() == null ? "[null]" : pd.getName().toString())
+ + " does not satisfy value constraint "
+ + constraints[j].getDefinition();
+ log.error(msg, cve);
+ throw new InvalidNodeTypeDefException(msg, cve);
+ }
}
}
}
@@ -649,7 +655,6 @@
}
/**
- *
* @return
*/
public ChildNodeDef getRootNodeDef() {
@@ -1093,7 +1098,19 @@
ps.println("\t\tName\t\t" + pd[i].getName());
String type = pd[i].getRequiredType() == 0 ? "null" : PropertyType.nameFromValue(pd[i].getRequiredType());
ps.println("\t\tRequiredType\t\t" + type);
- ps.println("\t\tValueConstraint\t" + ((pd[i].getValueConstraint() == null) ? "null" : pd[i].getValueConstraint().getDefinition()));
+ ValueConstraint[] vca = pd[i].getValueConstraints();
+ StringBuffer constraints = new StringBuffer();
+ if (vca == null) {
+ constraints.append("<null>");
+ } else {
+ for (int n = 0; n < vca.length; n++) {
+ if (constraints.length() > 0) {
+ constraints.append(", ");
+ }
+ constraints.append(vca[n].getDefinition());
+ }
+ }
+ ps.println("\t\tValueConstraints\t" + constraints.toString());
InternalValue[] defVals = pd[i].getDefaultValues();
StringBuffer defaultValues = new StringBuffer();
if (defVals == null) {
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/PropDef.java
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/PropDef.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/PropDef.java Fri Sep 24 06:42:02 2004
@@ -29,7 +29,7 @@
public class PropDef extends ChildItemDef {
private int requiredType = PropertyType.UNDEFINED;
- private ValueConstraint valueConstraint = null;
+ private ValueConstraint[] valueConstraints = new ValueConstraint[0];
private InternalValue[] defaultValues = null;
private boolean multiple = false;
@@ -47,7 +47,7 @@
PropDef other = (PropDef) obj;
return super.equals(obj)
&& requiredType == other.requiredType
- && (valueConstraint == null ? other.valueConstraint == null : valueConstraint.equals(other.valueConstraint))
+ && Arrays.equals(valueConstraints, other.valueConstraints)
&& Arrays.equals(defaultValues, other.defaultValues)
&& multiple == other.multiple;
}
@@ -62,10 +62,10 @@
}
/**
- * @param valueConstraint
+ * @param valueConstraints
*/
- public void setValueConstraint(ValueConstraint valueConstraint) {
- this.valueConstraint = valueConstraint;
+ public void setValueConstraints(ValueConstraint valueConstraints[]) {
+ this.valueConstraints = valueConstraints;
}
/**
@@ -92,8 +92,8 @@
/**
* @return
*/
- public ValueConstraint getValueConstraint() {
- return valueConstraint;
+ public ValueConstraint[] getValueConstraints() {
+ return valueConstraints;
}
/**
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/PropertyDefImpl.java
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/PropertyDefImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/PropertyDefImpl.java Fri Sep 24 06:42:02 2004
@@ -86,10 +86,11 @@
* @see PropertyDef#getValueConstraint
*/
public String getValueConstraint() {
- if (propDef.getValueConstraint() == null) {
+ ValueConstraint[] constraints = propDef.getValueConstraints();
+ if (constraints == null || constraints.length == 0) {
return null;
} else {
- return propDef.getValueConstraint().getDefinition();
+ return constraints[0].getDefinition();
}
}
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/builtin_nodetypes.xml
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/builtin_nodetypes.xml (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/jcr/core/nodetype/builtin_nodetypes.xml Fri Sep 24 06:42:02 2004
@@ -18,19 +18,20 @@
-->
<!DOCTYPE nodeTypes [
<!ELEMENT nodeTypes (nodeType)*>
- <!ELEMENT nodeType (propertyDef|childNodeDef)*>
+ <!ELEMENT nodeType (supertypes?|propertyDef*|childNodeDef*)>
+
<!ATTLIST nodeType
name CDATA #REQUIRED
mixin (true|false) #REQUIRED
orderableChildNodes (true|false) #REQUIRED
- supertypes CDATA #REQUIRED
>
- <!ELEMENT propertyDef (#PCDATA)>
+ <!ELEMENT supertypes (supertype+)>
+ <!ELEMENT supertype (CDATA)>
+
+ <!ELEMENT propertyDef (valueConstraints?|defaultValues?)>
<!ATTLIST propertyDef
name CDATA #REQUIRED
type (String|Date|Path|Name|Reference|Binary|Double|Long|Boolean|undefined) #REQUIRED
- valueConstraint CDATA #REQUIRED
- defaultValues CDATA #REQUIRED
autoCreate (true|false) #REQUIRED
mandatory (true|false) #REQUIRED
onParentVersion (COPY|VERSION|INITIALIZE|COMPUTE|IGNORE|ABORT) #REQUIRED
@@ -38,10 +39,14 @@
primaryItem (true|false) #REQUIRED
multiple (true|false) #REQUIRED
>
- <!ELEMENT childNodeDef (#PCDATA)>
+ <!ELEMENT valueConstraints (valueConstraint+)>
+ <!ELEMENT valueConstraint (CDATA)>
+ <!ELEMENT defaultValues (defaultValue+)>
+ <!ELEMENT defaultValue (CDATA)>
+
+ <!ELEMENT childNodeDef (requiredPrimaryTypes)>
<!ATTLIST childNodeDef
name CDATA #REQUIRED
- requiredPrimaryTypes CDATA #REQUIRED
defaultPrimaryType CDATA #REQUIRED
autoCreate (true|false) #REQUIRED
mandatory (true|false) #REQUIRED
@@ -50,109 +55,224 @@
primaryItem (true|false) #REQUIRED
sameNameSibs (true|false) #REQUIRED
>
+ <!ELEMENT requiredPrimaryTypes (requiredPrimaryType+)>
+ <!ELEMENT requiredPrimaryType (CDATA)>
]>
<nodeTypes
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
xmlns:mix="http://www.jcp.org/jcr/mix/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0">
- <!-- primary types !-->
- <nodeType name="nt:base" mixin="false" orderableChildNodes="false" supertypes="">
- <propertyDef name="jcr:primaryType" type="Name" valueConstraint="" defaultValues="" autoCreate="true" mandatory="true" onParentVersion="COMPUTE" protected="true" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:mixinTypes" type="Name" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="COMPUTE" protected="true" primaryItem="false" multiple="true"/>
- </nodeType>
- <nodeType name="nt:unstructured" mixin="false" orderableChildNodes="true" supertypes="nt:base">
- <childNodeDef name="" requiredPrimaryTypes="nt:base" defaultPrimaryType="nt:unstructured" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" sameNameSibs="true"/>
- <propertyDef name="" type="undefined" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="true"/>
- <propertyDef name="" type="undefined" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- </nodeType>
- <nodeType name="nt:hierarchyNode" mixin="false" orderableChildNodes="false" supertypes="nt:base">
- <propertyDef name="jcr:created" type="Date" valueConstraint="" defaultValues="" autoCreate="true" mandatory="true" onParentVersion="INITIALIZE" protected="true" primaryItem="false" multiple="false"/>
- </nodeType>
- <nodeType name="nt:file" mixin="false" orderableChildNodes="false" supertypes="nt:hierarchyNode">
- <childNodeDef name="jcr:content" requiredPrimaryTypes="nt:base" defaultPrimaryType="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="true" sameNameSibs="false"/>
- </nodeType>
- <nodeType name="nt:mimeResource" mixin="false" orderableChildNodes="false" supertypes="nt:base,mix:referenceable">
- <propertyDef name="jcr:encoding" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:mimeType" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:data" type="Binary" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="true" multiple="false"/>
- <propertyDef name="jcr:lastModified" type="Date" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COMPUTE" protected="false" primaryItem="false" multiple="false"/>
- </nodeType>
- <nodeType name="nt:folder" mixin="false" orderableChildNodes="false" supertypes="nt:hierarchyNode">
- <childNodeDef name="" requiredPrimaryTypes="nt:hierarchyNode" defaultPrimaryType="" autoCreate="false" mandatory="false" onParentVersion="VERSION" protected="false" primaryItem="false" sameNameSibs="false"/>
- </nodeType>
- <nodeType name="nt:nodeType" mixin="false" orderableChildNodes="false" supertypes="nt:base">
- <propertyDef name="jcr:nodeTypeName" type="Name" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:supertypes" type="Name" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="true"/>
- <propertyDef name="jcr:isMixin" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:orderableChildNodes" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <childNodeDef name="jcr:propertyDef" requiredPrimaryTypes="nt:propertyDef" defaultPrimaryType="nt:propertyDef" autoCreate="false" mandatory="false" onParentVersion="VERSION" protected="false" primaryItem="false" sameNameSibs="true"/>
- <childNodeDef name="jcr:childNodeDef" requiredPrimaryTypes="nt:childNodeDef" defaultPrimaryType="nt:childNodeDef" autoCreate="false" mandatory="false" onParentVersion="VERSION" protected="false" primaryItem="false" sameNameSibs="true"/>
- </nodeType>
- <nodeType name="nt:propertyDef" mixin="false" orderableChildNodes="false" supertypes="nt:base">
- <propertyDef name="jcr:name" type="Name" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:type" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:valueConstraint" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:defaultValues" type="undefined" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:autoCreate" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:mandatory" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:onParentVersion" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:protected" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:primaryItem" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:multiple" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- </nodeType>
- <nodeType name="nt:childNodeDef" mixin="false" orderableChildNodes="false" supertypes="nt:base">
- <propertyDef name="jcr:name" type="Name" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:requiredPrimaryTypes" type="String" valueConstraint="" defaultValues="nt:base" autoCreate="true" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="true"/>
- <propertyDef name="jcr:defaultPrimaryType" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:autoCreate" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:mandatory" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:onParentVersion" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:protected" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:primaryItem" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:sameNameSibs" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- </nodeType>
- <nodeType name="nt:versionHistory" mixin="false" orderableChildNodes="false" supertypes="nt:base,mix:referenceable">
- <childNodeDef name="jcr:rootVersion" requiredPrimaryTypes="nt:version" defaultPrimaryType="nt:version" autoCreate="true" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" sameNameSibs="false"/>
- <childNodeDef name="" requiredPrimaryTypes="nt:version" defaultPrimaryType="nt:version" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" sameNameSibs="false"/>
- </nodeType>
- <nodeType name="nt:frozenVersionableChild" mixin="false" orderableChildNodes="false" supertypes="nt:base">
- <propertyDef name="jcr:versionHistory" type="Reference" valueConstraint="nt:versionHistory" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:baseVersion" type="Reference" valueConstraint="nt:version" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
- </nodeType>
- <nodeType name="nt:frozen" mixin="false" orderableChildNodes="false" supertypes="nt:base">
- <propertyDef name="jcr:frozenPrimaryType" type="Name" valueConstraint="" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:frozenMixinTypes" type="Name" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true"/>
- <propertyDef name="jcr:frozenUUID" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
- <propertyDef name="" type="undefined" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true"/>
- <propertyDef name="" type="undefined" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
- <childNodeDef name="" requiredPrimaryTypes="nt:base" defaultPrimaryType="nt:frozen" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" sameNameSibs="true"/>
- </nodeType>
- <nodeType name="nt:version" mixin="false" orderableChildNodes="false" supertypes="nt:frozen,mix:referenceable">
- <propertyDef name="jcr:versionLabels" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true"/>
- <propertyDef name="jcr:created" type="Date" valueConstraint="" defaultValues="" autoCreate="true" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:predecessors" type="Reference" valueConstraint="nt:version" defaultValues="" autoCreate="true" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true"/>
- <propertyDef name="jcr:successors" type="Reference" valueConstraint="nt:version" defaultValues="" autoCreate="true" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true"/>
- </nodeType>
- <nodeType name="nt:query" mixin="false" orderableChildNodes="false" supertypes="nt:base">
- <propertyDef name="jcr:statement" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:language" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <!-- primary types -->
+ <nodeType name="nt:base" mixin="false" orderableChildNodes="false">
+ <propertyDef name="jcr:primaryType" type="Name" autoCreate="true" mandatory="true" onParentVersion="COMPUTE" protected="true" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:mixinTypes" type="Name" autoCreate="false" mandatory="false" onParentVersion="COMPUTE" protected="true" primaryItem="false" multiple="true"/>
+ </nodeType>
+ <nodeType name="nt:unstructured" mixin="false" orderableChildNodes="true">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ </supertypes>
+ <childNodeDef name="" defaultPrimaryType="nt:unstructured" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" sameNameSibs="true">
+ <requiredPrimaryTypes>
+ <requiredPrimaryType>nt:base</requiredPrimaryType>
+ </requiredPrimaryTypes>
+ </childNodeDef>
+ <propertyDef name="" type="undefined" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="true"/>
+ <propertyDef name="" type="undefined" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ </nodeType>
+ <nodeType name="nt:hierarchyNode" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ </supertypes>
+ <propertyDef name="jcr:created" type="Date" autoCreate="true" mandatory="true" onParentVersion="INITIALIZE" protected="true" primaryItem="false" multiple="false"/>
+ </nodeType>
+ <nodeType name="nt:file" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:hierarchyNode</supertype>
+ </supertypes>
+ <childNodeDef name="jcr:content" defaultPrimaryType="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="true" sameNameSibs="false">
+ <requiredPrimaryTypes>
+ <requiredPrimaryType>nt:base</requiredPrimaryType>
+ </requiredPrimaryTypes>
+ </childNodeDef>
+ </nodeType>
+ <nodeType name="nt:mimeResource" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ <supertype>mix:referenceable</supertype>
+ </supertypes>
+ <propertyDef name="jcr:encoding" type="String" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:mimeType" type="String" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:data" type="Binary" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="true" multiple="false"/>
+ <propertyDef name="jcr:lastModified" type="Date" autoCreate="false" mandatory="true" onParentVersion="COMPUTE" protected="false" primaryItem="false" multiple="false"/>
+ </nodeType>
+ <nodeType name="nt:folder" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:hierarchyNode</supertype>
+ </supertypes>
+ <childNodeDef name="" defaultPrimaryType="" autoCreate="false" mandatory="false" onParentVersion="VERSION" protected="false" primaryItem="false" sameNameSibs="false">
+ <requiredPrimaryTypes>
+ <requiredPrimaryType>nt:hierarchyNode</requiredPrimaryType>
+ </requiredPrimaryTypes>
+ </childNodeDef>
+ </nodeType>
+ <nodeType name="nt:nodeType" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ </supertypes>
+ <propertyDef name="jcr:nodeTypeName" type="Name" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:supertypes" type="Name" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="true"/>
+ <propertyDef name="jcr:isMixin" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:orderableChildNodes" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <childNodeDef name="jcr:propertyDef" defaultPrimaryType="nt:propertyDef" autoCreate="false" mandatory="false" onParentVersion="VERSION" protected="false" primaryItem="false" sameNameSibs="true">
+ <requiredPrimaryTypes>
+ <requiredPrimaryType>nt:propertyDef</requiredPrimaryType>
+ </requiredPrimaryTypes>
+ </childNodeDef>
+ <childNodeDef name="jcr:childNodeDef" defaultPrimaryType="nt:childNodeDef" autoCreate="false" mandatory="false" onParentVersion="VERSION" protected="false" primaryItem="false" sameNameSibs="true">
+ <requiredPrimaryTypes>
+ <requiredPrimaryType>nt:childNodeDef</requiredPrimaryType>
+ </requiredPrimaryTypes>
+ </childNodeDef>
+ </nodeType>
+ <nodeType name="nt:propertyDef" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ </supertypes>
+ <propertyDef name="jcr:name" type="Name" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:type" type="String" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:valueConstraint" type="String" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:defaultValues" type="undefined" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:autoCreate" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:mandatory" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:onParentVersion" type="String" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:protected" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:primaryItem" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:multiple" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ </nodeType>
+ <nodeType name="nt:childNodeDef" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ </supertypes>
+ <propertyDef name="jcr:name" type="Name" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:requiredPrimaryTypes" type="String" autoCreate="true" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="true">
+ <defaultValues>
+ <defaultValue>nt:base</defaultValue>
+ </defaultValues>
+ </propertyDef>
+ <propertyDef name="jcr:defaultPrimaryType" type="String" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:autoCreate" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:mandatory" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:onParentVersion" type="String" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:protected" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:primaryItem" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:sameNameSibs" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ </nodeType>
+ <nodeType name="nt:versionHistory" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ <supertype>mix:referenceable</supertype>
+ </supertypes>
+ <childNodeDef name="jcr:rootVersion" defaultPrimaryType="nt:version" autoCreate="true" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" sameNameSibs="false">
+ <requiredPrimaryTypes>
+ <requiredPrimaryType>nt:version</requiredPrimaryType>
+ </requiredPrimaryTypes>
+ </childNodeDef>
+ <childNodeDef name="" defaultPrimaryType="nt:version" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" sameNameSibs="false">
+ <requiredPrimaryTypes>
+ <requiredPrimaryType>nt:version</requiredPrimaryType>
+ </requiredPrimaryTypes>
+ </childNodeDef>
+ </nodeType>
+ <nodeType name="nt:frozenVersionableChild" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ </supertypes>
+ <propertyDef name="jcr:versionHistory" type="Reference" autoCreate="false" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false">
+ <valueConstraints>
+ <valueConstraint>nt:versionHistory</valueConstraint>
+ </valueConstraints>
+ </propertyDef>
+ <propertyDef name="jcr:baseVersion" type="Reference" autoCreate="false" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false">
+ <valueConstraints>
+ <valueConstraint>nt:version</valueConstraint>
+ </valueConstraints>
+ </propertyDef>
+ </nodeType>
+ <nodeType name="nt:frozen" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ </supertypes>
+ <propertyDef name="jcr:frozenPrimaryType" type="Name" autoCreate="false" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:frozenMixinTypes" type="Name" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true"/>
+ <propertyDef name="jcr:frozenUUID" type="String" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
+ <propertyDef name="" type="undefined" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true"/>
+ <propertyDef name="" type="undefined" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
+ <childNodeDef name="" defaultPrimaryType="nt:frozen" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" sameNameSibs="true">
+ <requiredPrimaryTypes>
+ <requiredPrimaryType>nt:base</requiredPrimaryType>
+ </requiredPrimaryTypes>
+ </childNodeDef>
+ </nodeType>
+ <nodeType name="nt:version" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:frozen</supertype>
+ <supertype>mix:referenceable</supertype>
+ </supertypes>
+ <propertyDef name="jcr:versionLabels" type="String" autoCreate="false" mandatory="false" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true"/>
+ <propertyDef name="jcr:created" type="Date" autoCreate="true" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:predecessors" type="Reference" autoCreate="true" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true">
+ <valueConstraints>
+ <valueConstraint>nt:version</valueConstraint>
+ </valueConstraints>
+ </propertyDef>
+ <propertyDef name="jcr:successors" type="Reference" autoCreate="true" mandatory="true" onParentVersion="ABORT" protected="true" primaryItem="false" multiple="true">
+ <valueConstraints>
+ <valueConstraint>nt:version</valueConstraint>
+ </valueConstraints>
+ </propertyDef>
+ </nodeType>
+ <nodeType name="nt:query" mixin="false" orderableChildNodes="false">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ </supertypes>
+ <propertyDef name="jcr:statement" type="String" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:language" type="String" autoCreate="false" mandatory="false" onParentVersion="COPY" protected="false" primaryItem="false" multiple="false"/>
</nodeType>
- <!-- mixin types !-->
- <nodeType name="mix:accessControllable" mixin="true" orderableChildNodes="false" supertypes="">
+ <!-- mixin types -->
+ <nodeType name="mix:accessControllable" mixin="true" orderableChildNodes="false">
</nodeType>
- <nodeType name="mix:lockable" mixin="true" orderableChildNodes="false" supertypes="">
- <propertyDef name="jcr:lockOwner" type="String" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="IGNORE" protected="true" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:lockIsDeep" type="Boolean" valueConstraint="" defaultValues="" autoCreate="false" mandatory="false" onParentVersion="IGNORE" protected="true" primaryItem="false" multiple="false"/>
- </nodeType>
- <nodeType name="mix:referenceable" mixin="true" orderableChildNodes="false" supertypes="">
- <propertyDef name="jcr:uuid" type="String" valueConstraint="" defaultValues="" autoCreate="true" mandatory="true" onParentVersion="INITIALIZE" protected="true" primaryItem="false" multiple="false"/>
- </nodeType>
- <nodeType name="mix:versionable" mixin="true" orderableChildNodes="false" supertypes="mix:referenceable">
- <propertyDef name="jcr:versionHistory" type="Reference" valueConstraint="nt:versionHistory" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="true" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:baseVersion" type="Reference" valueConstraint="nt:version" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="IGNORE" protected="true" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:isCheckedOut" type="Boolean" valueConstraint="" defaultValues="true" autoCreate="false" mandatory="true" onParentVersion="IGNORE" protected="true" primaryItem="false" multiple="false"/>
- <propertyDef name="jcr:predecessors" type="Reference" valueConstraint="nt:version" defaultValues="" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="true" primaryItem="false" multiple="true"/>
+ <nodeType name="mix:lockable" mixin="true" orderableChildNodes="false">
+ <propertyDef name="jcr:lockOwner" type="String" autoCreate="false" mandatory="false" onParentVersion="IGNORE" protected="true" primaryItem="false" multiple="false"/>
+ <propertyDef name="jcr:lockIsDeep" type="Boolean" autoCreate="false" mandatory="false" onParentVersion="IGNORE" protected="true" primaryItem="false" multiple="false"/>
+ </nodeType>
+ <nodeType name="mix:referenceable" mixin="true" orderableChildNodes="false">
+ <propertyDef name="jcr:uuid" type="String" autoCreate="true" mandatory="true" onParentVersion="INITIALIZE" protected="true" primaryItem="false" multiple="false"/>
+ </nodeType>
+ <nodeType name="mix:versionable" mixin="true" orderableChildNodes="false">
+ <supertypes>
+ <supertype>mix:referenceable</supertype>
+ </supertypes>
+ <propertyDef name="jcr:versionHistory" type="Reference" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="true" primaryItem="false" multiple="false">
+ <valueConstraints>
+ <valueConstraint>nt:versionHistory</valueConstraint>
+ </valueConstraints>
+ </propertyDef>
+ <propertyDef name="jcr:baseVersion" type="Reference" autoCreate="false" mandatory="true" onParentVersion="IGNORE" protected="true" primaryItem="false" multiple="false">
+ <valueConstraints>
+ <valueConstraint>nt:version</valueConstraint>
+ </valueConstraints>
+ </propertyDef>
+ <propertyDef name="jcr:isCheckedOut" type="Boolean" autoCreate="false" mandatory="true" onParentVersion="IGNORE" protected="true" primaryItem="false" multiple="false">
+ <defaultValues>
+ <defaultValue>true</defaultValue>
+ </defaultValues>
+ </propertyDef>
+ <propertyDef name="jcr:predecessors" type="Reference" autoCreate="false" mandatory="true" onParentVersion="COPY" protected="true" primaryItem="false" multiple="true">
+ <valueConstraints>
+ <valueConstraint>nt:version</valueConstraint>
+ </valueConstraints>
+ </propertyDef>
</nodeType>
</nodeTypes>