[exo-jcr-commits] exo-jcr SVN: r5264 - 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
Mon Dec 5 11:04:48 EST 2011
Author: tolusha
Date: 2011-12-05 11:04:47 -0500 (Mon, 05 Dec 2011)
New Revision: 5264
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeImpl.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestNodeDefinition.java
Log:
EXOJCR-1670: avoid NPE when try to check can set multi-valued property when property definition not found
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeImpl.java 2011-12-05 12:47:30 UTC (rev 5263)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeImpl.java 2011-12-05 16:04:47 UTC (rev 5264)
@@ -206,37 +206,37 @@
InternalQName pname = locationFactory.parseJCRName(propertyName).getInternalName();
PropertyDefinitionDatas pdefs = nodeTypeDataManager.getPropertyDefinitions(pname, nodeTypeData.getName());
- PropertyDefinitionData pd = pdefs.getDefinition(true);
- if (pd != null)
+ if (pdefs != null)
{
- if (pd.isProtected())
+ PropertyDefinitionData pd = pdefs.getDefinition(true);
+ if (pd != null)
{
- // can set (edit)
- return false;
- }
- else if (values != null)
- {
- // can set (add or edit)
- int res = 0;
- for (Value value : values)
+ if (pd.isProtected())
{
- if (canSetPropertyForType(pd.getRequiredType(), value, pd.getValueConstraints()))
+ // can set (edit)
+ return false;
+ }
+ else if (values != null)
+ {
+ // can set (add or edit)
+ int res = 0;
+ for (Value value : values)
{
- res++;
+ if (canSetPropertyForType(pd.getRequiredType(), value, pd.getValueConstraints()))
+ {
+ res++;
+ }
}
+ return res == values.length;
}
- return res == values.length;
+ else
+ {
+ // can remove
+ return !pd.isMandatory();
+ }
}
- else
- {
- // can remove
- return !pd.isMandatory();
- }
}
- else
- {
- return false;
- }
+ return false;
}
catch (RepositoryException e)
{
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-12-05 12:47:30 UTC (rev 5263)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestNodeDefinition.java 2011-12-05 16:04:47 UTC (rev 5264)
@@ -24,6 +24,7 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
+import javax.jcr.Value;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.version.Version;
@@ -146,4 +147,16 @@
// ok
}
}
+
+ /**
+ * Testing method canSetProperty for class NodeType.
+ * when we set the multivalue property.......
+ * @throws Exception some exception that occurred in the test.
+ */
+ public void testSetNotAllowedMultiValueProperty() throws Exception
+ {
+ Node n = session.getRootNode().addNode("abc", "nt:folder");
+ session.save();
+ assertFalse(n.getPrimaryNodeType().canSetProperty("test", (Value[])null));
+ }
}
More information about the exo-jcr-commits
mailing list