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();