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/08/20 13:33:12 UTC
svn commit: r1374976 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/ oak-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 Aug 20 11:33:11 2012
New Revision: 1374976
URL: http://svn.apache.org/viewvc?rev=1374976&view=rev
Log:
OAK-23: move handling of identifier paths into path mapper
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java
jackrabbit/oak/trunk/oak-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/SessionDelegate.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.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-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java?rev=1374976&r1=1374975&r2=1374976&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java Mon Aug 20 11:33:11 2012
@@ -21,6 +21,7 @@ import java.util.List;
import javax.annotation.Nonnull;
+import org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,9 +36,16 @@ public class NamePathMapperImpl implemen
private static final Logger log = LoggerFactory.getLogger(NamePathMapperImpl.class);
private final NameMapper nameMapper;
+ private final IdentifierManager idManager;
public NamePathMapperImpl(NameMapper nameMapper) {
this.nameMapper = nameMapper;
+ this.idManager = null;
+ }
+
+ public NamePathMapperImpl(NameMapper nameMapper, IdentifierManager idManager) {
+ this.nameMapper = nameMapper;
+ this.idManager = idManager;
}
//---------------------------------------------------------< NameMapper >---
@@ -151,13 +159,28 @@ public class NamePathMapperImpl implemen
return "/";
}
+ int length = jcrPath.length();
+
+ // identifier path?
+ if (length > 0 && jcrPath.charAt(0) == '[') {
+ if (jcrPath.charAt(length - 1) != ']') {
+ // TODO error handling?
+ return null;
+ }
+ if (this.idManager == null) {
+ // TODO error handling?
+ return null;
+ }
+ return this.idManager.getPath(jcrPath.substring(1, length - 1));
+ }
+
boolean hasClarkBrackets = false;
boolean hasIndexBrackets = false;
boolean hasColon = false;
boolean hasNameStartingWithDot = false;
char prev = 0;
- for (int i = 0; i < jcrPath.length(); i++) {
+ for (int i = 0; i < length; i++) {
char c = jcrPath.charAt(i);
if (c == '{' || c == '}') {
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1374976&r1=1374975&r2=1374976&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Mon Aug 20 11:33:11 2012
@@ -34,7 +34,6 @@
<properties>
<known.issues>
org.apache.jackrabbit.test.api.AddNodeTest#testSameNameSiblings<!-- OAK-203 -->
-org.apache.jackrabbit.test.api.PathTest#testGetItem<!-- OAK-23 -->
org.apache.jackrabbit.test.api.SessionTest#testMoveConstraintViolationExceptionSrc<!--OAK-132-->
org.apache.jackrabbit.test.api.SessionTest#testMoveConstraintViolationExceptionDest<!--OAK-132-->
org.apache.jackrabbit.test.api.SessionTest#testSaveConstraintViolationException<!--OAK-66-->
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=1374976&r1=1374975&r2=1374976&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 11:33:11 2012
@@ -462,16 +462,10 @@ public class PropertyImpl extends ItemIm
case PropertyType.PATH:
case PropertyType.NAME:
String path = value.getString();
- 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);
- }
+ 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/SessionDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java?rev=1374976&r1=1374975&r2=1374976&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java Mon Aug 20 11:33:11 2012
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
public class SessionDelegate {
static final Logger log = LoggerFactory.getLogger(SessionDelegate.class);
- private final NamePathMapper namePathMapper = new NamePathMapperImpl(new SessionNameMapper());
+ private final NamePathMapper namePathMapper;
private final Repository repository;
private final ScheduledExecutorService executor;
private final ContentSession contentSession;
@@ -88,13 +88,14 @@ public class SessionDelegate {
this.repository = repository;
this.executor = executor;
this.contentSession = contentSession;
- this.valueFactory = new ValueFactoryImpl(contentSession.getCoreValueFactory(), namePathMapper);
this.workspace = new WorkspaceImpl(this);
this.session = new SessionImpl(this);
this.root = contentSession.getCurrentRoot();
this.conflictHandler = new AnnotatingConflictHandler(contentSession.getCoreValueFactory());
this.autoRefresh = autoRefresh;
this.idManager = new IdentifierManager(contentSession, root);
+ this.namePathMapper = new NamePathMapperImpl(new SessionNameMapper(), idManager);
+ this.valueFactory = new ValueFactoryImpl(contentSession.getCoreValueFactory(), namePathMapper);
}
/**
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java?rev=1374976&r1=1374975&r2=1374976&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java Mon Aug 20 11:33:11 2012
@@ -178,8 +178,6 @@ public class SessionImpl extends Abstrac
public Node getNode(final String absPath) throws RepositoryException {
ensureIsAlive();
- // FIXME: deal with identifier path (OAK-23)
-
return dlg.perform(new SessionOperation<NodeImpl>() {
@Override
public NodeImpl perform() throws RepositoryException {
@@ -197,8 +195,6 @@ public class SessionImpl extends Abstrac
public boolean nodeExists(final String absPath) throws RepositoryException {
ensureIsAlive();
- // FIXME: deal with identifier path (OAK-23)
-
return dlg.perform(new SessionOperation<Boolean>() {
@Override
public Boolean perform() throws RepositoryException {
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=1374976&r1=1374975&r2=1374976&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 11:33:11 2012
@@ -163,17 +163,9 @@ public class ValueFactoryImpl implements
break;
case PropertyType.PATH:
- // 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);
- }
+ String oakValue = namePathMapper.getOakPath(value);
+ if (oakValue == null) {
+ throw new ValueFormatException("Invalid path: " + value);
}
cv = factory.createValue(oakValue, type);
break;
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=1374976&r1=1374975&r2=1374976&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 Aug 20 11:33:11 2012
@@ -175,8 +175,8 @@ class ValueImpl implements Value {
return namePathMapper.getJcrName(value.toString());
case PropertyType.PATH:
String s = value.toString();
- // TODO special handling for identifier paths; should happen in path mapper (OAK-23)
if (s.startsWith("[") && s.endsWith("]")) {
+ // identifier paths are returned as-is (JCR 2.0, 3.4.3.1)
return s;
} else {
return namePathMapper.getJcrPath(value.toString());