You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2010/09/13 21:35:05 UTC

svn commit: r996657 - in /sling/trunk/bundles/api/src: main/java/org/apache/sling/api/resource/ResourceUtil.java test/java/org/apache/sling/api/resource/ResourceUtilTest.java

Author: justin
Date: Mon Sep 13 19:35:04 2010
New Revision: 996657

URL: http://svn.apache.org/viewvc?rev=996657&view=rev
Log:
SLING-1770 - fixing Resource.getParent() method.

Modified:
    sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java
    sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/ResourceUtilTest.java

Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java?rev=996657&r1=996656&r2=996657&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java (original)
+++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java Mon Sep 13 19:35:04 2010
@@ -132,6 +132,14 @@ public class ResourceUtil {
         if (path == null || "/".equals(path)) {
             return null;
         }
+        
+        String workspaceName = null;
+        
+        final int wsSepPos = path.indexOf(":/");
+        if (wsSepPos != -1) {
+            workspaceName = path.substring(0, wsSepPos);
+            path = path.substring(wsSepPos + 1);
+        }
 
         // find the last slash, after which to cut off
         int lastSlash = path.lastIndexOf('/');
@@ -140,10 +148,19 @@ public class ResourceUtil {
             return null;
         } else if (lastSlash == 0) {
             // parent is root
-            return "/";
+            if (workspaceName != null) {
+                return workspaceName + ":/";
+            } else {
+                return "/";
+            }
         }
 
-        return path.substring(0, lastSlash);
+        String parentPath = path.substring(0, lastSlash);
+        if (workspaceName != null) {
+            return workspaceName + ":" + parentPath;
+        } else {
+            return parentPath;
+        }
     }
 
     /**

Modified: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/ResourceUtilTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/ResourceUtilTest.java?rev=996657&r1=996656&r2=996657&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/ResourceUtilTest.java (original)
+++ sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/ResourceUtilTest.java Mon Sep 13 19:35:04 2010
@@ -151,6 +151,10 @@ public class ResourceUtilTest {
 
         assertNull(ResourceUtil.getParent("b"));
         assertNull(ResourceUtil.getParent("/b/.."));
+        
+        assertEquals("security:/", ResourceUtil.getParent("security:/b"));
+        assertEquals("security:/b", ResourceUtil.getParent("security:/b/c"));
+        assertEquals("security:/b/c", ResourceUtil.getParent("security:/b/c/d"));
     }
 
     @Test public void testGetName() {