You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2011/06/22 17:41:40 UTC

svn commit: r1138509 - in /jackrabbit/sandbox/spi2microkernel/src: main/java/org/apache/jackrabbit/spi2microkernel/util/Paths.java test/java/org/apache/jackrabbit/spi2microkernel/util/ test/java/org/apache/jackrabbit/spi2microkernel/util/PathsTest.java

Author: mduerig
Date: Wed Jun 22 15:41:39 2011
New Revision: 1138509

URL: http://svn.apache.org/viewvc?rev=1138509&view=rev
Log:
spi2microkernel prototype (WIP)

Added:
    jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/util/
    jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/util/PathsTest.java
Modified:
    jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Paths.java

Modified: jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Paths.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Paths.java?rev=1138509&r1=1138508&r2=1138509&view=diff
==============================================================================
--- jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Paths.java (original)
+++ jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Paths.java Wed Jun 22 15:41:39 2011
@@ -19,21 +19,27 @@
 
 package org.apache.jackrabbit.spi2microkernel.util;
 
+import org.apache.jackrabbit.mk.util.PathUtils;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.NameFactory;
 import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.Path.Element;
+import org.apache.jackrabbit.spi.PathFactory;
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
+import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
 
 import javax.jcr.NoSuchWorkspaceException;
 import javax.jcr.RepositoryException;
+import java.util.LinkedList;
 
-import static org.apache.jackrabbit.spi.Name.*;
+import static org.apache.jackrabbit.spi.Name.NS_DEFAULT_URI;
 
 public final class Paths {
     public static final String DEFAULT_WORKSPACE = "default";
     public static final String SYSTEM_WORKSPACE = "system";
 
     private static final NameFactory NAME_FACTORY = NameFactoryImpl.getInstance();
+    private static final PathFactory PATH_FACTORY = PathFactoryImpl.getInstance();
 
     private Paths() {}
 
@@ -53,6 +59,23 @@ public final class Paths {
         }
     }
 
+    public static Path stringToPath(String path) {
+        LinkedList<Element> elements = new LinkedList<Element>();
+        boolean absolute = PathUtils.isAbsolute(path);
+
+        while (!PathUtils.denotesRoot(path)) {
+            String name = PathUtils.getName(path);
+            elements.addFirst(PATH_FACTORY.createElement(stringToName(name)));
+            path = PathUtils.getParentPath(path);
+        }
+
+        if (absolute) {
+            elements.addFirst(PATH_FACTORY.getRootElement());
+        }
+
+        return PATH_FACTORY.create(elements.toArray(new Element[elements.size()]));
+    }
+
     public static String nameToString(Name name) {
         String nameSpaceURI = name.getNamespaceURI();
         return '{' + escapeNameSpaceURI(nameSpaceURI) + '}' + name.getLocalName();

Added: jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/util/PathsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/util/PathsTest.java?rev=1138509&view=auto
==============================================================================
--- jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/util/PathsTest.java (added)
+++ jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/util/PathsTest.java Wed Jun 22 15:41:39 2011
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.spi2microkernel.util;
+
+import org.apache.jackrabbit.spi.Path;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class PathsTest {
+
+    @Test
+    public void stringToPath() {
+        Path p = Paths.stringToPath("/foo/bar");
+        Assert.assertEquals("{}\t{}foo\t{}bar", p.toString());
+
+        p = Paths.stringToPath("foo/bar");
+        Assert.assertEquals("{}foo\t{}bar", p.toString());
+
+        p = Paths.stringToPath("/foo");
+        Assert.assertEquals("{}\t{}foo", p.toString());
+
+        p = Paths.stringToPath("foo");
+        Assert.assertEquals("{}foo", p.toString());
+
+        p = Paths.stringToPath("/");
+        Assert.assertEquals("{}", p.toString());
+    }
+
+    @Ignore  // fixme fix in microkernel
+    @Test
+    public void fixInMicrokernel() {
+        Path p = Paths.stringToPath("/foo/");
+        Assert.assertEquals("{}\t{}foo", p.toString());
+    }
+
+    @Ignore  // fixme fix in microkernel
+    @Test
+    public void fixInMicrokernel2() {
+        Path p = Paths.stringToPath("/foo//");
+    }
+}