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/04/25 18:18:58 UTC
svn commit: r1330383 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/
oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/
oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/
oak-jcr/src/main/java/org/apache...
Author: reschke
Date: Wed Apr 25 16:18:58 2012
New Revision: 1330383
URL: http://svn.apache.org/viewvc?rev=1330383&view=rev
Log:
OAK-61: use NameMapper in ValueFactoryImpl and ValueImpl
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrPathParser.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/Paths.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/PathsTest.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/JcrPathParser.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrPathParser.java?rev=1330383&r1=1330382&r2=1330383&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrPathParser.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrPathParser.java Wed Apr 25 16:18:58 2012
@@ -51,6 +51,7 @@ public class JcrPathParser {
// shortcut
if (len == 1 && jcrPath.charAt(0) == '/') {
listener.root();
+ return;
}
if (len == 0) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/Paths.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/Paths.java?rev=1330383&r1=1330382&r2=1330383&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/Paths.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/Paths.java Wed Apr 25 16:18:58 2012
@@ -209,7 +209,12 @@ public final class Paths {
public static String toOakPath(String jcrPath, final NameMapper mapper) {
final List<String> elements = new ArrayList<String>();
-
+
+ if ("/".equals(jcrPath)) {
+ // avoid the need to special case the root path later on
+ return "/";
+ }
+
JcrPathParser.Listener listener = new JcrPathParser.Listener() {
@Override
public void root() {
@@ -274,6 +279,8 @@ public final class Paths {
}
}
+ // root path is special-cased early on so it does not need to
+ // be considered here
oakPath.deleteCharAt(oakPath.length() - 1);
return oakPath.toString();
}
@@ -281,6 +288,11 @@ public final class Paths {
public static String toJcrPath(String oakPath, final NameMapper mapper) {
final List<String> elements = new ArrayList<String>();
+ if ("/".equals(oakPath)) {
+ // avoid the need to special case the root path later on
+ return "/";
+ }
+
JcrPathParser.Listener listener = new JcrPathParser.Listener() {
@Override
public void root() {
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/PathsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/PathsTest.java?rev=1330383&r1=1330382&r2=1330383&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/PathsTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/PathsTest.java Wed Apr 25 16:18:58 2012
@@ -83,6 +83,7 @@ public class PathsTest {
@Test
public void testJcrToOak() {
+ assertEquals("/", Paths.toOakPath("/", mapper));
assertEquals("/oak-foo:bar", Paths.toOakPath("/foo:bar", mapper));
assertEquals("/oak-foo:bar/oak-quu:qux",
Paths.toOakPath("/foo:bar/quu:qux", mapper));
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=1330383&r1=1330382&r2=1330383&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 Wed Apr 25 16:18:58 2012
@@ -76,7 +76,7 @@ public class SessionImpl extends Abstrac
SessionImpl(GlobalContext globalContext, ContentSession contentSession) {
this.globalContext = globalContext;
this.contentSession = contentSession;
- this.valueFactory = new ValueFactoryImpl(contentSession.getCoreValueFactory());
+ this.valueFactory = new ValueFactoryImpl(contentSession.getCoreValueFactory(), nameMapper);
this.nsreg = new NamespaceRegistryImpl(contentSession);
this.workspace = new WorkspaceImpl(sessionContext, this.nsreg);
this.root = contentSession.getCurrentRoot();
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=1330383&r1=1330382&r2=1330383&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 Wed Apr 25 16:18:58 2012
@@ -19,6 +19,8 @@ package org.apache.jackrabbit.oak.jcr.va
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.CoreValueFactory;
+import org.apache.jackrabbit.oak.namepath.NameMapper;
+import org.apache.jackrabbit.oak.namepath.Paths;
import org.apache.jackrabbit.util.ISO8601;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,15 +48,15 @@ public class ValueFactoryImpl implements
private static final Logger log = LoggerFactory.getLogger(ValueFactoryImpl.class);
private final CoreValueFactory factory;
- private final DummyNamePathResolver resolver; // TODO: add proper name/path conversion
+ private final NameMapper nameMapper;
/**
*
* @param factory
*/
- public ValueFactoryImpl(CoreValueFactory factory/*, NamePathResolver resolver*/) {
+ public ValueFactoryImpl(CoreValueFactory factory, NameMapper nameMapper) {
this.factory = factory;
- this.resolver = new DummyNamePathResolver();
+ this.nameMapper = nameMapper;
}
public CoreValueFactory getCoreValueFactory() {
@@ -62,7 +64,7 @@ public class ValueFactoryImpl implements
}
public Value createValue(CoreValue coreValue) {
- return new ValueImpl(coreValue, resolver);
+ return new ValueImpl(coreValue, nameMapper);
}
public CoreValue getCoreValue(Value jcrValue) {
@@ -91,39 +93,39 @@ public class ValueFactoryImpl implements
@Override
public Value createValue(String value) {
CoreValue cv = factory.createValue(value, PropertyType.STRING);
- return new ValueImpl(cv, resolver);
+ return new ValueImpl(cv, nameMapper);
}
@Override
public Value createValue(long value) {
CoreValue cv = factory.createValue(value);
- return new ValueImpl(cv, resolver);
+ return new ValueImpl(cv, nameMapper);
}
@Override
public Value createValue(double value) {
CoreValue cv = factory.createValue(value);
- return new ValueImpl(cv, resolver);
+ return new ValueImpl(cv, nameMapper);
}
@Override
public Value createValue(boolean value) {
CoreValue cv = factory.createValue(value);
- return new ValueImpl(cv, resolver);
+ return new ValueImpl(cv, nameMapper);
}
@Override
public Value createValue(Calendar value) {
String dateStr = ISO8601.format(value);
CoreValue cv = factory.createValue(dateStr, PropertyType.DATE);
- return new ValueImpl(cv, resolver);
+ return new ValueImpl(cv, nameMapper);
}
@Override
public Value createValue(InputStream value) {
try {
CoreValue cv = factory.createValue(value);
- return new ValueImpl(cv, resolver);
+ return new ValueImpl(cv, nameMapper);
} catch (IOException ex) {
throw new RuntimeException(ex);
} finally {
@@ -141,14 +143,14 @@ public class ValueFactoryImpl implements
public Value createValue(String value, int type) throws ValueFormatException {
CoreValue cv;
if (type == PropertyType.NAME) {
- cv = factory.createValue(resolver.getInternalName(value), type);
+ cv = factory.createValue(nameMapper.getOakName(value), type);
} else if (type == PropertyType.PATH) {
- cv = factory.createValue(resolver.getInternalPath(value), type);
+ cv = factory.createValue(Paths.toOakPath(value, nameMapper), type);
} else {
cv = factory.createValue(value, type);
}
- return new ValueImpl(cv, resolver);
+ return new ValueImpl(cv, nameMapper);
}
@Override
@@ -169,12 +171,12 @@ public class ValueFactoryImpl implements
@Override
public Value createValue(BigDecimal value) {
CoreValue cv = factory.createValue(value);
- return new ValueImpl(cv, resolver);
+ return new ValueImpl(cv, nameMapper);
}
@Override
public Value createValue(Node value, boolean weak) throws RepositoryException {
CoreValue cv = factory.createValue(value.getUUID(), weak ? PropertyType.WEAKREFERENCE : PropertyType.REFERENCE);
- return new ValueImpl(cv, resolver);
+ return new ValueImpl(cv, nameMapper);
}
}
\ No newline at end of file
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=1330383&r1=1330382&r2=1330383&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 Wed Apr 25 16:18:58 2012
@@ -18,6 +18,8 @@ package org.apache.jackrabbit.oak.jcr.va
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.oak.api.CoreValue;
+import org.apache.jackrabbit.oak.namepath.NameMapper;
+import org.apache.jackrabbit.oak.namepath.Paths;
import org.apache.jackrabbit.util.ISO8601;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,19 +48,17 @@ class ValueImpl implements Value {
private static final Logger log = LoggerFactory.getLogger(ValueImpl.class);
private final CoreValue value;
-
- // TODO need utility to convert the internal NAME/PATH format to JCR format
- private final DummyNamePathResolver resolver;
+ private final NameMapper nameMapper;
/**
* Constructs a {@code ValueImpl} object based on a {@code CoreValue}
*
* @param value the value object this {@code ValueImpl} should represent
- * @param resolver
+ * @param nameMapper
*/
- public ValueImpl(CoreValue value, DummyNamePathResolver resolver) {
+ public ValueImpl(CoreValue value, NameMapper nameMapper) {
this.value = value;
- this.resolver = resolver;
+ this.nameMapper = nameMapper;
}
CoreValue unwrap() {
@@ -151,9 +151,9 @@ class ValueImpl implements Value {
public String getString() throws RepositoryException {
switch (getType()) {
case PropertyType.NAME :
- return resolver.getJCRName(value.toString());
+ return nameMapper.getJcrName(value.toString());
case PropertyType.PATH:
- return resolver.getJCRPath(value.toString());
+ return Paths.toJcrPath(value.toString(), nameMapper);
case PropertyType.BINARY:
InputStream stream = getStream();
try {