You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2015/01/12 21:49:34 UTC

[2/4] curator git commit: CURATOR-166: Reverted to using two overloads in order to keep binary compatibiity and avoid uneeded array allocation.

CURATOR-166: Reverted to using two overloads in order to keep binary compatibiity and avoid uneeded array allocation.


Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/b387cf09
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/b387cf09
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/b387cf09

Branch: refs/heads/CURATOR-166
Commit: b387cf0963d184c9b2aad88a4947e1bb5ed1275d
Parents: 01a23e9
Author: Ricardo Ferreira <ri...@feedzai.com>
Authored: Mon Nov 17 23:02:51 2014 +0000
Committer: Ricardo Ferreira <ri...@feedzai.com>
Committed: Mon Nov 17 23:02:51 2014 +0000

----------------------------------------------------------------------
 .../java/org/apache/curator/utils/ZKPaths.java  | 95 +++++++++++++-------
 1 file changed, 61 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/b387cf09/curator-client/src/main/java/org/apache/curator/utils/ZKPaths.java
----------------------------------------------------------------------
diff --git a/curator-client/src/main/java/org/apache/curator/utils/ZKPaths.java b/curator-client/src/main/java/org/apache/curator/utils/ZKPaths.java
index 300913b..f485c62 100644
--- a/curator-client/src/main/java/org/apache/curator/utils/ZKPaths.java
+++ b/curator-client/src/main/java/org/apache/curator/utils/ZKPaths.java
@@ -282,18 +282,61 @@ public class ZKPaths
         Collections.sort(sortedList);
         return sortedList;
     }
-    
+
     /**
-     * Given a parent path and a list of children nodes, create a combined full path
+     * Given a parent path and a child node, create a combined full path
      *
      * @param parent the parent
-     * @param children  the children
+     * @param child  the child
      * @return full path
      */
-    public static String makePath(String parent, String... children)
+    public static String makePath(String parent, String child)
     {
         StringBuilder path = new StringBuilder();
 
+        joinPath(path, parent, child);
+
+        return path.toString();
+    }
+
+    /**
+     * Given a parent path and a list of children nodes, create a combined full path
+     *
+     * @param parent       the parent
+     * @param firstChild   the first children in the path
+     * @param restChildren the rest of the children in the path
+     * @return full path
+     */
+    public static String makePath(String parent, String firstChild, String... restChildren)
+    {
+        StringBuilder path = new StringBuilder();
+
+        joinPath(path, parent, firstChild);
+
+        if ( restChildren == null )
+        {
+            return path.toString();
+        }
+        else
+        {
+            for ( String child : restChildren )
+            {
+                joinPath(path, "", child);
+            }
+
+            return path.toString();
+        }
+    }
+
+    /**
+     * Given a parent and a child node, join them in the given {@link StringBuilder path}
+     *
+     * @param path   the {@link StringBuilder} used to make the path
+     * @param parent the parent
+     * @param child  the child
+     */
+    private static void joinPath(StringBuilder path, String parent, String child)
+    {
         // Add parent piece, with no trailing slash.
         if ( (parent != null) && (parent.length() > 0) )
         {
@@ -311,47 +354,31 @@ public class ZKPaths
             }
         }
 
-        if (children == null || children.length == 0)
+        if ( (child == null) || (child.length() == 0) || (child.equals(PATH_SEPARATOR)) )
         {
             // Special case, empty parent and child
             if ( path.length() == 0 )
             {
-                return PATH_SEPARATOR;
+                path.append(PATH_SEPARATOR);
             }
-            return path.toString();
+            return;
         }
 
-        for (String child : children)
-        {
-            if ( (child == null) || (child.length() == 0) || (child.equals(PATH_SEPARATOR)) )
-            {
-                // Special case, empty parent and child
-                if ( path.length() == 0 )
-                {
-                    path.append(PATH_SEPARATOR);
-                }
+        // Now add the separator between parent and child.
+        path.append(PATH_SEPARATOR);
 
-                continue;
-            }
-
-            // Now add the separator between parent and child.
-            path.append(PATH_SEPARATOR);
-
-            if ( child.startsWith(PATH_SEPARATOR) )
-            {
-                child = child.substring(1);
-            }
-
-            if ( child.endsWith(PATH_SEPARATOR) )
-            {
-                child = child.substring(0, child.length() - 1);
-            }
+        if ( child.startsWith(PATH_SEPARATOR) )
+        {
+            child = child.substring(1);
+        }
 
-            // Finally, add the child.
-            path.append(child);
+        if ( child.endsWith(PATH_SEPARATOR) )
+        {
+            child = child.substring(0, child.length() - 1);
         }
 
-        return path.toString();
+        // Finally, add the child.
+        path.append(child);
     }
 
     private ZKPaths()