[exo-jcr-commits] exo-jcr SVN: r4735 - in jcr/trunk/exo.jcr.component.core/src: test/java/org/exoplatform/services/jcr/api/nodetypes and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Aug 11 04:03:21 EDT 2011
Author: areshetnyak
Date: 2011-08-11 04:03:20 -0400 (Thu, 11 Aug 2011)
New Revision: 4735
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestNodeDefinition.java
Log:
EXOJCR-1468 : Problem with NullPointerExceptin if default primary type not defined and no explicit primary type given to create a child node was fixed. Now, for this use case will be throw a ConstraintViolationException.
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2011-08-10 14:46:39 UTC (rev 4734)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2011-08-11 08:03:20 UTC (rev 4735)
@@ -297,6 +297,14 @@
if (nodeDef.getName().equals(name) || primaryTypeName.equals(Constants.JCR_ANY_NAME))
{
+ if (nodeDef.getDefaultPrimaryType() == null)
+ {
+ throw new ConstraintViolationException("Can not define node type for " + name.getAsString()
+ + ". No default primary type defined for child nodes in \""
+ + nodeData().getPrimaryTypeName().getAsString()
+ + "\" node type and no explicit primary type given to create a child node.");
+ }
+
primaryTypeName = nodeDef.getDefaultPrimaryType();
}
// try to make new node
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestNodeDefinition.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestNodeDefinition.java 2011-08-10 14:46:39 UTC (rev 4734)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestNodeDefinition.java 2011-08-11 08:03:20 UTC (rev 4735)
@@ -24,6 +24,7 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
+import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.version.Version;
/**
@@ -111,4 +112,38 @@
fail();
}
}
+
+ public void testNodeTypeNotDeterminedNtFolder() throws Exception
+ {
+ Node root = session.getRootNode();
+ Node folder = root.addNode("abc", "nt:folder");
+
+ try
+ {
+ folder.addNode("def");
+ fail("Should be throw ConstraintViolationException, because node type for node \"def\" "
+ + "was not defined and default primary type for child nodes in \"nt:folder\" node type is not define.");
+ }
+ catch (ConstraintViolationException e)
+ {
+ // ok
+ }
+ }
+
+ public void testNodeTypeNotDeterminedNtFile2() throws Exception
+ {
+ Node root = session.getRootNode();
+ Node folder = root.addNode("abc", "nt:file");
+
+ try
+ {
+ folder.addNode("jcr:content");
+ fail("Should be throw ConstraintViolationException, because node type for node \"jcr:content\" "
+ + "was not defined and default primary type for child nodes in \"nt:file\" node type is not define.");
+ }
+ catch (ConstraintViolationException e)
+ {
+ // ok
+ }
+ }
}
More information about the exo-jcr-commits
mailing list