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 ju...@apache.org on 2013/11/12 21:52:30 UTC
svn commit: r1541230 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/
oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/nodetype/write/
oak-jcr/ oak-jcr/src/test/java/org/apache/jackrabbit/oak/j...
Author: jukka
Date: Tue Nov 12 20:52:30 2013
New Revision: 1541230
URL: http://svn.apache.org/r1541230
Log:
OAK-901: Test root node type is not reported correctly
Track the declaring node type in the pre-compiled lists of named and
residual item definitions, so we can filter them per type. This fixes
the problem where NodeTypeImpl.getDeclared*Definitions() would return
also inherited definitions, not just those declared in that node type.
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveNodeType.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeConstants.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/RegistrationEditor.java
jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/nodetype/write/builtin_nodetypes.cnd
jackrabbit/oak/trunk/oak-jcr/pom.xml
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeDefinitionTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveNodeType.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveNodeType.java?rev=1541230&r1=1541229&r2=1541230&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveNodeType.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveNodeType.java Tue Nov 12 20:52:30 2013
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.oak.plugins.nodetype;
import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.Lists.newArrayList;
import static javax.jcr.PropertyType.UNDEFINED;
import static org.apache.jackrabbit.JcrConstants.NT_BASE;
@@ -43,6 +44,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
/**
@@ -225,15 +227,12 @@ public class EffectiveNodeType {
*/
@Nonnull
public Iterable<PropertyDefinition> getNamedPropertyDefinitions(
- final String oakName) {
- return Iterables.concat(Iterables.transform(
- nodeTypes.values(),
- new Function<NodeTypeImpl, Iterable<PropertyDefinition>>() {
- @Override
- public Iterable<PropertyDefinition> apply(NodeTypeImpl input) {
- return input.getDeclaredNamedPropertyDefinitions(oakName);
- }
- }));
+ String oakName) {
+ List<PropertyDefinition> definitions = newArrayList();
+ for (NodeTypeImpl type : nodeTypes.values()) {
+ definitions.addAll(type.getDeclaredNamedPropertyDefinitions(oakName));
+ }
+ return definitions;
}
/**
@@ -243,14 +242,11 @@ public class EffectiveNodeType {
*/
@Nonnull
public Iterable<NodeDefinition> getResidualNodeDefinitions() {
- return Iterables.concat(Iterables.transform(
- nodeTypes.values(),
- new Function<NodeTypeImpl, Iterable<NodeDefinition>>() {
- @Override
- public Iterable<NodeDefinition> apply(NodeTypeImpl input) {
- return input.getDeclaredResidualNodeDefinitions();
- }
- }));
+ List<NodeDefinition> definitions = newArrayList();
+ for (NodeTypeImpl type : nodeTypes.values()) {
+ definitions.addAll(type.getDeclaredResidualNodeDefinitions());
+ }
+ return definitions;
}
/**
@@ -260,14 +256,11 @@ public class EffectiveNodeType {
*/
@Nonnull
public Iterable<PropertyDefinition> getResidualPropertyDefinitions() {
- return Iterables.concat(Iterables.transform(
- nodeTypes.values(),
- new Function<NodeTypeImpl, Iterable<PropertyDefinition>>() {
- @Override
- public Iterable<PropertyDefinition> apply(NodeTypeImpl input) {
- return input.getDeclaredResidualPropertyDefinitions();
- }
- }));
+ List<PropertyDefinition> definitions = newArrayList();
+ for (NodeTypeImpl type : nodeTypes.values()) {
+ definitions.addAll(type.getDeclaredResidualPropertyDefinitions());
+ }
+ return definitions;
}
public void checkSetProperty(PropertyState property) throws RepositoryException {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeConstants.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeConstants.java?rev=1541230&r1=1541229&r2=1541230&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeConstants.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeConstants.java Tue Nov 12 20:52:30 2013
@@ -55,7 +55,7 @@ public interface NodeTypeConstants exten
String RESIDUAL_NAME = "*";
- // Precompiled Oak type information fields
+ // Pre-compiled Oak type information fields
String OAK_SUPERTYPES = "oak:supertypes";
String OAK_PRIMARY_SUBTYPES = "oak:primarySubtypes";
String OAK_MIXIN_SUBTYPES = "oak:mixinSubtypes";
@@ -63,21 +63,20 @@ public interface NodeTypeConstants exten
String OAK_MANDATORY_CHILD_NODES = "oak:mandatoryChildNodes";
String OAK_PROTECTED_PROPERTIES = "oak:protectedProperties";
String OAK_PROTECTED_CHILD_NODES = "oak:protectedChildNodes";
- String OAK_HAS_PROTECTED_RESIDUAL_PROPERTIES =
- "oak:hasProtectedResidualProperties";
- String OAK_HAS_PROTECTED_RESIDUAL_CHILD_NODES =
- "oak:hasProtectedResidualChildNodes";
- String OAK_NAMED_SINGLE_VALUED_PROPERTIES =
- "oak:namedSingleValuedProperties";
- String OAK_RESIDUAL_CHILD_NODE_DEFINITIONS =
- "oak:residualChildNodeDefinitions";
- String OAK_NAMED_CHILD_NODE_DEFINITIONS =
- "oak:namedChildNodeDefinitions";
- String OAK_RESIDUAL_PROPERTY_DEFINITIONS =
- "oak:residualPropertyDefinitions";
- String OAK_NAMED_PROPERTY_DEFINITIONS =
- "oak:namedPropertyDefinitions";
+ String OAK_HAS_PROTECTED_RESIDUAL_PROPERTIES = "oak:hasProtectedResidualProperties";
+ String OAK_HAS_PROTECTED_RESIDUAL_CHILD_NODES = "oak:hasProtectedResidualChildNodes";
+ String OAK_NAMED_SINGLE_VALUED_PROPERTIES = "oak:namedSingleValuedProperties";
+ String OAK_RESIDUAL_CHILD_NODE_DEFINITIONS = "oak:residualChildNodeDefinitions";
+ String OAK_NAMED_CHILD_NODE_DEFINITIONS = "oak:namedChildNodeDefinitions";
+ String OAK_RESIDUAL_PROPERTY_DEFINITIONS = "oak:residualPropertyDefinitions";
+ String OAK_NAMED_PROPERTY_DEFINITIONS = "oak:namedPropertyDefinitions";
String OAK_PROPERTY_DEFINITIONS = "oak:propertyDefinitions";
+ String OAK_PROPERTY_DEFINITION = "oak:propertyDefinition";
String OAK_CHILD_NODE_DEFINITIONS = "oak:childNodeDefinitions";
+ String OAK_CHILD_NODE_DEFINITION = "oak:childNodeDefinition";
+ String OAK_DECLARING_NODE_TYPE = "oak:declaringNodeType";
+ String OAK_PRIMARY_TYPE = "oak:primaryType";
+ String OAK_MIXIN_TYPES = "oak:mixinTypes";
+ String OAK_UUID = "oak:uuid";
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java?rev=1541230&r1=1541229&r2=1541230&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java Tue Nov 12 20:52:30 2013
@@ -23,7 +23,6 @@ import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -50,16 +49,17 @@ import org.apache.jackrabbit.oak.namepat
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager;
import org.apache.jackrabbit.oak.plugins.nodetype.constraint.Constraints;
+import org.apache.jackrabbit.oak.util.TreeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import static com.google.common.base.Preconditions.checkState;
+import static com.google.common.collect.Lists.newArrayList;
+import static java.util.Collections.emptyList;
import static org.apache.jackrabbit.JcrConstants.JCR_CHILDNODEDEFINITION;
import static org.apache.jackrabbit.JcrConstants.JCR_HASORDERABLECHILDNODES;
import static org.apache.jackrabbit.JcrConstants.JCR_ISMIXIN;
@@ -72,6 +72,14 @@ import static org.apache.jackrabbit.JcrC
import static org.apache.jackrabbit.JcrConstants.JCR_UUID;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_IS_ABSTRACT;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_IS_QUERYABLE;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_DECLARING_NODE_TYPE;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_MIXIN_TYPES;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_NAMED_CHILD_NODE_DEFINITIONS;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_NAMED_PROPERTY_DEFINITIONS;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_PRIMARY_TYPE;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_RESIDUAL_CHILD_NODE_DEFINITIONS;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_RESIDUAL_PROPERTY_DEFINITIONS;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_UUID;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.RESIDUAL_NAME;
/**
@@ -507,70 +515,68 @@ class NodeTypeImpl extends AbstractTypeD
return definitions;
}
- Iterable<PropertyDefinition> getDeclaredNamedPropertyDefinitions(String oakName) {
- Tree named = definition.getChild("oak:namedPropertyDefinitions");
- if (named.exists()) {
- String escapedName;
- if (JCR_PRIMARYTYPE.equals(oakName)) {
- escapedName = "oak:primaryType";
- } else if (JCR_MIXINTYPES.equals(oakName)) {
- escapedName = "oak:mixinTypes";
- } else if (JCR_UUID.equals(oakName)) {
- escapedName = "oak:uuid";
- } else {
- escapedName = oakName;
- }
- Tree definitions = named.getChild(escapedName);
- return Iterables.transform(
- definitions.getChildren(),
- new Function<Tree, PropertyDefinition>() {
- @Override
- public PropertyDefinition apply(Tree input) {
- return new PropertyDefinitionImpl(
- input, NodeTypeImpl.this, mapper);
- }
- });
- }
- return Collections.emptyList();
- }
-
- Iterable<PropertyDefinition> getDeclaredResidualPropertyDefinitions() {
- Tree definitions = definition.getChild("oak:residualPropertyDefinitions");
- return Iterables.transform(
- definitions.getChildren(),
- new Function<Tree, PropertyDefinition>() {
- @Override
- public PropertyDefinition apply(Tree input) {
- return new PropertyDefinitionImpl(
- input, NodeTypeImpl.this, mapper);
- }
- });
- }
-
- Iterable<NodeDefinition> getDeclaredNamedNodeDefinitions(String oakName) {
- Tree definitions = definition.getChild("oak:namedChildNodeDefinitions").getChild(oakName);
- return Iterables.transform(
- definitions.getChildren(),
- new Function<Tree, NodeDefinition>() {
- @Override
- public NodeDefinition apply(Tree input) {
- return new NodeDefinitionImpl(
- input, NodeTypeImpl.this, mapper);
- }
- });
+ List<PropertyDefinition> getDeclaredNamedPropertyDefinitions(String oakName) {
+ String escapedName = oakName;
+ if (JCR_PRIMARYTYPE.equals(oakName)) {
+ escapedName = OAK_PRIMARY_TYPE;
+ } else if (JCR_MIXINTYPES.equals(oakName)) {
+ escapedName = OAK_MIXIN_TYPES;
+ } else if (JCR_UUID.equals(oakName)) {
+ escapedName = OAK_UUID;
+ }
+ return getDeclaredPropertyDefs(definition
+ .getChild(OAK_NAMED_PROPERTY_DEFINITIONS)
+ .getChild(escapedName));
+ }
+
+ List<PropertyDefinition> getDeclaredResidualPropertyDefinitions() {
+ return getDeclaredPropertyDefs(definition
+ .getChild(OAK_RESIDUAL_PROPERTY_DEFINITIONS));
+ }
+
+ List<NodeDefinition> getDeclaredNamedNodeDefinitions(String oakName) {
+ return getDeclaredNodeDefs(definition
+ .getChild(OAK_NAMED_CHILD_NODE_DEFINITIONS)
+ .getChild(oakName));
+ }
+
+ List<NodeDefinition> getDeclaredResidualNodeDefinitions() {
+ return getDeclaredNodeDefs(definition
+ .getChild(OAK_RESIDUAL_CHILD_NODE_DEFINITIONS));
+ }
+
+ private List<PropertyDefinition> getDeclaredPropertyDefs(Tree definitions) {
+ if (definitions.exists()) {
+ List<PropertyDefinition> list = newArrayList();
+ String typeName = getOakName();
+ for (Tree def : definitions.getChildren()) {
+ String declaringTypeName =
+ TreeUtil.getName(def, OAK_DECLARING_NODE_TYPE);
+ if (typeName.equals(declaringTypeName)) {
+ list.add(new PropertyDefinitionImpl(def, this, mapper));
+ }
+ }
+ return list;
+ } else {
+ return emptyList();
+ }
}
- Iterable<NodeDefinition> getDeclaredResidualNodeDefinitions() {
- Tree definitions = definition.getChild("oak:residualChildNodeDefinitions");
- return Iterables.transform(
- definitions.getChildren(),
- new Function<Tree, NodeDefinition>() {
- @Override
- public NodeDefinition apply(Tree input) {
- return new NodeDefinitionImpl(
- input, NodeTypeImpl.this, mapper);
- }
- });
+ private List<NodeDefinition> getDeclaredNodeDefs(Tree defs) {
+ if (defs.exists()) {
+ List<NodeDefinition> list = newArrayList();
+ String typeName = getOakName();
+ for (Tree def : defs.getChildren()) {
+ String declaringTypeName =
+ TreeUtil.getName(def, OAK_DECLARING_NODE_TYPE);
+ if (typeName.equals(declaringTypeName)) {
+ list.add(new NodeDefinitionImpl(def, this, mapper));
+ }
+ }
+ return list;
+ } else {
+ return emptyList();
+ }
}
//--------------------------------------------------------------------------
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/RegistrationEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/RegistrationEditor.java?rev=1541230&r1=1541229&r2=1541230&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/RegistrationEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/RegistrationEditor.java Tue Nov 12 20:52:30 2013
@@ -44,15 +44,20 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.api.Type.NAMES;
import static org.apache.jackrabbit.oak.api.Type.STRING;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_NODE_TYPES;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_CHILD_NODE_DEFINITION;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_CHILD_NODE_DEFINITIONS;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_DECLARING_NODE_TYPE;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_HAS_PROTECTED_RESIDUAL_CHILD_NODES;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_HAS_PROTECTED_RESIDUAL_PROPERTIES;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_MANDATORY_CHILD_NODES;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_MANDATORY_PROPERTIES;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_MIXIN_SUBTYPES;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_MIXIN_TYPES;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_NAMED_CHILD_NODE_DEFINITIONS;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_NAMED_SINGLE_VALUED_PROPERTIES;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_NAMED_PROPERTY_DEFINITIONS;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_PRIMARY_TYPE;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_PROPERTY_DEFINITION;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_PROPERTY_DEFINITIONS;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_PROTECTED_CHILD_NODES;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_PROTECTED_PROPERTIES;
@@ -60,6 +65,7 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_RESIDUAL_PROPERTY_DEFINITIONS;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_PRIMARY_SUBTYPES;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_SUPERTYPES;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.OAK_UUID;
import java.util.Collections;
import java.util.LinkedHashSet;
@@ -254,9 +260,9 @@ class RegistrationEditor extends Default
for (String childNodeName : type.getChildNodeNames()) {
NodeState definition = type.child(childNodeName).getNodeState();
if (childNodeName.startsWith(JCR_PROPERTYDEFINITION)) {
- validateAndCompilePropertyDefinition(type, definition);
+ validateAndCompilePropertyDefinition(type, name, definition);
} else if (childNodeName.startsWith(JCR_CHILDNODEDEFINITION)) {
- validateAndCompileChildNodeDefinition(types, type, definition);
+ validateAndCompileChildNodeDefinition(types, type, name, definition);
}
}
}
@@ -271,7 +277,7 @@ class RegistrationEditor extends Default
}
private void validateAndCompilePropertyDefinition(
- NodeBuilder type, NodeState definition)
+ NodeBuilder type, String typeName, NodeState definition)
throws CommitFailedException {
// - jcr:name (NAME) protected
PropertyState name = definition.getProperty(JCR_NAME);
@@ -281,11 +287,11 @@ class RegistrationEditor extends Default
propertyName = name.getValue(NAME);
String escapedName = propertyName;
if (JCR_PRIMARYTYPE.equals(escapedName)) {
- escapedName = "oak:primaryType";
+ escapedName = OAK_PRIMARY_TYPE;
} else if (JCR_MIXINTYPES.equals(escapedName)) {
- escapedName = "oak:mixinTypes";
+ escapedName = OAK_MIXIN_TYPES;
} else if (JCR_UUID.equals(escapedName)) {
- escapedName = "oak:uuid";
+ escapedName = OAK_UUID;
}
definitions = type.child(OAK_NAMED_PROPERTY_DEFINITIONS);
definitions.setProperty(
@@ -332,12 +338,14 @@ class RegistrationEditor extends Default
addNameToList(type, OAK_NAMED_SINGLE_VALUED_PROPERTIES, propertyName);
}
- definitions.setChildNode(key, definition);
+ definitions.setChildNode(key, definition)
+ .setProperty(JCR_PRIMARYTYPE, OAK_PROPERTY_DEFINITION, NAME)
+ .setProperty(OAK_DECLARING_NODE_TYPE, typeName, NAME);
}
private void validateAndCompileChildNodeDefinition(
- NodeBuilder types, NodeBuilder type, NodeState definition)
- throws CommitFailedException {
+ NodeBuilder types, NodeBuilder type, String typeName,
+ NodeState definition) throws CommitFailedException {
// - jcr:name (NAME) protected
PropertyState name = definition.getProperty(JCR_NAME);
NodeBuilder definitions;
@@ -378,7 +386,9 @@ class RegistrationEditor extends Default
"Constraint", 33,
"Unknown required primary type " + key);
} else if (!definitions.hasChildNode(key)) {
- definitions.setChildNode(key, definition);
+ definitions.setChildNode(key, definition)
+ .setProperty(JCR_PRIMARYTYPE, OAK_CHILD_NODE_DEFINITION, NAME)
+ .setProperty(OAK_DECLARING_NODE_TYPE, typeName, NAME);
}
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/nodetype/write/builtin_nodetypes.cnd
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/nodetype/write/builtin_nodetypes.cnd?rev=1541230&r1=1541229&r2=1541230&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/nodetype/write/builtin_nodetypes.cnd (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/nodetype/write/builtin_nodetypes.cnd Tue Nov 12 20:52:30 2013
@@ -444,26 +444,23 @@
+ oak:namedChildNodeDefinitions (oak:namedChildNodeDefinitions) = oak:namedChildNodeDefinitions protected mandatory
+ oak:residualChildNodeDefinitions (oak:childNodeDefinitions) = oak:childNodeDefinitions protected mandatory
-/**
- * @since oak 1.0
- */
[oak:namedPropertyDefinitions]
+ * (oak:propertyDefinitions) = oak:propertyDefinitions protected
-/**
- * @since oak 1.0
- */
[oak:propertyDefinitions]
- + * (nt:propertyDefinition) = nt:propertyDefinition protected
+ + * (oak:propertyDefinition) = oak:propertyDefinition protected
+
+[oak:propertyDefinition] > nt:propertyDefinition
+ - oak:declaringNodeType (NAME) protected mandatory
[oak:namedChildNodeDefinitions]
+ * (oak:childNodeDefinitions) = oak:childNodeDefinitions protected
-/**
- * @since oak 1.0
- */
[oak:childNodeDefinitions]
- + * (nt:childNodeDefinition) = nt:childNodeDefinition protected
+ + * (oak:childNodeDefinition) = oak:childNodeDefinition protected
+
+[oak:childNodeDefinition] > nt:childNodeDefinition
+ - oak:declaringNodeType (NAME) protected mandatory
/**
* This node type used to store a property definition within a node type definition,
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1541230&r1=1541229&r2=1541230&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Tue Nov 12 20:52:30 2013
@@ -75,6 +75,10 @@
<!-- Observation -->
org.apache.jackrabbit.test.api.observation.GetIdentifierTest#testNodeMoved <!-- Move in 2nd session not reflected in nodes of 1st session -->
+ org.apache.jackrabbit.test.api.observation.NodeReorderTest#testNodeReorderAddRemove <!-- Uses SNS -->
+ org.apache.jackrabbit.test.api.observation.NodeReorderTest#testNodeReorderSameName <!-- Uses SNS -->
+ org.apache.jackrabbit.test.api.observation.NodeReorderTest#testNodeReorderSameNameWithRemove <!-- Uses SNS -->
+ org.apache.jackrabbit.core.observation.ReorderTest <!-- Uses SNS -->
<!-- Versioning -->
org.apache.jackrabbit.test.api.version.VersionTest#testUpdate
@@ -170,7 +174,6 @@
org.apache.jackrabbit.core.query.SQL2OrderByTest#testOrderByScore <!-- JCR-3677 -->
<!-- Node Types -->
- org.apache.jackrabbit.oak.jcr.nodetype.NodeDefinitionTest#testRootType <!-- OAK-901 -->
org.apache.jackrabbit.oak.jcr.nodetype.MixinTest#testRemoveAddMixVersionable1 <!-- OAK-1118 -->
</known.issues>
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeDefinitionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeDefinitionTest.java?rev=1541230&r1=1541229&r2=1541230&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeDefinitionTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeDefinitionTest.java Tue Nov 12 20:52:30 2013
@@ -30,7 +30,6 @@ import javax.jcr.nodetype.PropertyDefini
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.test.AbstractJCRTest;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
public class NodeDefinitionTest extends AbstractJCRTest {
@@ -102,9 +101,9 @@ public class NodeDefinitionTest extends
}
@Test
- @Ignore("OAK-901")
public void testRootType() throws RepositoryException {
assertEquals(testNodeTypeTestRoot, testRootNode.getDefinition()
.getDeclaringNodeType().getName());
}
+
}
\ No newline at end of file