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