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/12 18:10:53 UTC
svn commit: r1384010 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/ oak-jcr/
Author: mduerig
Date: Wed Sep 12 16:10:53 2012
New Revision: 1384010
URL: http://svn.apache.org/viewvc?rev=1384010&view=rev
Log:
OAK-66: JCR Node Type Management
property type validation for path and name
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/AbstractNodeTypeManager.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java
jackrabbit/oak/trunk/oak-jcr/pom.xml
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/AbstractNodeTypeManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/AbstractNodeTypeManager.java?rev=1384010&r1=1384009&r2=1384010&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/AbstractNodeTypeManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/AbstractNodeTypeManager.java Wed Sep 12 16:10:53 2012
@@ -37,6 +37,7 @@ import org.apache.jackrabbit.commons.ite
import org.apache.jackrabbit.oak.api.CoreValueFactory;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.namepath.NameMapper;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.namepath.NamePathMapperImpl;
import org.apache.jackrabbit.oak.plugins.memory.MemoryValueFactory;
import org.apache.jackrabbit.oak.util.NodeUtil;
@@ -89,6 +90,11 @@ public abstract class AbstractNodeTypeMa
}
@Nonnull
+ protected NamePathMapper getNamePathMapper() {
+ return NamePathMapper.DEFAULT;
+ }
+
+ @Nonnull
protected CoreValueFactory getCoreValueFactory() {
return MemoryValueFactory.INSTANCE;
}
@@ -112,7 +118,7 @@ public abstract class AbstractNodeTypeMa
if (types != null) {
Tree type = types.getChild(getOakName(name));
if (type != null) {
- return new NodeTypeImpl(this, getValueFactory(),
+ return new NodeTypeImpl(this, getValueFactory(), getNamePathMapper(),
new NodeUtil(type, getCoreValueFactory(), getNameMapper()));
}
}
@@ -125,7 +131,7 @@ public abstract class AbstractNodeTypeMa
Tree types = getTypes();
if (types != null) {
for (Tree type : types.getChildren()) {
- list.add(new NodeTypeImpl(this, getValueFactory(),
+ list.add(new NodeTypeImpl(this, getValueFactory(), getNamePathMapper(),
new NodeUtil(type, getCoreValueFactory(), getNameMapper())));
}
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=1384010&r1=1384009&r2=1384010&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 Wed Sep 12 16:10:53 2012
@@ -42,6 +42,7 @@ import javax.jcr.nodetype.PropertyDefini
import javax.security.auth.Subject;
import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager;
import org.apache.jackrabbit.oak.plugins.type.constraint.Constraints;
import org.apache.jackrabbit.oak.spi.security.principal.AdminPrincipal;
@@ -80,13 +81,16 @@ class NodeTypeImpl implements NodeType {
private final NodeTypeManager manager;
+ private final NamePathMapper mapper;
+
private final ValueFactory factory;
private final NodeUtil node;
public NodeTypeImpl(
- NodeTypeManager manager, ValueFactory factory, NodeUtil node) {
+ NodeTypeManager manager, ValueFactory factory, NamePathMapper mapper, NodeUtil node) {
this.manager = manager;
+ this.mapper = mapper;
this.factory = factory;
this.node = node;
}
@@ -306,7 +310,7 @@ class NodeTypeImpl implements NodeType {
return false;
}
- private static boolean meetsTypeConstraints(Value value, int requiredType) {
+ private boolean meetsTypeConstraints(Value value, int requiredType) {
try {
switch (requiredType) {
case PropertyType.STRING:
@@ -328,13 +332,13 @@ class NodeTypeImpl implements NodeType {
value.getBoolean();
return true;
case PropertyType.NAME:
- // TODO check type constraint for name
- value.getString();
- return true;
+ return mapper.getOakName(value.getString()) != null;
case PropertyType.PATH:
- // TODO check type constraint for path
- value.getString();
- return true;
+ int type = value.getType();
+ return type != PropertyType.DOUBLE &&
+ type != PropertyType.LONG &&
+ type != PropertyType.BOOLEAN &&
+ mapper.getOakPath(value.getString()) != null;
case PropertyType.REFERENCE:
case PropertyType.WEAKREFERENCE:
return IdentifierManager.isValidUUID(value.getString());
@@ -359,7 +363,7 @@ class NodeTypeImpl implements NodeType {
}
}
- private static boolean meetsTypeConstraints(Value[] values, int requiredType) {
+ private boolean meetsTypeConstraints(Value[] values, int requiredType) {
// Constraints must be met by all values
for (Value value : values) {
if (!meetsTypeConstraints(value, requiredType)) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java?rev=1384010&r1=1384009&r2=1384010&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java Wed Sep 12 16:10:53 2012
@@ -22,6 +22,7 @@ import java.security.PrivilegedAction;
import java.util.List;
import java.util.Map;
+import javax.annotation.Nonnull;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
@@ -49,6 +50,7 @@ import org.apache.jackrabbit.oak.api.Roo
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.core.DefaultConflictHandler;
import org.apache.jackrabbit.oak.namepath.NameMapper;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.namepath.NamePathMapperImpl;
import org.apache.jackrabbit.oak.spi.security.principal.AdminPrincipal;
import org.apache.jackrabbit.oak.util.NodeUtil;
@@ -90,11 +92,11 @@ public class NodeTypeManagerImpl extends
private final ContentSession session;
- private final NameMapper mapper;
+ private final NamePathMapper mapper;
private final ValueFactory factory;
- public NodeTypeManagerImpl(ContentSession session, NameMapper mapper, ValueFactory factory) {
+ public NodeTypeManagerImpl(ContentSession session, NamePathMapper mapper, ValueFactory factory) {
this.session = session;
this.mapper = mapper;
this.factory = factory;
@@ -176,6 +178,12 @@ public class NodeTypeManagerImpl extends
return factory;
}
+ @Nonnull
+ @Override
+ protected NamePathMapper getNamePathMapper() {
+ return mapper;
+ }
+
@Override
protected CoreValueFactory getCoreValueFactory() {
return session.getCoreValueFactory();
@@ -267,7 +275,7 @@ public class NodeTypeManagerImpl extends
internalRegisterNodeDefinition(def, nd);
}
- return new NodeTypeImpl(this, this.factory, node);
+ return new NodeTypeImpl(this, this.factory, this.mapper, node);
}
private static void internalRegisterItemDefinition(
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1384010&r1=1384009&r2=1384010&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Wed Sep 12 16:10:53 2012
@@ -69,7 +69,6 @@ org.apache.jackrabbit.test.api.HasPermis
org.apache.jackrabbit.test.api.lock.LockManagerTest#testAddInvalidLockToken
org.apache.jackrabbit.test.api.lock.LockManagerTest#testLockNonLockable
org.apache.jackrabbit.test.api.nodetype.PropertyDefTest#testIsMandatory
-org.apache.jackrabbit.test.api.nodetype.CanSetPropertyPathTest#testConversions
org.apache.jackrabbit.test.api.LifecycleTest
org.apache.jackrabbit.test.api.query.ElementTest#testElementTestNameTestSomeNTWithSNS<!-- OAK-203 -->
org.apache.jackrabbit.test.api.query.GetPropertyNamesTest#testGetPropertyNames