You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/05/03 17:49:19 UTC

svn commit: r399339 - in /maven/plugins/trunk/maven-release-plugin/src: main/java/org/apache/maven/plugins/release/phase/ main/java/org/apache/maven/plugins/release/scm/ main/resources/META-INF/plexus/ test/java/org/apache/maven/plugins/release/phase/

Author: brett
Date: Wed May  3 08:49:15 2006
New Revision: 399339

URL: http://svn.apache.org/viewcvs?rev=399339&view=rev
Log:
[MRELEASE-27] improve URL validation

Modified:
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/CheckPomPhase.java
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/scm/ReleaseScmRepositoryException.java
    maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml
    maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckPomPhaseTest.java

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/CheckPomPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/CheckPomPhase.java?rev=399339&r1=399338&r2=399339&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/CheckPomPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/CheckPomPhase.java Wed May  3 08:49:15 2006
@@ -20,7 +20,11 @@
 import org.apache.maven.plugins.release.ReleaseExecutionException;
 import org.apache.maven.plugins.release.ReleaseFailureException;
 import org.apache.maven.plugins.release.config.ReleaseConfiguration;
+import org.apache.maven.plugins.release.scm.ReleaseScmRepositoryException;
+import org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.repository.ScmRepositoryException;
 import org.codehaus.plexus.util.StringUtils;
 
 import java.util.Iterator;
@@ -34,6 +38,11 @@
 public class CheckPomPhase
     extends AbstractReleasePhase
 {
+    /**
+     * Retrieve an SCM repository, useful for validating an URL.
+     */
+    private ScmRepositoryConfigurator scmRepositoryConfigurator;
+
     public void execute( ReleaseConfiguration releaseConfiguration )
         throws ReleaseExecutionException, ReleaseFailureException
     {
@@ -57,6 +66,20 @@
             {
                 throw new ReleaseFailureException(
                     "Missing required setting: scm connection or developerConnection must be specified." );
+            }
+
+            try
+            {
+                scmRepositoryConfigurator.getConfiguredRepository( releaseConfiguration );
+            }
+            catch ( ScmRepositoryException e )
+            {
+                throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
+            }
+            catch ( NoSuchScmProviderException e )
+            {
+                throw new ReleaseFailureException(
+                    "The provider given in the SCM URL could not be found: " + e.getMessage() );
             }
         }
 

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/scm/ReleaseScmRepositoryException.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/scm/ReleaseScmRepositoryException.java?rev=399339&r1=399338&r2=399339&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/scm/ReleaseScmRepositoryException.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/scm/ReleaseScmRepositoryException.java Wed May  3 08:49:15 2006
@@ -44,8 +44,8 @@
 
             while ( iter.hasNext() )
             {
+                buffer.append( "\n  - " );
                 buffer.append( iter.next().toString() );
-                buffer.append( "\n" );
             }
         }
 

Modified: maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml?rev=399339&r1=399338&r2=399339&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml Wed May  3 08:49:15 2006
@@ -61,6 +61,11 @@
       <role>org.apache.maven.plugins.release.phase.ReleasePhase</role>
       <role-hint>check-poms</role-hint>
       <implementation>org.apache.maven.plugins.release.phase.CheckPomPhase</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator</role>
+        </requirement>
+      </requirements>
     </component>
     <component>
       <role>org.apache.maven.plugins.release.phase.ReleasePhase</role>

Modified: maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckPomPhaseTest.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckPomPhaseTest.java?rev=399339&r1=399338&r2=399339&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckPomPhaseTest.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckPomPhaseTest.java Wed May  3 08:49:15 2006
@@ -20,6 +20,7 @@
 import org.apache.maven.model.Scm;
 import org.apache.maven.plugins.release.ReleaseFailureException;
 import org.apache.maven.plugins.release.config.ReleaseConfiguration;
+import org.apache.maven.plugins.release.scm.ReleaseScmRepositoryException;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.PlexusTestCase;
 
@@ -64,13 +65,13 @@
         ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
         MavenProject project = createProject( "1.0-SNAPSHOT" );
         Scm scm = new Scm();
-        scm.setConnection( "conn-scm-url" );
+        scm.setConnection( "scm:svn:file://localhost/tmp/repo" );
         project.setScm( scm );
         releaseConfiguration.setReactorProjects( Collections.singletonList( project ) );
 
         phase.execute( releaseConfiguration );
 
-        assertEquals( "Check URL", "conn-scm-url", releaseConfiguration.getUrl() );
+        assertEquals( "Check URL", "scm:svn:file://localhost/tmp/repo", releaseConfiguration.getUrl() );
     }
 
     public void testGetUrlFromProjectConnectionSimulate()
@@ -79,13 +80,13 @@
         ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
         MavenProject project = createProject( "1.0-SNAPSHOT" );
         Scm scm = new Scm();
-        scm.setConnection( "conn-scm-url" );
+        scm.setConnection( "scm:svn:file://localhost/tmp/repo" );
         project.setScm( scm );
         releaseConfiguration.setReactorProjects( Collections.singletonList( project ) );
 
         phase.simulate( releaseConfiguration );
 
-        assertEquals( "Check URL", "conn-scm-url", releaseConfiguration.getUrl() );
+        assertEquals( "Check URL", "scm:svn:file://localhost/tmp/repo", releaseConfiguration.getUrl() );
     }
 
     public void testGetUrlFromProjectDevConnection()
@@ -94,14 +95,14 @@
         ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
         MavenProject project = createProject( "1.0-SNAPSHOT" );
         Scm scm = new Scm();
-        scm.setConnection( "conn-scm-url" );
-        scm.setDeveloperConnection( "dev-conn-scm-url" );
+        scm.setConnection( "scm:svn:file://localhost/tmp/repo" );
+        scm.setDeveloperConnection( "scm:svn:https://localhost/tmp/repo" );
         project.setScm( scm );
         releaseConfiguration.setReactorProjects( Collections.singletonList( project ) );
 
         phase.execute( releaseConfiguration );
 
-        assertEquals( "Check URL", "dev-conn-scm-url", releaseConfiguration.getUrl() );
+        assertEquals( "Check URL", "scm:svn:https://localhost/tmp/repo", releaseConfiguration.getUrl() );
     }
 
     public void testGetUrlFromProjectDevConnectionSimulate()
@@ -110,14 +111,58 @@
         ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
         MavenProject project = createProject( "1.0-SNAPSHOT" );
         Scm scm = new Scm();
-        scm.setConnection( "conn-scm-url" );
-        scm.setDeveloperConnection( "dev-conn-scm-url" );
+        scm.setConnection( "scm:svn:file://localhost/tmp/repo" );
+        scm.setDeveloperConnection( "scm:svn:https://localhost/tmp/repo" );
         project.setScm( scm );
         releaseConfiguration.setReactorProjects( Collections.singletonList( project ) );
 
         phase.simulate( releaseConfiguration );
 
-        assertEquals( "Check URL", "dev-conn-scm-url", releaseConfiguration.getUrl() );
+        assertEquals( "Check URL", "scm:svn:https://localhost/tmp/repo", releaseConfiguration.getUrl() );
+    }
+
+    public void testGetInvalidUrl()
+        throws Exception
+    {
+        ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
+        MavenProject project = createProject( "1.0-SNAPSHOT" );
+        Scm scm = new Scm();
+        scm.setConnection( "scm:cvs:" );
+        project.setScm( scm );
+        releaseConfiguration.setReactorProjects( Collections.singletonList( project ) );
+
+        try
+        {
+            phase.execute( releaseConfiguration );
+
+            fail( "Should have thrown an exception" );
+        }
+        catch ( ReleaseScmRepositoryException e )
+        {
+            assertTrue( true );
+        }
+    }
+
+    public void testGetInvalidProvider()
+        throws Exception
+    {
+        ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
+        MavenProject project = createProject( "1.0-SNAPSHOT" );
+        Scm scm = new Scm();
+        scm.setConnection( "scm:foo:" );
+        project.setScm( scm );
+        releaseConfiguration.setReactorProjects( Collections.singletonList( project ) );
+
+        try
+        {
+            phase.execute( releaseConfiguration );
+
+            fail( "Should have thrown an exception" );
+        }
+        catch ( ReleaseFailureException e )
+        {
+            assertTrue( true );
+        }
     }
 
     public void testMissingUrl()