Author: nicolas
Date: Tue Apr 13 09:39:45 2010
New Revision: 933531
URL: http://svn.apache.org/viewvc?rev=933531&view=rev
Log:
MRELEASE-546 : regression introduced in MRELEASE-261
o let StringUtils.getCommonPrefix found the common basedir using a pre-built
basedir Set from projects in reactor
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java?rev=933531&r1=933530&r2=933531&view=diff
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
(original)
+++
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
Tue Apr 13 09:39:45 2010
@@ -185,7 +185,8 @@ public class ReleaseUtil
public static String getCommonBasedir( List reactorProjects, char
separator )
{
- String basedir = null;
+ String[] baseDirs = new String[reactorProjects.size()];
+ int idx = 0;
for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
{
MavenProject p = (MavenProject) i.next();
@@ -193,35 +194,26 @@ public class ReleaseUtil
// we can only normalize paths with /
String dir = FileUtils.normalize(
p.getBasedir().getPath().replace( '\\', '/' ) );
- if ( basedir == null )
+ // always end in / so that we know what is a path and what is a
partial directory name in the next call
+ if ( !dir.endsWith( "/" ) )
{
- basedir = dir;
- }
- else
- {
- // always end in / so that we know what is a path and what is
a partial directory name in the next call
- if ( !basedir.endsWith( "/" ) )
- {
- basedir = basedir + "/";
- }
-
- basedir = StringUtils.getCommonPrefix( new String[]{dir,
basedir} );
-
- if ( !basedir.endsWith( "/" ) )
- {
- basedir = basedir.substring( 0, basedir.lastIndexOf( "/" )
);
- }
+ dir = dir + "/";
}
+ baseDirs[idx++] = dir;
}
- if ( basedir != null )
+ String basedir = StringUtils.getCommonPrefix( baseDirs );
+
+ if ( !basedir.endsWith( "/" ) )
{
- if ( basedir.endsWith( "/" ) && basedir.length() > 1 )
- {
- basedir = basedir.substring( 0, basedir.length() - 1 );
- }
- basedir = basedir.replace( '/', separator );
+ basedir = basedir.substring( 0, basedir.lastIndexOf( "/" ) );
+ }
+
+ if ( basedir.endsWith( "/" ) && basedir.length() > 1 )
+ {
+ basedir = basedir.substring( 0, basedir.length() - 1 );
}
+ basedir = basedir.replace( '/', separator );
return basedir;
}
Modified:
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java?rev=933531&r1=933530&r2=933531&view=diff
==============================================================================
---
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
(original)
+++
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
Tue Apr 13 09:39:45 2010
@@ -99,6 +99,26 @@ public class ReleaseUtilTest
createProject( "/working/directory/flat-multi-module/webapp"
)} ), '/' ) );
}
+ public void
testGetCommonBasedirOfRegularMultiModuleParentNotBeeingFirstInReactor()
+ throws Exception
+ {
+ assertEquals( "/working/directory/flat-multi-module",
ReleaseUtil.getCommonBasedir( Arrays.asList(
+ new MavenProject[]{
+ createProject( "/working/directory/flat-multi-module/core" ),
+ createProject( "/working/directory/flat-multi-module" ),
+ createProject( "/working/directory/flat-multi-module/webapp"
)} ), '/' ) );
+ }
+
+ public void testGetCommonBasedirOfRegularMultiModuleWindowsPath()
+ throws Exception
+ {
+ assertEquals( "c:\\working\\directory\\flat-multi-module",
ReleaseUtil.getCommonBasedir( Arrays.asList(
+ new MavenProject[]{
+ createProject(
"c:\\working\\directory\\flat-multi-module\\core" ),
+ createProject( "c:\\working\\directory\\flat-multi-module" ),
+ createProject(
"c:\\working\\directory\\flat-multi-module\\webapp" )} ), '\\' ) );
+ }
+
public void testGetCommonBasedirOfFlatMultiModuleWithMultipleLevels()
throws Exception
{