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

svn commit: r539536 - in /maven/release/trunk/maven-release-manager/src: main/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhase.java test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java

Author: evenisse
Date: Fri May 18 10:49:44 2007
New Revision: 539536

URL: http://svn.apache.org/viewvc?view=rev&rev=539536
Log:
[MRELEASE-227] Edit the pom before to restore it if the scm provider need it

Modified:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhase.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhase.java?view=diff&rev=539536&r1=539535&r2=539536
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhase.java Fri May 18 10:49:44 2007
@@ -20,11 +20,21 @@
  */
 
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.ReleaseFailureException;
 import org.apache.maven.shared.release.ReleaseResult;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
+import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
+import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
 import org.codehaus.plexus.util.FileUtils;
 
 import java.io.File;
@@ -39,6 +49,13 @@
 public class RestoreBackupPomsPhase
     extends AbstractBackupPomsPhase
 {
+    /**
+     * Tool that gets a configured SCM repository from release configuration.
+     *
+     * @plexus.requirement
+     */
+    private ScmRepositoryConfigurator scmRepositoryConfigurator;
+
     public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException
     {
@@ -48,7 +65,7 @@
         {
             MavenProject project = (MavenProject) projects.next();
 
-            restorePomBackup( project );
+            restorePomBackup( releaseDescriptor, settings, project );
         }
 
         result.setResultCode( ReleaseResult.SUCCESS );
@@ -62,8 +79,8 @@
         return execute( releaseDescriptor, settings, reactorProjects );
     }
 
-    protected void restorePomBackup( MavenProject project )
-        throws ReleaseExecutionException
+    protected void restorePomBackup( ReleaseDescriptor releaseDescriptor, Settings settings, MavenProject project )
+        throws ReleaseExecutionException, ReleaseFailureException
     {
         File pomBackup = getPomBackup( project );
 
@@ -71,6 +88,41 @@
         {
             throw new ReleaseExecutionException(
                 "Cannot restore from a missing backup POM: " + pomBackup.getAbsolutePath() );
+        }
+
+        try
+        {
+            ScmRepository scmRepository;
+            ScmProvider provider;
+            try
+            {
+                scmRepository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, settings );
+
+                provider = scmRepositoryConfigurator.getRepositoryProvider( scmRepository );
+            }
+            catch ( ScmRepositoryException e )
+            {
+                throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
+            }
+            catch ( NoSuchScmProviderException e )
+            {
+                throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
+            }
+
+            if ( releaseDescriptor.isScmUseEditMode() || provider.requiresEditMode() )
+            {
+                EditScmResult result = provider.edit( scmRepository, new ScmFileSet(
+                    new File( releaseDescriptor.getWorkingDirectory() ), project.getFile() ) );
+
+                if ( !result.isSuccess() )
+                {
+                    throw new ReleaseScmCommandException( "Unable to enable editing on the POM", result );
+                }
+            }
+        }
+        catch ( ScmException e )
+        {
+            throw new ReleaseExecutionException( "An error occurred enabling edit mode: " + e.getMessage(), e );
         }
 
         try

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java?view=diff&rev=539536&r1=539535&r2=539536
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java Fri May 18 10:49:44 2007
@@ -20,11 +20,12 @@
  */
 
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.codehaus.plexus.util.FileUtils;
 
-import java.util.List;
-import java.util.Iterator;
 import java.io.File;
+import java.util.Iterator;
+import java.util.List;
 
 /**
  * @author Edwin Punzalan
@@ -75,7 +76,9 @@
     {
         List projects = getReactorProjects( getTestPath( path ) );
 
-        phase.execute( null, null, projects );
+        ReleaseDescriptor desc = new ReleaseDescriptor();
+        desc.setScmSourceUrl( "scm:svn:http://myhost/myrepo" );
+        phase.execute( desc, null, projects );
 
         testProjectIsRestored( projects );
     }
@@ -83,7 +86,7 @@
     private void testProjectIsRestored( List reactorProjects )
         throws Exception
     {
-        for( Iterator projects = reactorProjects.iterator(); projects.hasNext(); )
+        for ( Iterator projects = reactorProjects.iterator(); projects.hasNext(); )
         {
             MavenProject project = (MavenProject) projects.next();