You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2015/09/06 09:53:40 UTC

maven git commit: use StringBuilder instead of String to avoid temporary String creation

Repository: maven
Updated Branches:
  refs/heads/master e85e8cc98 -> 2877b590f


use StringBuilder instead of String to avoid temporary String creation

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

Branch: refs/heads/master
Commit: 2877b590f1ddcd7f7401f1a721ccf27f742bdecd
Parents: e85e8cc
Author: Hervé Boutemy <hb...@apache.org>
Authored: Sun Sep 6 09:53:24 2015 +0200
Committer: Hervé Boutemy <hb...@apache.org>
Committed: Sun Sep 6 09:53:24 2015 +0200

----------------------------------------------------------------------
 .../DefaultInheritanceAssembler.java            | 50 +++++++++++---------
 1 file changed, 28 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/2877b590/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java b/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
index 48fdad5..5ffcf6d 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
@@ -149,39 +149,45 @@ public class DefaultInheritanceAssembler
 
         private String appendPath( String parentUrl, String childPath, String pathAdjustment )
         {
-            String url = parentUrl;
-            url = concatPath( url, pathAdjustment );
-            url = concatPath( url, childPath );
-            return url;
+            StringBuilder url = new StringBuilder( parentUrl.length() + pathAdjustment.length() + childPath.length()
+                + ( ( pathAdjustment.length() == 0 ) ? 1 : 2 ) );
+
+            url.append( parentUrl );
+            concatPath( url, pathAdjustment );
+            concatPath( url, childPath );
+
+            return url.toString();
         }
 
-        private String concatPath( String base, String path )
+        private void concatPath( StringBuilder url, String path )
         {
-            String result = base;
-
-            if ( path != null && path.length() > 0 )
+            if ( path.length() > 0 )
             {
-                if ( ( result.endsWith( "/" ) && !path.startsWith( "/" ) )
-                    || ( !result.endsWith( "/" ) && path.startsWith( "/" ) ) )
-                {
-                    result += path;
-                }
-                else if ( result.endsWith( "/" ) && path.startsWith( "/" ) )
+                boolean initialUrlEndsWithSlash = url.charAt( url.length() - 1 ) == '/';
+                boolean pathStartsWithSlash = path.charAt( 0 ) ==  '/';
+
+                if ( pathStartsWithSlash )
                 {
-                    result += path.substring( 1 );
+                    if ( initialUrlEndsWithSlash )
+                    {
+                        // 1 extra '/' to remove
+                        url.setLength( url.length() - 1 );
+                    }
                 }
-                else
+                else if ( !initialUrlEndsWithSlash )
                 {
-                    result += '/';
-                    result += path;
+                    // add missing '/' between url and path
+                    url.append( '/' );
                 }
-                if ( base.endsWith( "/" ) && !result.endsWith( "/" ) )
+
+                url.append( path );
+
+                // ensure resulting url ends with slash if initial url was
+                if ( initialUrlEndsWithSlash && !path.endsWith( "/" ) )
                 {
-                    result += '/';
+                    url.append( '/' );
                 }
             }
-
-            return result;
         }
 
         @Override