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 2010/09/28 17:32:04 UTC

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

Author: brett
Date: Tue Sep 28 15:32:04 2010
New Revision: 1002219

URL: http://svn.apache.org/viewvc?rev=1002219&view=rev
Log:
[MRELEASE-583] make the interactive snapshot resolution more configurable, and use more sensible defaults (pin to release by default). Updated tests to use Mockito instead, and as a result set the requirement to Java 5.

Modified:
    maven/release/trunk/maven-release-manager/pom.xml
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
    maven/release/trunk/pom.xml

Modified: maven/release/trunk/maven-release-manager/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/pom.xml?rev=1002219&r1=1002218&r2=1002219&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/pom.xml (original)
+++ maven/release/trunk/maven-release-manager/pom.xml Tue Sep 28 15:32:04 2010
@@ -197,6 +197,12 @@
       <version>1.0.1</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <version>1.8.3</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java?rev=1002219&r1=1002218&r2=1002219&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java Tue Sep 28 15:32:04 2010
@@ -57,7 +57,7 @@ import java.util.Set;
 public class CheckDependencySnapshotsPhase
     extends AbstractReleasePhase
 {
-    public static final String RESOLVE_SNAPSHOT_MESSAGE = "There are still some remaining snapshot dependencies.";
+    public static final String RESOLVE_SNAPSHOT_MESSAGE = "There are still some remaining snapshot dependencies.\n";
 
     public static final String RESOLVE_SNAPSHOT_PROMPT = "Do you want to resolve them now?";
 
@@ -66,17 +66,6 @@ public class CheckDependencySnapshotsPha
     public static final String RESOLVE_SNAPSHOT_TYPE_PROMPT =
         "specify the selection number ( 0:All 1:Project Dependencies 2:Plugins 3:Reports 4:Extensions ):";
 
-    public static final String RESOLVE_ALL_SNAPSHOT_MESSAGE = "Resolve All Snapshots.";
-
-    public static final String RESOLVE_ALL_PROJECT_DEPENDENCIES_SNAPSHOT_MESSAGE =
-        "Resolve Project Dependency Snapshots.";
-
-    public static final String RESOLVE_ALL_REPORTS_SNAPSHOT_MESSAGE = "Resolve Report Dependency Snapshots.";
-
-    public static final String RESOLVE_ALL_EXTENSIONS_SNAPSHOT_MESSAGE = "Resolve Extension Dependency Snapshots.";
-
-    public static final String RESOLVE_ALL_PLUGIN_SNAPSHOT_MESSAGE = "Resolve Plugin Dependency Snapshots.";
-
     /**
      * Component used to prompt for input.
      *
@@ -172,11 +161,11 @@ public class CheckDependencySnapshotsPha
                     {
                         try
                         {
-                            String result = "no";
+                            String result;
                             if ( !releaseDescriptor.isSnapshotReleasePluginAllowed() )
                             {
-                                prompter.showMessage(
-                                    "This project relies on a SNAPSHOT of the release plugin. This may be necessary during testing." );
+                                prompter.showMessage( "This project relies on a SNAPSHOT of the release plugin. " +
+                                    "This may be necessary during testing.\n" );
                                 result = prompter.prompt( "Do you want to continue with the release?",
                                                           Arrays.asList( new String[]{"yes", "no"} ), "no" );
                             }
@@ -348,7 +337,6 @@ public class CheckDependencySnapshotsPha
                 {
                     // all
                     case 0:
-                        prompter.showMessage( RESOLVE_ALL_SNAPSHOT_MESSAGE );
                         snapshotSet.addAll( projectDependencies );
                         snapshotSet.addAll( reportDependencies );
                         snapshotSet.addAll( extensionDependencies );
@@ -358,25 +346,21 @@ public class CheckDependencySnapshotsPha
 
                         // project dependencies
                     case 1:
-                        prompter.showMessage( RESOLVE_ALL_PROJECT_DEPENDENCIES_SNAPSHOT_MESSAGE );
                         resolvedSnapshots = processSnapshot( projectDependencies );
                         break;
 
                         // plugins
                     case 2:
-                        prompter.showMessage( RESOLVE_ALL_PLUGIN_SNAPSHOT_MESSAGE );
                         resolvedSnapshots = processSnapshot( pluginDependencies );
                         break;
 
                         // reports
                     case 3:
-                        prompter.showMessage( RESOLVE_ALL_REPORTS_SNAPSHOT_MESSAGE );
                         resolvedSnapshots = processSnapshot( reportDependencies );
                         break;
 
                         // extensions
                     case 4:
-                        prompter.showMessage( RESOLVE_ALL_EXTENSIONS_SNAPSHOT_MESSAGE );
                         resolvedSnapshots = processSnapshot( extensionDependencies );
                         break;
                 }
@@ -405,38 +389,36 @@ public class CheckDependencySnapshotsPha
             Artifact currentArtifact = (Artifact) iterator.next();
             String versionlessKey = ArtifactUtils.versionlessKey( currentArtifact );
 
-            String result = prompter.prompt( "'" + versionlessKey + "' set to release?",
-                Arrays.asList( new String[] { "yes", "no" } ), "yes" );
+            Map versionMap = new HashMap();
+            VersionInfo versionInfo = new DefaultVersionInfo( currentArtifact.getVersion() );
+            versionMap.put( ReleaseDescriptor.ORIGINAL_VERSION, versionInfo.toString() );
+
+            prompter.showMessage(
+                "Dependency '" + versionlessKey + "' is a snapshot (" + currentArtifact.getVersion() + ")\n" );
+            String result = prompter.prompt( "Which release version should it be set to?",
+                                             versionInfo.getReleaseVersionString() );
+            versionMap.put( ReleaseDescriptor.RELEASE_KEY, result );
+
+            iterator.remove();
+
+            // by default, keep the same version for the dependency after release, unless it was previously newer
+            // th euser may opt to type in something different
+            VersionInfo nextVersionInfo = new DefaultVersionInfo( result );
 
-            if ( result.toLowerCase( Locale.ENGLISH ).startsWith( "y" ) )
+            String nextVersion;
+            if ( nextVersionInfo.compareTo( versionInfo ) > 0 )
             {
-                iterator.remove();
-
-                VersionInfo versionInfo = new DefaultVersionInfo( currentArtifact.getVersion() );
-                VersionInfo nextVersionInfo = versionInfo.getNextVersion();
-
-                String nextVersion;
-                if ( nextVersionInfo != null )
-                {
-                    nextVersion = nextVersionInfo.getSnapshotVersionString();
-                }
-                else
-                {
-                    nextVersion = "1.0-SNAPSHOT";
-                }
-
-                result = prompter.prompt( "What is the next development version?",
-                                          Collections.singletonList( nextVersion ), nextVersion );
-
-                VersionInfo nextDevelopmentVersion = new DefaultVersionInfo( result );
+                nextVersion = nextVersionInfo.toString();
+            }
+            else
+            {
+                nextVersion = versionInfo.toString();
+            }
 
-                Map versionMap = new HashMap();
-                versionMap.put( ReleaseDescriptor.ORIGINAL_VERSION, versionInfo.toString() );
-                versionMap.put( ReleaseDescriptor.DEVELOPMENT_KEY, nextDevelopmentVersion.getSnapshotVersionString() );
-                versionMap.put( ReleaseDescriptor.RELEASE_KEY, versionInfo.getReleaseVersionString() );
+            result = prompter.prompt( "What version should the dependency be reset to for development?", nextVersion );
+            versionMap.put( ReleaseDescriptor.DEVELOPMENT_KEY, result );
 
-                resolvedSnapshots.put( versionlessKey, versionMap );
-            }
+            resolvedSnapshots.put( versionlessKey, versionMap );
         }
 
         return resolvedSnapshots;

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java?rev=1002219&r1=1002218&r2=1002219&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java Tue Sep 28 15:32:04 2010
@@ -25,14 +25,9 @@ import org.apache.maven.shared.release.c
 import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
 import org.codehaus.plexus.components.interactivity.Prompter;
 import org.codehaus.plexus.components.interactivity.PrompterException;
-import org.jmock.Mock;
-import org.jmock.core.Stub;
-import org.jmock.core.matcher.InvokeAtLeastOnceMatcher;
-import org.jmock.core.matcher.InvokeOnceMatcher;
-import org.jmock.core.stub.ReturnStub;
-import org.jmock.core.stub.StubSequence;
-import org.jmock.core.stub.ThrowStub;
+import static org.mockito.Mockito.*;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -44,6 +39,16 @@ import java.util.Map;
 public class CheckDependencySnapshotsPhaseTest
     extends AbstractReleaseTestCase
 {
+    private static final String NO = "no";
+
+    private static final String YES = "yes";
+
+    private static final List YES_NO_ARRAY = Arrays.asList( YES, NO );
+
+    private static final String DEFAULT_CHOICE = "1";
+
+    private static final List<String> CHOICE_ARRAY = Arrays.asList( "0", DEFAULT_CHOICE, "2", "3" );
+
     protected void setUp()
         throws Exception
     {
@@ -75,13 +80,11 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "no-snapshot-range-dependencies" );
 
-        Mock mockPrompter = createMockPrompter( "yes", "1", "yes", "1.2-SNAPSHOT" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createMockPrompter( YES, DEFAULT_CHOICE, new VersionPair( "1.1", "1.2-SNAPSHOT" ) ) );
 
         phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
 
-        mockPrompter = createMockPrompter( "yes", "1", "yes", "1.2-SNAPSHOT" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createMockPrompter( YES, DEFAULT_CHOICE, new VersionPair( "1.1", "1.2-SNAPSHOT" ) ) );
 
         phase.simulate( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
 
@@ -142,8 +145,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "snapshot-release-plugin" );
 
-        Mock mockPrompter = createMockPrompter( "no", "no" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createMockPrompterWithSnapshotReleasePlugin( NO, NO ) );
 
         try
         {
@@ -156,8 +158,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        mockPrompter = createMockPrompter( "no", "no" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createMockPrompterWithSnapshotReleasePlugin( NO, NO ) );
 
         try
         {
@@ -180,8 +181,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "snapshot-release-plugin" );
 
-        Mock mockPrompter = createYesMockPrompter();
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createYesMockPrompter() );
 
         phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
 
@@ -197,8 +197,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "snapshot-release-plugin" );
 
-        Mock mockPrompter = createYesMockPrompter();
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createYesMockPrompter() );
 
         phase.simulate( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
 
@@ -214,8 +213,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "snapshot-release-plugin" );
 
-        Mock mockPrompter = createMockPrompter( "donkey", "no" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createMockPrompterWithSnapshotReleasePlugin( "donkey", NO ) );
 
         try
         {
@@ -228,8 +226,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        mockPrompter = createMockPrompter( "donkey", "no" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createMockPrompterWithSnapshotReleasePlugin( "donkey", NO ) );
 
         try
         {
@@ -252,11 +249,10 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "snapshot-release-plugin" );
 
-        Mock mockPrompter = new Mock( Prompter.class );
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will(
-            new ThrowStub( new PrompterException( "..." ) ) );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        Prompter mockPrompter = mock( Prompter.class );
+        when( mockPrompter.prompt( anyString(), eq( YES_NO_ARRAY ), eq( NO ) ) ).thenThrow( new PrompterException(
+            "..." ) );
+        phase.setPrompter( mockPrompter );
 
         try
         {
@@ -269,10 +265,9 @@ public class CheckDependencySnapshotsPha
             assertEquals( "Check cause", PrompterException.class, e.getCause().getClass() );
         }
 
-        mockPrompter.reset();
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will(
-            new ThrowStub( new PrompterException( "..." ) ) );
+        mockPrompter = mock( Prompter.class );
+        when( mockPrompter.prompt( anyString(), eq( YES_NO_ARRAY ), eq( NO ) ) ).thenThrow( new PrompterException(
+            "..." ) );
 
         try
         {
@@ -295,8 +290,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "internal-differing-snapshot-dependencies" );
 
-        Mock noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -309,8 +303,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -468,8 +461,8 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "external-snapshot-dependencies" );
 
-        Mock mockPrompter = createMockPrompter( "yes", "1", "yes", "1.1-SNAPSHOT" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createMockPrompter( YES, DEFAULT_CHOICE, new VersionPair( "1.0", "1.1-SNAPSHOT" ),
+                                               new VersionPair( "1.0", "1.0" ) ) );
 
         try
         {
@@ -489,8 +482,7 @@ public class CheckDependencySnapshotsPha
 
         releaseDescriptor = new ReleaseDescriptor();
 
-        mockPrompter = createMockPrompter( "yes", "1", "yes", "1.1-SNAPSHOT" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        phase.setPrompter( createMockPrompter( YES, DEFAULT_CHOICE, new VersionPair( "1.0", "1.1-SNAPSHOT" ) ) );
 
         try
         {
@@ -502,6 +494,63 @@ public class CheckDependencySnapshotsPha
         }
     }
 
+    public void testSnapshotDependenciesSelectOlderRelease()
+        throws Exception
+    {
+        CheckDependencySnapshotsPhase phase =
+            (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
+        ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+        List reactorProjects = createDescriptorFromProjects( "external-snapshot-dependencies" );
+
+        phase.setPrompter( createMockPrompter( YES, DEFAULT_CHOICE, new VersionPair( "0.9", "1.0-SNAPSHOT" ),
+                                               new VersionPair( "1.0", "1.0-SNAPSHOT" ) ) );
+
+        try
+        {
+            phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
+        }
+        catch ( ReleaseFailureException e )
+        {
+            fail( e.getMessage() );
+        }
+
+        // validate
+        Map versionsMap = (Map) releaseDescriptor.getResolvedSnapshotDependencies().get( "external:artifactId" );
+
+        assertNotNull( versionsMap );
+        assertEquals( "1.0-SNAPSHOT", versionsMap.get( ReleaseDescriptor.DEVELOPMENT_KEY ) );
+        assertEquals( "0.9", versionsMap.get( ReleaseDescriptor.RELEASE_KEY ) );
+    }
+
+    public void testSnapshotDependenciesSelectDefaults()
+        throws Exception
+    {
+        CheckDependencySnapshotsPhase phase =
+            (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
+        ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+        List reactorProjects = createDescriptorFromProjects( "external-snapshot-dependencies" );
+
+        phase.setPrompter( createMockPrompter( YES, DEFAULT_CHOICE, new VersionPair( "1.0", "1.0" ) ) );
+
+        try
+        {
+            phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
+        }
+        catch ( ReleaseFailureException e )
+        {
+            fail( e.getMessage() );
+        }
+
+        // validate
+        Map versionsMap = (Map) releaseDescriptor.getResolvedSnapshotDependencies().get( "external:artifactId" );
+
+        assertNotNull( versionsMap );
+        assertEquals( "1.0", versionsMap.get( ReleaseDescriptor.DEVELOPMENT_KEY ) );
+        assertEquals( "1.0", versionsMap.get( ReleaseDescriptor.RELEASE_KEY ) );
+    }
+
     public void testSnapshotDependenciesInsideAndOutsideProject()
         throws Exception
     {
@@ -511,8 +560,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "internal-and-external-snapshot-dependencies" );
 
-        Mock noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -525,8 +573,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -577,8 +624,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "external-snapshot-report-plugins" );
 
-        Mock noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -591,8 +637,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -615,8 +660,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "internal-and-external-snapshot-report-plugins" );
 
-        Mock noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -629,8 +673,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -723,8 +766,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "external-managed-snapshot-plugin" );
 
-        Mock noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -737,8 +779,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -761,8 +802,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "external-snapshot-plugins" );
 
-        Mock noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -775,8 +815,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -799,8 +838,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "internal-and-external-snapshot-plugins" );
 
-        Mock noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -813,8 +851,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -837,8 +874,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "external-snapshot-parent/child" );
 
-        Mock noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -851,8 +887,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -889,8 +924,7 @@ public class CheckDependencySnapshotsPha
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         List reactorProjects = createDescriptorFromProjects( "external-snapshot-extension" );
 
-        Mock noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -903,8 +937,7 @@ public class CheckDependencySnapshotsPha
             assertTrue( true );
         }
 
-        noPrompter = createNoMockPrompter();
-        phase.setPrompter( (Prompter) noPrompter.proxy() );
+        phase.setPrompter( createNoMockPrompter() );
 
         try
         {
@@ -983,72 +1016,77 @@ public class CheckDependencySnapshotsPha
         return createReactorProjects( "check-dependencies/", path );
     }
 
-    private Mock createNoMockPrompter()
+    private Prompter createNoMockPrompter()
+        throws PrompterException
     {
         return createYesNoMockPrompter( false );
     }
 
-    private Mock createYesMockPrompter()
+    private Prompter createYesMockPrompter()
+        throws PrompterException
     {
         return createYesNoMockPrompter( true );
     }
 
-    private Mock createYesNoMockPrompter( boolean yes )
+    private Prompter createYesNoMockPrompter( boolean yes )
+        throws PrompterException
     {
-        Mock mockPrompter = new Mock( Prompter.class );
+        Prompter mockPrompter = mock( Prompter.class );
 
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will(
-            new ReturnStub( ( yes ) ? "yes" : "no" ) );
+        when( mockPrompter.prompt( anyString(), eq( YES_NO_ARRAY ), eq( NO ) ) ).thenReturn( yes ? YES : NO );
 
         return mockPrompter;
     }
 
-    private Mock createMockPrompter( String response1, String response2 )
+    private Prompter createMockPrompterWithSnapshotReleasePlugin( String useSnapshotReleasePlugin,
+                                                                  String resolveSnapshots )
+        throws PrompterException
     {
-        return createMockPrompter( new String[] { response1, response2 } );
-    }
+        Prompter mockPrompter = mock( Prompter.class );
 
-    private Mock createMockPrompter( String response1, String response2, String response3 )
-    {
-        return createMockPrompter( new String[] { response1, response2, response3 } );
+        when( mockPrompter.prompt( anyString(), eq( YES_NO_ARRAY ), eq( NO ) ) ).thenReturn( useSnapshotReleasePlugin );
+        when( mockPrompter.prompt( anyString(), eq( YES_NO_ARRAY ), eq( NO ) ) ).thenReturn( resolveSnapshots );
+
+        return mockPrompter;
     }
 
-    private Mock createMockPrompter( String response1, String response2, String response3, String response4 )
+    private Prompter createMockPrompter( String resolveSnapshots, String resolutionType, VersionPair resolvedVersions )
+        throws PrompterException
     {
-        return createMockPrompter( new String[] { response1, response2, response3, response4 } );
+        VersionPair defaultVersions = new VersionPair( resolvedVersions.releaseVersion,
+                                                       resolvedVersions.developmentVersion );
+
+        return createMockPrompter( resolveSnapshots, resolutionType, resolvedVersions, defaultVersions );
     }
 
-    private Mock createMockPrompter( String[] responses )
+    private Prompter createMockPrompter( String resolveSnapshots, String resolutionType, VersionPair resolvedVersions,
+                                         VersionPair defaultVersions )
+        throws PrompterException
     {
-        Mock mockPrompter = new Mock( Prompter.class );
+        Prompter mockPrompter = mock( Prompter.class );
 
-        expectsShowMessages( mockPrompter );
-        expectsPrompts( mockPrompter, responses );
+        when( mockPrompter.prompt( anyString(), eq( YES_NO_ARRAY ), eq( NO ) ) ).thenReturn( resolveSnapshots );
+        when( mockPrompter.prompt( anyString(), eq( CHOICE_ARRAY ), eq( DEFAULT_CHOICE ) ) ).thenReturn(
+            resolutionType );
+        when( mockPrompter.prompt( "Which release version should it be set to?",
+                                   defaultVersions.releaseVersion ) ).thenReturn( resolvedVersions.releaseVersion );
+        when( mockPrompter.prompt( "What version should the dependency be reset to for development?",
+                                   defaultVersions.developmentVersion ) ).thenReturn(
+            resolvedVersions.developmentVersion );
 
         return mockPrompter;
     }
 
-    private void expectsShowMessages( Mock mockPrompter )
-    {
-        mockPrompter.expects( new InvokeAtLeastOnceMatcher() ).method( "showMessage" );
-    }
-
-    private void expectsPrompts( Mock mockPrompter, String[] responses )
+    private static class VersionPair
     {
-        expects( mockPrompter, "prompt", responses );
-    }
+        String releaseVersion;
 
-    private void expects( Mock mock, String methodName, String[] results )
-    {
-        Stub[] stubs = new Stub[results.length];
+        String developmentVersion;
 
-        for ( int i = 0; i < results.length; i++ )
+        public VersionPair( String releaseVersion, String developmentVersion )
         {
-            stubs[i] = new ReturnStub( results[i] );
-
+            this.releaseVersion = releaseVersion;
+            this.developmentVersion = developmentVersion;
         }
-
-        mock.expects( new InvokeAtLeastOnceMatcher() ).method( methodName ).will( new StubSequence( stubs ) );
     }
 }

Modified: maven/release/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/pom.xml?rev=1002219&r1=1002218&r2=1002219&view=diff
==============================================================================
--- maven/release/trunk/pom.xml (original)
+++ maven/release/trunk/pom.xml Tue Sep 28 15:32:04 2010
@@ -154,4 +154,18 @@
     </dependencies>
   </dependencyManagement>
 
+  <build>
+    <plugins>
+      <!-- Use JDK 5 by default -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.3.2</version>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>