You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2013/08/23 11:21:11 UTC

git commit: METAMODEL-4: Ensured that getParentPath(...) would return properly in case of root file paths ("/foo" or "c:\\foo").

Updated Branches:
  refs/heads/master 500610830 -> 8fe2df23b


METAMODEL-4: Ensured that getParentPath(...) would return properly in
case of root file paths ("/foo" or "c:\\foo").

Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/8fe2df23
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/8fe2df23
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/8fe2df23

Branch: refs/heads/master
Commit: 8fe2df23bb490330c9140a3008609681f1ba8383
Parents: 5006108
Author: Kasper Sørensen <i....@gmail.com>
Authored: Fri Aug 23 11:21:03 2013 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Fri Aug 23 11:21:03 2013 +0200

----------------------------------------------------------------------
 .../java/org/apache/metamodel/util/ResourceUtils.java | 14 ++++++++++----
 .../org/apache/metamodel/util/ResourceUtilsTest.java  | 13 ++++++++++++-
 2 files changed, 22 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/8fe2df23/core/src/main/java/org/apache/metamodel/util/ResourceUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/util/ResourceUtils.java b/core/src/main/java/org/apache/metamodel/util/ResourceUtils.java
index f39b2c8..eed9dd9 100644
--- a/core/src/main/java/org/apache/metamodel/util/ResourceUtils.java
+++ b/core/src/main/java/org/apache/metamodel/util/ResourceUtils.java
@@ -26,7 +26,7 @@ public class ResourceUtils {
     /**
      * Gets the parent name of a resource. For example, if the resource's
      * qualified path is /foo/bar/baz, this method will return "bar".
-     *
+     * 
      * @param resource
      * @return
      */
@@ -36,7 +36,7 @@ public class ResourceUtils {
 
         assert qualifiedPath.endsWith(name);
 
-        int indexOfChild = qualifiedPath.length() - name.length() - 1;
+        int indexOfChild = qualifiedPath.length() - name.length();
 
         if (indexOfChild <= 0) {
             return name;
@@ -44,6 +44,12 @@ public class ResourceUtils {
 
         String parentQualifiedPath = qualifiedPath.substring(0, indexOfChild);
 
+        if ("/".equals(parentQualifiedPath)) {
+            return parentQualifiedPath;
+        }
+
+        parentQualifiedPath = parentQualifiedPath.substring(0, parentQualifiedPath.length() - 1);
+
         int lastIndexOfSlash = parentQualifiedPath.lastIndexOf('/');
         int lastIndexOfBackSlash = parentQualifiedPath.lastIndexOf('\\');
         int lastIndexToUse = Math.max(lastIndexOfSlash, lastIndexOfBackSlash);
@@ -53,9 +59,9 @@ public class ResourceUtils {
         }
 
         // add one because of the slash/backslash itself
-        lastIndexToUse++;
+        // lastIndexToUse++;
 
-        String parentName = parentQualifiedPath.substring(lastIndexToUse);
+        String parentName = parentQualifiedPath.substring(lastIndexToUse + 1);
         return parentName;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/8fe2df23/core/src/test/java/org/apache/metamodel/util/ResourceUtilsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/metamodel/util/ResourceUtilsTest.java b/core/src/test/java/org/apache/metamodel/util/ResourceUtilsTest.java
index c3a24aa..9f7e094 100644
--- a/core/src/test/java/org/apache/metamodel/util/ResourceUtilsTest.java
+++ b/core/src/test/java/org/apache/metamodel/util/ResourceUtilsTest.java
@@ -33,8 +33,19 @@ public class ResourceUtilsTest extends TestCase {
 
         assertEquals("resources", ResourceUtils.getParentName(res));
 
-        assertEquals("", ResourceUtils.getParentName(new InMemoryResource("")));
         assertEquals("foo", ResourceUtils.getParentName(new InMemoryResource("foo")));
         assertEquals("bar", ResourceUtils.getParentName(new InMemoryResource("foo/bar\\baz")));
     }
+
+    public void testGetParentNameRootFile() throws Exception {
+        assertEquals("c:", ResourceUtils.getParentName(new InMemoryResource("c:\\foo.txt")));
+        assertEquals("/", ResourceUtils.getParentName(new InMemoryResource("/foo.txt")));
+    }
+
+    public void testGetParentNameOddPaths() throws Exception {
+        assertEquals("", ResourceUtils.getParentName(new InMemoryResource("")));
+        assertEquals("", ResourceUtils.getParentName(new InMemoryResource("/")));
+        assertEquals("", ResourceUtils.getParentName(new InMemoryResource("//")));
+        assertEquals("", ResourceUtils.getParentName(new InMemoryResource("////")));
+    }
 }