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
     {


Reply via email to