You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ep...@apache.org on 2006/10/30 06:34:40 UTC

svn commit: r469074 - in /maven/shared/trunk/maven-release-manager: ./ src/main/java/org/apache/maven/shared/release/phase/ src/main/resources/META-INF/plexus/ src/test/java/org/apache/maven/shared/release/phase/

Author: epunzalan
Date: Sun Oct 29 21:34:39 2006
New Revision: 469074

URL: http://svn.apache.org/viewvc?view=rev&rev=469074
Log:
PR: MRELEASE-110
Submitted by: Richard van der Hoff

Applied with some changes

Modified:
    maven/shared/trunk/maven-release-manager/pom.xml
    maven/shared/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/InputVariablesPhase.java
    maven/shared/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml
    maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java
    maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java

Modified: maven/shared/trunk/maven-release-manager/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-release-manager/pom.xml?view=diff&rev=469074&r1=469073&r2=469074
==============================================================================
--- maven/shared/trunk/maven-release-manager/pom.xml (original)
+++ maven/shared/trunk/maven-release-manager/pom.xml Sun Oct 29 21:34:39 2006
@@ -78,7 +78,7 @@
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-api</artifactId>
-      <version>1.0-beta-3</version>
+      <version>1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
@@ -88,32 +88,32 @@
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-bazaar</artifactId>
-      <version>1.0-beta-3</version>
+      <version>1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-clearcase</artifactId>
-      <version>1.0-beta-3</version>
+      <version>1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-cvsexe</artifactId>
-      <version>1.0-beta-3</version>
+      <version>1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-perforce</artifactId>
-      <version>1.0-beta-3</version>
+      <version>1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-starteam</artifactId>
-      <version>1.0-beta-3</version>
+      <version>1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-svnexe</artifactId>
-      <version>1.0-beta-3</version>
+      <version>1.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>

Modified: maven/shared/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/InputVariablesPhase.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/InputVariablesPhase.java?view=diff&rev=469074&r1=469073&r2=469074
==============================================================================
--- maven/shared/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/InputVariablesPhase.java (original)
+++ maven/shared/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/InputVariablesPhase.java Sun Oct 29 21:34:39 2006
@@ -19,9 +19,15 @@
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.ReleaseResult;
+import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
+import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Settings;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
 import org.codehaus.plexus.components.interactivity.Prompter;
 import org.codehaus.plexus.components.interactivity.PrompterException;
 
@@ -40,11 +46,36 @@
      */
     private Prompter prompter;
 
+    /**
+    * Tool that gets a configured SCM repository from release configuration.
+    */
+    private ScmRepositoryConfigurator scmRepositoryConfigurator;
+
     void setPrompter( Prompter prompter )
     {
         this.prompter = prompter;
     }
 
+    protected ScmProvider getScmProvider( ReleaseDescriptor releaseDescriptor, Settings settings )
+        throws ReleaseScmRepositoryException, ReleaseExecutionException
+    {
+        try
+        {
+            ScmRepository repository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, settings );
+
+            return scmRepositoryConfigurator.getRepositoryProvider( repository );
+        }
+        catch ( ScmRepositoryException e )
+        {
+            throw new ReleaseScmRepositoryException( e.getMessage() + " for URL: " +
+                releaseDescriptor.getScmSourceUrl(), e.getValidationMessages() );
+        }
+        catch ( NoSuchScmProviderException e )
+        {
+            throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
+        }
+    }
+
     public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
         throws ReleaseExecutionException
     {
@@ -66,6 +97,20 @@
             }
 
             String defaultTag = project.getArtifactId() + "-" + releaseVersion;
+
+            ScmProvider provider = null;
+            try
+            {
+                provider = getScmProvider( releaseDescriptor, settings );
+            }
+            catch ( ReleaseScmRepositoryException e )
+            {
+                throw new ReleaseExecutionException( "No scm provider can be found for url: " +
+                    releaseDescriptor.getScmSourceUrl(), e );
+            }
+
+            defaultTag = provider.sanitizeTagName(defaultTag);
+
             if ( releaseDescriptor.isInteractive() )
             {
                 try

Modified: maven/shared/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=469074&r1=469073&r2=469074
==============================================================================
--- maven/shared/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/shared/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml Sun Oct 29 21:34:39 2006
@@ -83,6 +83,9 @@
         <requirement>
           <role>org.codehaus.plexus.components.interactivity.Prompter</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
+        </requirement>
       </requirements>
     </component>
     <component>

Modified: maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java?view=diff&rev=469074&r1=469073&r2=469074
==============================================================================
--- maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java (original)
+++ maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java Sun Oct 29 21:34:39 2006
@@ -64,6 +64,7 @@
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
+        releaseDescriptor.setScmSourceUrl( "scm:svn:file://localhost/tmp/scm-repo" );
 
         phase.execute( releaseDescriptor, null, reactorProjects );
 
@@ -71,6 +72,7 @@
 
         releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
+        releaseDescriptor.setScmSourceUrl( "scm:svn:file://localhost/tmp/scm-repo" );
 
         mockPrompter.reset();
         mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).with( new IsAnything(),
@@ -126,6 +128,7 @@
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setInteractive( false );
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
+        releaseDescriptor.setScmSourceUrl( "scm:svn:file://localhost/tmp/scm-repo" );
 
         phase.execute( releaseDescriptor, null, reactorProjects );
 
@@ -137,6 +140,7 @@
         releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setInteractive( false );
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
+        releaseDescriptor.setScmSourceUrl( "scm:svn:file://localhost/tmp/scm-repo" );
 
         phase.simulate( releaseDescriptor, null, reactorProjects );
 
@@ -211,6 +215,7 @@
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
+        releaseDescriptor.setScmSourceUrl( "scm:svn:file://localhost/tmp/scm-repo" );
 
         try
         {
@@ -225,6 +230,7 @@
 
         releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
+        releaseDescriptor.setScmSourceUrl( "scm:svn:file://localhost/tmp/scm-repo" );
 
         mockPrompter.reset();
         mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will(
@@ -240,6 +246,38 @@
         {
             assertEquals( "check cause", PrompterException.class, e.getCause().getClass() );
         }
+    }
+
+    //MRELEASE-110
+    public void testCvsTag()
+        throws Exception
+    {
+        Mock mockPrompter = new Mock( Prompter.class );
+        mockPrompter.expects( new TestFailureMatcher( "prompter should not be called" ) ).method( "prompt" );
+        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+
+        List reactorProjects = Collections.singletonList( createProject( "artifactId", "1.0" ) );
+
+        ReleaseDescriptor releaseConfiguration = new ReleaseDescriptor();
+        releaseConfiguration.setInteractive( false );
+        releaseConfiguration.mapReleaseVersion( "groupId:artifactId", "1.0" );
+        releaseConfiguration.setScmSourceUrl( "scm:cvs:pserver:anoncvs@localhost:/tmp/scm-repo:module" );
+
+        phase.execute( releaseConfiguration, null, reactorProjects );
+
+        assertEquals( "Check tag", "artifactId-1_0", releaseConfiguration.getScmReleaseLabel() );
+
+        mockPrompter.reset();
+        mockPrompter.expects( new TestFailureMatcher( "prompter should not be called" ) ).method( "prompt" );
+
+        releaseConfiguration = new ReleaseDescriptor();
+        releaseConfiguration.setInteractive( false );
+        releaseConfiguration.mapReleaseVersion( "groupId:artifactId", "1.0" );
+        releaseConfiguration.setScmSourceUrl( "scm:cvs:pserver:anoncvs@localhost:/tmp/scm-repo:module" );
+
+        phase.simulate( releaseConfiguration, null, reactorProjects );
+
+        assertEquals( "Check tag", "artifactId-1_0", releaseConfiguration.getScmReleaseLabel() );
     }
 
     private static MavenProject createProject( String artifactId, String version )

Modified: maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java?view=diff&rev=469074&r1=469073&r2=469074
==============================================================================
--- maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java (original)
+++ maven/shared/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java Sun Oct 29 21:34:39 2006
@@ -16,8 +16,8 @@
  * limitations under the License.
  */
 
-import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.codehaus.plexus.util.FileUtils;
 
 import java.io.File;
@@ -262,7 +262,6 @@
 
         assertTrue( compareFiles( reactorProjects ) );
     }
-
 
     protected ReleaseDescriptor createDescriptorFromProjects( List reactorProjects )
     {