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/07 14:55:49 UTC
svn commit: r1382002 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java
oak-jcr/pom.xml
Author: mduerig
Date: Fri Sep 7 12:55:49 2012
New Revision: 1382002
URL: http://svn.apache.org/viewvc?rev=1382002&view=rev
Log:
OAK-66: JCR Node Type Management
value constraints for multi valued properties
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java
jackrabbit/oak/trunk/oak-jcr/pom.xml
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java?rev=1382002&r1=1382001&r2=1382002&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java Fri Sep 7 12:55:49 2012
@@ -275,12 +275,10 @@ class NodeTypeImpl implements NodeType {
if ((propertyName.equals(name) && !isProtected(definition))
|| "*".equals(name)) {
if (!definition.isMultiple()) {
-
- // TODO: Check value type, etc.
if (!meetsValueConstraints(value, definition.getValueConstraints())) {
return false;
}
-
+ // TODO: Check value type, etc.
return true;
}
}
@@ -299,7 +297,10 @@ class NodeTypeImpl implements NodeType {
if ((propertyName.equals(name) && !isProtected(definition))
|| "*".equals(name)) {
if (definition.isMultiple()) {
- // TODO: Check value type, constraints, etc.
+ if (!meetsValueConstraints(values, definition.getValueConstraints())) {
+ return false;
+ }
+ // TODO: Check value type, etc.
return true;
}
}
@@ -312,6 +313,7 @@ class NodeTypeImpl implements NodeType {
return true;
}
+ // Any of the constraints must be met
for (String constraint : constraints) {
if (Constraints.valueConstraint(value.getType(), constraint).apply(value)) {
return true;
@@ -321,6 +323,21 @@ class NodeTypeImpl implements NodeType {
return false;
}
+ private static boolean meetsValueConstraints(Value[] values, String[] constraints) {
+ if (constraints == null || constraints.length == 0) {
+ return true;
+ }
+
+ // Constraints must be met by all values
+ for (Value value : values) {
+ if (!meetsValueConstraints(value, constraints)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
@Override
public boolean canAddChildNode(String childNodeName) {
for (NodeDefinition definition : getChildNodeDefinitions()) {
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1382002&r1=1382001&r2=1382002&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Fri Sep 7 12:55:49 2012
@@ -73,7 +73,6 @@ org.apache.jackrabbit.test.api.lock.Lock
org.apache.jackrabbit.test.api.SetPropertyConstraintViolationExceptionTest<!-- OAK-66 -->
org.apache.jackrabbit.test.api.SetValueConstraintViolationExceptionTest<!-- OAK-66 -->
org.apache.jackrabbit.test.api.nodetype.PropertyDefTest#testIsMandatory
-org.apache.jackrabbit.test.api.nodetype.CanSetPropertyBinaryTest#testValueConstraintNotSatisfiedMultiple<!-- OAK-66 -->
org.apache.jackrabbit.test.api.nodetype.CanSetPropertyDateTest#testConversions
org.apache.jackrabbit.test.api.nodetype.CanSetPropertyPathTest#testConversions
org.apache.jackrabbit.test.api.nodetype.CanAddChildNodeCallWithNodeTypeTest#testCanAddAbstractType <!-- OAK-66 -->