You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2012/09/14 10:27:23 UTC
svn commit: r1384683 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java
oak-jcr/pom.xml
Author: mduerig
Date: Fri Sep 14 08:27:22 2012
New Revision: 1384683
URL: http://svn.apache.org/viewvc?rev=1384683&view=rev
Log:
OAK-66: JCR Node Type Management
NodeTypeTemplate.getDeclaredPropertyDefinitions and getDeclaredNodeDefinitions must return null for an "empty" template
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java
jackrabbit/oak/trunk/oak-jcr/pom.xml
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java?rev=1384683&r1=1384682&r2=1384683&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java Fri Sep 14 08:27:22 2012
@@ -274,16 +274,22 @@ public class NodeTypeManagerImpl extends
}
// TODO fail on invalid item definitions. See 3.7.6.8 Item Definitions in Subtypes
- int pdn = 1;
- for (PropertyDefinition pd : ntd.getDeclaredPropertyDefinitions()) {
- NodeUtil def = node.addChild(JCR_PROPERTYDEFINITION + pdn++, NT_PROPERTYDEFINITION);
- internalRegisterPropertyDefinition(def, pd);
+ PropertyDefinition[] propertyDefinitions = ntd.getDeclaredPropertyDefinitions();
+ if (propertyDefinitions != null) {
+ int pdn = 1;
+ for (PropertyDefinition pd : propertyDefinitions) {
+ NodeUtil def = node.addChild(JCR_PROPERTYDEFINITION + pdn++, NT_PROPERTYDEFINITION);
+ internalRegisterPropertyDefinition(def, pd);
+ }
}
- int ndn = 1;
- for (NodeDefinition nd : ntd.getDeclaredChildNodeDefinitions()) {
- NodeUtil def = node.addChild(JCR_CHILDNODEDEFINITION + ndn++, NT_CHILDNODEDEFINITION);
- internalRegisterNodeDefinition(def, nd);
+ NodeDefinition[] nodeDefinitions = ntd.getDeclaredChildNodeDefinitions();
+ if (nodeDefinitions != null) {
+ int ndn = 1;
+ for (NodeDefinition nd : nodeDefinitions) {
+ NodeUtil def = node.addChild(JCR_CHILDNODEDEFINITION + ndn++, NT_CHILDNODEDEFINITION);
+ internalRegisterNodeDefinition(def, nd);
+ }
}
return new NodeTypeImpl(this, this.factory, node);
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java?rev=1384683&r1=1384682&r2=1384683&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java Fri Sep 14 08:27:22 2012
@@ -48,11 +48,9 @@ final class NodeTypeTemplateImpl
private String[] superTypeNames = new String[0];
- private final List<PropertyDefinitionTemplate> propertyDefinitionTemplates =
- new ArrayList<PropertyDefinitionTemplate>();
+ private List<PropertyDefinitionTemplate> propertyDefinitionTemplates;
- private final List<NodeDefinitionTemplate> nodeDefinitionTemplates =
- new ArrayList<NodeDefinitionTemplate>();
+ private List<NodeDefinitionTemplate> nodeDefinitionTemplates;
public NodeTypeTemplateImpl(NodeTypeManager manager, ValueFactory factory) {
this.manager = manager;
@@ -79,6 +77,7 @@ final class NodeTypeTemplateImpl
}
setDeclaredSuperTypeNames(ntd.getDeclaredSupertypeNames());
+ getPropertyDefinitionTemplates(); // Make sure propertyDefinitionTemplates is initialised
for (PropertyDefinition pd : ntd.getDeclaredPropertyDefinitions()) {
PropertyDefinitionTemplateImpl pdt = newPropertyDefinitionBuilder();
pdt.setDeclaringNodeType(pd.getDeclaringNodeType().getName());
@@ -97,6 +96,7 @@ final class NodeTypeTemplateImpl
pdt.build();
}
+ getNodeDefinitionTemplates(); // Make sure nodeDefinitionTemplates is initialised
for (NodeDefinition nd : ntd.getDeclaredChildNodeDefinitions()) {
NodeDefinitionTemplateImpl ndt = newNodeDefinitionBuilder();
ndt.setDeclaringNodeType(nd.getDeclaringNodeType().getName());
@@ -126,7 +126,7 @@ final class NodeTypeTemplateImpl
}
@Override
public void build() {
- propertyDefinitionTemplates.add(this);
+ getPropertyDefinitionTemplates().add(this);
}
};
}
@@ -145,7 +145,7 @@ final class NodeTypeTemplateImpl
}
@Override
public void build() {
- nodeDefinitionTemplates.add(this);
+ getNodeDefinitionTemplates().add(this);
}
};
}
@@ -236,23 +236,33 @@ final class NodeTypeTemplateImpl
@Override
public List<PropertyDefinitionTemplate> getPropertyDefinitionTemplates() {
+ if (propertyDefinitionTemplates == null) {
+ propertyDefinitionTemplates = new ArrayList<PropertyDefinitionTemplate>();
+ }
return propertyDefinitionTemplates;
}
@Override
public List<NodeDefinitionTemplate> getNodeDefinitionTemplates() {
+ if (nodeDefinitionTemplates == null) {
+ nodeDefinitionTemplates = new ArrayList<NodeDefinitionTemplate>();
+ }
return nodeDefinitionTemplates;
}
@Override
public PropertyDefinition[] getDeclaredPropertyDefinitions() {
- return propertyDefinitionTemplates.toArray(
+ return propertyDefinitionTemplates == null
+ ? null
+ : propertyDefinitionTemplates.toArray(
new PropertyDefinition[propertyDefinitionTemplates.size()]);
}
@Override
public NodeDefinition[] getDeclaredChildNodeDefinitions() {
- return nodeDefinitionTemplates.toArray(
+ return nodeDefinitionTemplates == null
+ ? null
+ : nodeDefinitionTemplates.toArray(
new NodeDefinition[nodeDefinitionTemplates.size()]);
}
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1384683&r1=1384682&r2=1384683&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Fri Sep 14 08:27:22 2012
@@ -69,7 +69,6 @@ org.apache.jackrabbit.test.api.nodetype.
org.apache.jackrabbit.test.api.nodetype.CanSetPropertyLongTest#testConversionsMultiple <!-- OAK-66 -->
org.apache.jackrabbit.test.api.nodetype.CanSetPropertyNameTest#testConversions <!-- OAK-66 -->
org.apache.jackrabbit.test.api.nodetype.CanSetPropertyNameTest#testConversionsMultiple <!-- OAK-66 -->
-org.apache.jackrabbit.test.api.nodetype.NodeTypeCreationTest#testEmptyNodeTypeTemplate <!-- OAK-66 -->
org.apache.jackrabbit.test.api.nodetype.NodeTypeCreationTest#testNewNodeTypeTemplate <!-- OAK-66 -->
org.apache.jackrabbit.test.api.nodetype.NodeTypeCreationTest#testPropertyDefinitionTemplate <!-- OAK-66 -->
org.apache.jackrabbit.test.api.nodetype.NodeTypeCreationTest#testNodeDefinitionTemplate <!-- OAK-66 -->