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 {