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/05/22 14:22:58 UTC
svn commit: r1485183 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeDefinitionImpl.java
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
Author: jukka
Date: Wed May 22 12:22:58 2013
New Revision: 1485183
URL: http://svn.apache.org/r1485183
Log:
OAK-826: NodeDefinition#getRequiredPrimaryTypes throws IllegalStateException
The node definitions can be at different depths of the /jcr:system/jcr:nodeTypes subtree, so we need a more flexible way to find the root of that subtree
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeDefinitionImpl.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeDefinitionImpl.java?rev=1485183&r1=1485182&r2=1485183&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeDefinitionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeDefinitionImpl.java Wed May 22 12:22:58 2013
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.oak.plugins.nodetype;
import static com.google.common.base.Preconditions.checkState;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_NODE_TYPES;
import javax.jcr.nodetype.NodeDefinition;
import javax.jcr.nodetype.NodeType;
@@ -85,7 +86,11 @@ class NodeDefinitionImpl extends ItemDef
public NodeType getDefaultPrimaryType() {
String oakName = getName(JcrConstants.JCR_DEFAULTPRIMARYTYPE);
if (oakName != null) {
- Tree type = definition.getParent().getParent().getChild(oakName);
+ Tree types = definition.getParent();
+ while (!JCR_NODE_TYPES.equals(types.getName())) {
+ types = types.getParent();
+ }
+ Tree type = types.getChild(oakName);
checkState(type.exists());
return new NodeTypeImpl(type, mapper);
} else {
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java?rev=1485183&r1=1485182&r2=1485183&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java Wed May 22 12:22:58 2013
@@ -19,6 +19,7 @@
package org.apache.jackrabbit.oak.jcr;
import static java.util.Arrays.asList;
+import static org.apache.jackrabbit.commons.JcrUtils.getChildNodes;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -64,6 +65,7 @@ import javax.jcr.Session;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NodeDefinition;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeTypeTemplate;
@@ -74,7 +76,6 @@ import javax.jcr.observation.Observation
import com.google.common.collect.Sets;
import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.commons.JcrUtils;
import org.apache.jackrabbit.commons.cnd.CndImporter;
import org.apache.jackrabbit.commons.cnd.ParseException;
import org.junit.Before;
@@ -2157,9 +2158,9 @@ public class RepositoryTest extends Abst
Session session = getAdminSession();
Node node = session.getNode("/jcr:system/jcr:nodeTypes/nt:file");
// TODO: use getNode("jcr:childNodeDefinition[1]") once that works
- for (Node definition
- : JcrUtils.getChildNodes(node, "jcr:childNodeDefinition")) {
- definition.getDefinition(); // should not throw
+ for (Node child : getChildNodes(node, "jcr:childNodeDefinition")) {
+ NodeDefinition definition = child.getDefinition(); // OAK-829
+ definition.getDefaultPrimaryType(); // OAK-826
}
}