This is an automated email from the ASF dual-hosted git repository. rfscholte pushed a commit to branch Paths in repository https://gitbox.apache.org/repos/asf/maven-release.git
commit 1103fa2f84579222c59be3508d5b6b08d29d1829 Author: rfscholte <[email protected]> AuthorDate: Sat Mar 17 18:59:33 2018 +0100 Start using Path --- .../release/phase/AbstractRewritePomsPhase.java | 2 +- .../release/phase/CheckoutProjectFromScm.java | 2 +- .../maven/shared/release/util/ReleaseUtil.java | 44 +++----- .../maven/shared/release/util/ReleaseUtilTest.java | 117 ++++++++++++--------- 4 files changed, 80 insertions(+), 85 deletions(-) diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java index 2a58da6..ebbce14 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java @@ -170,7 +170,7 @@ public abstract class AbstractRewritePomsPhase String commonBasedir; try { - commonBasedir = ReleaseUtil.getCommonBasedir( reactorProjects ); + commonBasedir = ReleaseUtil.getCommonBasedir( reactorProjects ).toString(); } catch ( IOException e ) { diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java index 33f9537..60f78b8 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java @@ -224,7 +224,7 @@ public class CheckoutProjectFromScm String basedir; try { - basedir = ReleaseUtil.getCommonBasedir( reactorProjects ); + basedir = ReleaseUtil.getCommonBasedir( reactorProjects ).toString(); } catch ( IOException e ) { diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java index 00f2c1e..1857adb 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java @@ -58,8 +58,6 @@ public class ReleaseUtil @SuppressWarnings( "checkstyle:constantname" ) public static final String POMv4 = "pom.xml"; - private static final String FS = File.separator; - /** * The line separator to use. */ @@ -175,7 +173,7 @@ public class ReleaseUtil String basedir; try { - basedir = getCommonBasedir( reactorProjects ); + basedir = getCommonBasedir( reactorProjects ).toString(); } catch ( IOException e ) { @@ -196,44 +194,28 @@ public class ReleaseUtil return ReleaseUtils.buildReleaseDescriptor( builder ); } - public static String getCommonBasedir( List<MavenProject> reactorProjects ) + public static Path getCommonBasedir( List<MavenProject> reactorProjects ) throws IOException { - return getCommonBasedir( reactorProjects, FS ); + return getCommonBasedir( reactorProjects, null ); } - public static String getCommonBasedir( List<MavenProject> reactorProjects, String separator ) + public static Path getCommonBasedir( List<MavenProject> reactorProjects, String separator ) throws IOException { - String[] baseDirs = new String[reactorProjects.size()]; - int idx = 0; - for ( MavenProject p : reactorProjects ) + Path basePath = reactorProjects.get( 0 ).getBasedir().toPath(); + + for ( MavenProject reactorProject : reactorProjects ) { - String dir = p.getBasedir().getCanonicalPath(); - - // always end with separator so that we know what is a path and what is a partial directory name in the - // next call - if ( !dir.endsWith( separator ) ) + Path matchPath = reactorProject.getBasedir().toPath(); + while ( !basePath.startsWith( matchPath ) ) { - dir = dir + separator; + matchPath = matchPath.getParent(); } - baseDirs[idx++] = dir; - } - - String basedir = StringUtils.getCommonPrefix( baseDirs ); - - int separatorPos = basedir.lastIndexOf( separator ); - if ( !basedir.endsWith( separator ) && separatorPos >= 0 ) - { - basedir = basedir.substring( 0, separatorPos ); + basePath = matchPath; } - - if ( basedir.endsWith( separator ) && basedir.length() > 1 ) - { - basedir = basedir.substring( 0, basedir.length() - 1 ); - } - - return basedir; + + return basePath; } public static int getBaseWorkingDirectoryParentCount( String basedir, String workingDirectory ) diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java index 6b063c9..d95fa85 100644 --- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java +++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java @@ -22,9 +22,10 @@ package org.apache.maven.shared.release.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import static org.junit.Assume.*; +import static org.junit.Assume.assumeTrue; import java.io.File; +import java.nio.file.Paths; import java.util.Arrays; import java.util.Collections; @@ -50,122 +51,134 @@ public class ReleaseUtilTest @Test public void testGetCommonBasedirSingleProject() throws Exception { - assertEquals( "/working/directory/flat-multi-module/project", ReleaseUtil.getCommonBasedir( - Collections.singletonList( createProject( "/working/directory/flat-multi-module/project" ) ), "/" ) ); + assertEquals( Paths.get( "/working/directory/flat-multi-module/project" ), + ReleaseUtil.getCommonBasedir( Collections.singletonList( createProject( "/working/directory/flat-multi-module/project" ) ), + "/" ) ); } @Test public void testGetCommonBasedirSingleProjectWindows() throws Exception { - assertEquals( "C:\\working\\directory\\flat-multi-module\\project", ReleaseUtil.getCommonBasedir( - Collections.singletonList( createProject( "C:\\working\\directory\\flat-multi-module\\project" ) ), - "\\" ) ); + assertEquals( Paths.get( "C:\\working\\directory\\flat-multi-module\\project" ), + ReleaseUtil.getCommonBasedir( Collections.singletonList( createProject( "C:\\working\\directory\\flat-multi-module\\project" ) ), + "\\" ) ); } @Test public void testGetCommonBasedirOfFlatMultiModule() throws Exception { - assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList( - new MavenProject[]{createProject( "/working/directory/flat-multi-module/root-project" ), - createProject( "/working/directory/flat-multi-module/core" ), - createProject( "/working/directory/flat-multi-module/webapp" )} ), "/" ) ); + assertEquals( Paths.get( "/working/directory/flat-multi-module" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "/working/directory/flat-multi-module/root-project" ), + createProject( "/working/directory/flat-multi-module/core" ), + createProject( "/working/directory/flat-multi-module/webapp" ) ), + "/" ) ); } @Test public void testGetCommonBasedirOfFlatMultiModuleWindows() throws Exception { - assertEquals( "C:\\working\\directory\\flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList( - new MavenProject[]{createProject( "C:\\working\\directory\\flat-multi-module\\root-project" ), - createProject( "C:\\working\\directory\\flat-multi-module\\core" ), - createProject( "C:\\working\\directory\\flat-multi-module\\webapp" )} ), "\\" ) ); + assertEquals( Paths.get( "C:\\working\\directory\\flat-multi-module" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "C:\\working\\directory\\flat-multi-module\\root-project" ), + createProject( "C:\\working\\directory\\flat-multi-module\\core" ), + createProject( "C:\\working\\directory\\flat-multi-module\\webapp" ) ), + "\\" ) ); } @Test public void testGetCommonBasedirUppercaseLowerCaseWindows() throws Exception { - assertEquals( "C:\\WORKING\\root", ReleaseUtil.getCommonBasedir( Arrays.asList( - new MavenProject[]{createProject( "c:\\WORKING\\root", "C:\\WORKING\\root" ), - createProject( "c:\\working\\root\\project1", "C:\\WORKING\\root\\project1" ), - createProject( "C:\\WORKING\\root\\project2", "C:\\WORKING\\root\\project2" )} ), "\\" ) ); + assertEquals( Paths.get( "C:\\WORKING\\root" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "c:\\WORKING\\root", + "C:\\WORKING\\root" ), + createProject( "c:\\working\\root\\project1", + "C:\\WORKING\\root\\project1" ), + createProject( "C:\\WORKING\\root\\project2", + "C:\\WORKING\\root\\project2" ) ), + "\\" ) ); } @Test public void testGetCommonBasedirOfFlatMultiModuleSimilarArtifactIds() throws Exception { - assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList( - new MavenProject[]{createProject( "/working/directory/flat-multi-module/release-parent" ), - createProject( "/working/directory/flat-multi-module/release-module1" ), - createProject( "/working/directory/flat-multi-module/release-module2" )} ), "/" ) ); + assertEquals( Paths.get( "/working/directory/flat-multi-module" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "/working/directory/flat-multi-module/release-parent" ), + createProject( "/working/directory/flat-multi-module/release-module1" ), + createProject( "/working/directory/flat-multi-module/release-module2" ) ), + "/" ) ); } @Test public void testGetCommonBasedirOfFlatMultiModuleSimilarArtifactIdsWindows() throws Exception { - assertEquals( "c:\\working\\directory\\flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList( - new MavenProject[]{createProject( "c:\\working\\directory\\flat-multi-module\\release-parent" ), - createProject( "c:\\working\\directory\\flat-multi-module\\release-module1" ), - createProject( "c:\\working\\directory\\flat-multi-module\\release-module2" )} ), "\\" ) ); + assertEquals( Paths.get( "c:\\working\\directory\\flat-multi-module" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "c:\\working\\directory\\flat-multi-module\\release-parent" ), + createProject( "c:\\working\\directory\\flat-multi-module\\release-module1" ), + createProject( "c:\\working\\directory\\flat-multi-module\\release-module2" ) ), + "\\" ) ); } @Test public void testGetCommonBasedirOfRegularMultiModule() throws Exception { - assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList( - new MavenProject[]{createProject( "/working/directory/flat-multi-module" ), - createProject( "/working/directory/flat-multi-module/core" ), - createProject( "/working/directory/flat-multi-module/webapp" )} ), "/" ) ); + assertEquals( Paths.get( "/working/directory/flat-multi-module" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "/working/directory/flat-multi-module" ), + createProject( "/working/directory/flat-multi-module/core" ), + createProject( "/working/directory/flat-multi-module/webapp" ) ), + "/" ) ); } @Test 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" )} ), "/" ) ); + assertEquals( Paths.get( "/working/directory/flat-multi-module" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "/working/directory/flat-multi-module/core" ), + createProject( "/working/directory/flat-multi-module" ), + createProject( "/working/directory/flat-multi-module/webapp" ) ), + "/" ) ); } @Test 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" )} ), "\\" ) ); + assertEquals( Paths.get( "c:\\working\\directory\\flat-multi-module" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "c:\\working\\directory\\flat-multi-module\\core" ), + createProject( "c:\\working\\directory\\flat-multi-module" ), + createProject( "c:\\working\\directory\\flat-multi-module\\webapp" ) ), + "\\" ) ); } @Test public void testGetCommonBasedirOfFlatMultiModuleWithMultipleLevels() throws Exception { - assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList( - new MavenProject[]{createProject( "/working/directory/flat-multi-module/root-project" ), - createProject( "/working/directory/flat-multi-module/core" ), - createProject( "/working/directory/flat-multi-module/common/utils" ), - createProject( "/working/directory/flat-multi-module/common/xml" ), - createProject( "/working/directory/flat-multi-module/webapp" )} ), "/" ) ); + assertEquals( Paths.get( "/working/directory/flat-multi-module" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "/working/directory/flat-multi-module/root-project" ), + createProject( "/working/directory/flat-multi-module/core" ), + createProject( "/working/directory/flat-multi-module/common/utils" ), + createProject( "/working/directory/flat-multi-module/common/xml" ), + createProject( "/working/directory/flat-multi-module/webapp" ) ), + "/" ) ); } @Test public void testGetCommonBasedirOfFlatMultiModuleWithDescendingHierarchy() throws Exception { - assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList( - new MavenProject[]{createProject( "/working/directory/flat-multi-module/level/1/2/3" ), - createProject( "/working/directory/flat-multi-module/level/1/2" ), - createProject( "/working/directory/flat-multi-module/level/1" ), - createProject( "/working/directory/flat-multi-module/level" ), - createProject( "/working/directory/flat-multi-module/other" )} ), "/" ) ); + assertEquals( Paths.get( "/working/directory/flat-multi-module" ), + ReleaseUtil.getCommonBasedir( Arrays.asList( createProject( "/working/directory/flat-multi-module/level/1/2/3" ), + createProject( "/working/directory/flat-multi-module/level/1/2" ), + createProject( "/working/directory/flat-multi-module/level/1" ), + createProject( "/working/directory/flat-multi-module/level" ), + createProject( "/working/directory/flat-multi-module/other" ) ), + "/" ) ); } @Test -- To stop receiving notification emails like this one, please contact [email protected].
