Author: reschke
Date: Mon Aug 20 12:53:49 2012
New Revision: 1374999
URL: http://svn.apache.org/viewvc?rev=1374999&view=rev
Log:
OAK-23: additional fixes for identifier property values
Modified:
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
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=1374999&r1=1374998&r2=1374999&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 Aug 20 12:53:49 2012
@@ -462,10 +462,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("]")) {
+ // identifier path
+ String identifier = path.substring(1, path.length() - 1);
+ return getSession().getNodeByIdentifier(identifier);
+ }
+ 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=1374999&r1=1374998&r2=1374999&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 Aug 20 12:53:49 2012
@@ -163,7 +163,12 @@ public class ValueFactoryImpl implements
break;
case PropertyType.PATH:
- String oakValue = namePathMapper.getOakPath(value);
+ String oakValue = value;
+ if (value.startsWith("[") && value.endsWith("]")) {
+ // identifier path; do no change
+ } else {
+ oakValue = namePathMapper.getOakPath(value);
+ }
if (oakValue == null) {
throw new ValueFormatException("Invalid path: " + value);
}
|