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 re...@apache.org on 2012/05/14 16:43:23 UTC
svn commit: r1338229 - in /jackrabbit/oak/trunk: oak-it/jcr/
oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/
oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/
Author: reschke
Date: Mon May 14 14:43:22 2012
New Revision: 1338229
URL: http://svn.apache.org/viewvc?rev=1338229&view=rev
Log:
OAK-23: implement identifier paths in property values (WIP); update test exclusions
Modified:
jackrabbit/oak/trunk/oak-it/jcr/pom.xml
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java
Modified: jackrabbit/oak/trunk/oak-it/jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/jcr/pom.xml?rev=1338229&r1=1338228&r2=1338229&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-it/jcr/pom.xml Mon May 14 14:43:22 2012
@@ -47,8 +47,6 @@
org.apache.jackrabbit.test.api.NodeReadMethodsTest#testGetUUID
org.apache.jackrabbit.test.api.SessionReadMethodsTest#testGetNodeByUUID
org.apache.jackrabbit.test.api.PathTest#testGetItem
-org.apache.jackrabbit.test.api.PathTest#testCreatePathValue
-org.apache.jackrabbit.test.api.PathTest#testCreateMultiplePathValue
org.apache.jackrabbit.test.api.AddNodeTest#testConstraintViolation
org.apache.jackrabbit.test.api.AddNodeTest#testRepositoryException
org.apache.jackrabbit.test.api.ReferencesTest#testNonReferenceable
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java?rev=1338229&r1=1338228&r2=1338229&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java Mon May 14 14:43:22 2012
@@ -394,10 +394,17 @@ public class PropertyImpl extends ItemIm
case PropertyType.PATH:
case PropertyType.NAME:
String path = value.getString();
- try {
- return (path.charAt(0) == '/') ? getSession().getNode(path) : getParent().getNode(path);
- } catch (PathNotFoundException e) {
- throw new ItemNotFoundException(path);
+ if (path.startsWith("[") && path.endsWith("]")) {
+ // TODO OAK-23
+ // TODO correct for NAME?
+ return getSession().getNodeByIdentifier(path.substring(1, path.length() - 1));
+ }
+ else {
+ try {
+ return (path.charAt(0) == '/') ? getSession().getNode(path) : getParent().getNode(path);
+ } catch (PathNotFoundException e) {
+ throw new ItemNotFoundException(path);
+ }
}
case PropertyType.STRING:
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java?rev=1338229&r1=1338228&r2=1338229&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java Mon May 14 14:43:22 2012
@@ -149,6 +149,11 @@ public class ValueFactoryImpl implements
@Override
public Value createValue(String value, int type) throws ValueFormatException {
+
+ if (value == null) {
+ throw new ValueFormatException();
+ }
+
try {
CoreValue cv;
@@ -162,11 +167,19 @@ public class ValueFactoryImpl implements
break;
case PropertyType.PATH:
- String oakPath = namePathMapper.getOakPath(value);
- if (oakPath == null) {
- throw new ValueFormatException("Invalid path: " + value);
+ // TODO we special case identifier paths here for now
+ // eventually this should be done in the path mapper (OAK-23)
+
+ String oakValue;
+ if (value.startsWith("[") && value.endsWith("]")) {
+ oakValue = value;
+ } else {
+ oakValue = namePathMapper.getOakPath(value);
+ if (oakValue == null) {
+ throw new ValueFormatException("Invalid path: " + value);
+ }
}
- cv = factory.createValue(oakPath, type);
+ cv = factory.createValue(oakValue, type);
break;
case PropertyType.DATE:
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java?rev=1338229&r1=1338228&r2=1338229&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java Mon May 14 14:43:22 2012
@@ -169,10 +169,16 @@ class ValueImpl implements Value {
@Override
public String getString() throws RepositoryException {
switch (getType()) {
- case PropertyType.NAME :
+ case PropertyType.NAME:
return namePathMapper.getJcrName(value.toString());
case PropertyType.PATH:
- return namePathMapper.getJcrPath(value.toString());
+ String s = value.toString();
+ // TODO special handling for identifier paths; should happen in path mapper (OAK-23)
+ if (s.startsWith("[") && s.endsWith("]")) {
+ return s;
+ } else {
+ return namePathMapper.getJcrPath(value.toString());
+ }
case PropertyType.BINARY:
InputStream stream = getStream();
try {