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);
                     }


Reply via email to