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/14 10:12:45 UTC
svn commit: r1384681 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/ oak-jcr/
Author: mduerig
Date: Fri Sep 14 08:12:44 2012
New Revision: 1384681
URL: http://svn.apache.org/viewvc?rev=1384681&view=rev
Log:
OAK-66: JCR Node Type Management
Check for valid JCR names in NodeTypeTemplate and friends
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrNameParser.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java
jackrabbit/oak/trunk/oak-jcr/pom.xml
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrNameParser.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrNameParser.java?rev=1384681&r1=1384680&r2=1384681&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrNameParser.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrNameParser.java Fri Sep 14 08:12:44 2012
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.oak.namepath;
+import javax.jcr.nodetype.ConstraintViolationException;
+
import org.apache.jackrabbit.util.XMLChar;
/**
@@ -222,4 +224,10 @@ public class JcrNameParser {
};
return parse(jcrName, listener, 0);
}
+
+ public static void checkName(String jcrName, boolean allowResidual) throws ConstraintViolationException {
+ if (jcrName == null || !(allowResidual && "*".equals(jcrName) || validate(jcrName))) {
+ throw new ConstraintViolationException("Not a valid JCR name '" + jcrName + '\'');
+ }
+ }
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java?rev=1384681&r1=1384680&r2=1384681&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionTemplateImpl.java Fri Sep 14 08:12:44 2012
@@ -21,12 +21,14 @@ import java.util.List;
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NodeDefinitionTemplate;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeTypeTemplate;
import javax.jcr.version.OnParentVersionAction;
import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeDefinitionBuilder;
+import org.apache.jackrabbit.oak.namepath.JcrNameParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -65,7 +67,8 @@ class NodeDefinitionTemplateImpl
}
@Override
- public void setName(String name) {
+ public void setName(String name) throws ConstraintViolationException {
+ JcrNameParser.checkName(name, true);
this.name = name;
}
@@ -143,12 +146,13 @@ class NodeDefinitionTemplateImpl
}
@Override
- public void setDefaultPrimaryTypeName(String name) {
+ public void setDefaultPrimaryTypeName(String name) throws ConstraintViolationException {
+ JcrNameParser.checkName(name, false);
this.defaultPrimaryTypeName = name;
}
@Override
- public void setDefaultPrimaryType(String name) {
+ public void setDefaultPrimaryType(String name) throws ConstraintViolationException {
setDefaultPrimaryTypeName(name);
}
@@ -178,12 +182,16 @@ class NodeDefinitionTemplateImpl
}
@Override
- public void setRequiredPrimaryTypeNames(String[] names) {
+ public void setRequiredPrimaryTypeNames(String[] names) throws ConstraintViolationException {
+ for (String name : names) {
+ JcrNameParser.checkName(name, false);
+ }
this.requiredPrimaryTypeNames = names;
}
@Override
- public void addRequiredPrimaryType(String name) {
+ public void addRequiredPrimaryType(String name) throws ConstraintViolationException {
+ JcrNameParser.checkName(name, false);
if (requiredPrimaryTypeNames == null) {
requiredPrimaryTypeNames = new String[] { name };
} else {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java?rev=1384681&r1=1384680&r2=1384681&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java Fri Sep 14 08:12:44 2012
@@ -22,6 +22,7 @@ import java.util.List;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
+import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NodeDefinition;
import javax.jcr.nodetype.NodeDefinitionTemplate;
import javax.jcr.nodetype.NodeType;
@@ -32,9 +33,10 @@ import javax.jcr.nodetype.PropertyDefini
import javax.jcr.nodetype.PropertyDefinitionTemplate;
import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeTypeDefinitionBuilder;
+import org.apache.jackrabbit.oak.namepath.JcrNameParser;
import org.apache.jackrabbit.value.ValueFactoryImpl;
-class NodeTypeTemplateImpl
+final class NodeTypeTemplateImpl
extends AbstractNodeTypeDefinitionBuilder<NodeTypeTemplate>
implements NodeTypeTemplate {
@@ -63,7 +65,7 @@ class NodeTypeTemplateImpl
public NodeTypeTemplateImpl(
NodeTypeManager manager, ValueFactory factory,
- NodeTypeDefinition ntd) {
+ NodeTypeDefinition ntd) throws ConstraintViolationException {
this(manager, factory);
setName(ntd.getName());
@@ -71,7 +73,10 @@ class NodeTypeTemplateImpl
setMixin(ntd.isMixin());
setOrderableChildNodes(ntd.hasOrderableChildNodes());
setQueryable(ntd.isQueryable());
- setPrimaryItemName(ntd.getPrimaryItemName());
+ String name = ntd.getPrimaryItemName();
+ if (name != null) {
+ setPrimaryItemName(name);
+ }
setDeclaredSuperTypeNames(ntd.getDeclaredSupertypeNames());
for (PropertyDefinition pd : ntd.getDeclaredPropertyDefinitions()) {
@@ -116,8 +121,7 @@ class NodeTypeTemplateImpl
public PropertyDefinitionTemplateImpl newPropertyDefinitionBuilder() {
return new PropertyDefinitionTemplateImpl() {
@Override
- protected Value createValue(String value)
- throws RepositoryException {
+ protected Value createValue(String value) {
return factory.createValue(value);
}
@Override
@@ -152,7 +156,8 @@ class NodeTypeTemplateImpl
}
@Override
- public void setName(String name) {
+ public void setName(String name) throws ConstraintViolationException {
+ JcrNameParser.checkName(name, false);
this.name = name;
}
@@ -202,7 +207,8 @@ class NodeTypeTemplateImpl
}
@Override
- public void setPrimaryItemName(String name) {
+ public void setPrimaryItemName(String name) throws ConstraintViolationException {
+ JcrNameParser.checkName(name, false);
this.primaryItemName = name;
}
@@ -212,12 +218,16 @@ class NodeTypeTemplateImpl
}
@Override
- public void setDeclaredSuperTypeNames(String[] names) {
+ public void setDeclaredSuperTypeNames(String[] names) throws ConstraintViolationException {
+ for (String name : names) {
+ JcrNameParser.checkName(name, false);
+ }
this.superTypeNames = names;
}
@Override
public void addSupertype(String name) throws RepositoryException {
+ JcrNameParser.checkName(name, false);
String[] names = new String[superTypeNames.length + 1];
System.arraycopy(superTypeNames, 0, names, 0, superTypeNames.length);
names[superTypeNames.length] = name;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java?rev=1384681&r1=1384680&r2=1384681&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionTemplateImpl.java Fri Sep 14 08:12:44 2012
@@ -20,12 +20,14 @@ import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
+import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeTypeTemplate;
import javax.jcr.nodetype.PropertyDefinitionTemplate;
import javax.jcr.version.OnParentVersionAction;
import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractPropertyDefinitionBuilder;
+import org.apache.jackrabbit.oak.namepath.JcrNameParser;
class PropertyDefinitionTemplateImpl
extends AbstractPropertyDefinitionBuilder<NodeTypeTemplate>
@@ -60,7 +62,8 @@ class PropertyDefinitionTemplateImpl
}
@Override
- public void setName(String name) {
+ public void setName(String name) throws ConstraintViolationException {
+ JcrNameParser.checkName(name, true);
this.name = name;
}
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1384681&r1=1384680&r2=1384681&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Fri Sep 14 08:12:44 2012
@@ -73,7 +73,6 @@ org.apache.jackrabbit.test.api.nodetype.
org.apache.jackrabbit.test.api.nodetype.NodeTypeCreationTest#testNewNodeTypeTemplate <!-- OAK-66 -->
org.apache.jackrabbit.test.api.nodetype.NodeTypeCreationTest#testPropertyDefinitionTemplate <!-- OAK-66 -->
org.apache.jackrabbit.test.api.nodetype.NodeTypeCreationTest#testNodeDefinitionTemplate <!-- OAK-66 -->
-org.apache.jackrabbit.test.api.nodetype.NodeTypeCreationTest#testInvalidJCRNames <!-- OAK-66 -->
org.apache.jackrabbit.test.api.SetPropertyAssumeTypeTest#testValueConstraintViolationExceptionBecauseOfInvalidTypeParameter
org.apache.jackrabbit.test.api.SetPropertyAssumeTypeTest#testValuesConstraintViolationExceptionBecauseOfInvalidTypeParameter
org.apache.jackrabbit.test.api.SetPropertyAssumeTypeTest#testStringConstraintViolationExceptionBecauseOfInvalidTypeParameter