You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2012/03/03 21:20:03 UTC

svn commit: r1296689 - /maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/

Author: rfscholte
Date: Sat Mar  3 20:20:02 2012
New Revision: 1296689

URL: http://svn.apache.org/viewvc?rev=1296689&view=rev
Log:
Create ReleaseRequests for ReleaseManager to support MRELEASE-736: add dryRun for release:perform

Added:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/AbstractReleaseRequest.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseBranchRequest.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseCleanRequest.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePerformRequest.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePrepareRequest.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseRollbackRequest.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseUpdateVersionsRequest.java
Modified:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/AbstractReleaseRequest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/AbstractReleaseRequest.java?rev=1296689&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/AbstractReleaseRequest.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/AbstractReleaseRequest.java Sat Mar  3 20:20:02 2012
@@ -0,0 +1,87 @@
+package org.apache.maven.shared.release;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 2.3
+ */
+public abstract class AbstractReleaseRequest
+{
+    private ReleaseDescriptor releaseDescriptor;
+    
+    private List<MavenProject> reactorProjects;
+
+    private ReleaseManagerListener releaseManagerListener;
+    
+    /**
+     * @return the releaseDescriptor
+     */
+    public ReleaseDescriptor getReleaseDescriptor()
+    {
+        return releaseDescriptor;
+    }
+
+    /**
+     * @param releaseDescriptor the releaseDescriptor to set
+     */
+    public void setReleaseDescriptor( ReleaseDescriptor releaseDescriptor )
+    {
+        this.releaseDescriptor = releaseDescriptor;
+    }
+
+    /**
+     * @return the reactorProjects
+     */
+    public List<MavenProject> getReactorProjects()
+    {
+        return reactorProjects;
+    }
+
+    /**
+     * @param reactorProjects the reactorProjects to set
+     */
+    public void setReactorProjects( List<MavenProject> reactorProjects )
+    {
+        this.reactorProjects = reactorProjects;
+    }
+
+    /**
+     * @return the releaseManagerListener
+     */
+    public ReleaseManagerListener getReleaseManagerListener()
+    {
+        return releaseManagerListener;
+    }
+
+    /**
+     * @param releaseManagerListener the releaseManagerListener to set
+     */
+    public void setReleaseManagerListener( ReleaseManagerListener releaseManagerListener )
+    {
+        this.releaseManagerListener = releaseManagerListener;
+    }
+}
\ No newline at end of file

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java?rev=1296689&r1=1296688&r2=1296689&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java Sat Mar  3 20:20:02 2012
@@ -27,6 +27,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.commons.lang.BooleanUtils;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
@@ -90,6 +91,7 @@ public class DefaultReleaseManager
 
     private static final int PHASE_SKIP = 0, PHASE_START = 1, PHASE_END = 2, GOAL_START = 11, GOAL_END = 12, ERROR = 99;
 
+    /** {@inheritDoc} */
     public void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                          List<MavenProject> reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -97,6 +99,7 @@ public class DefaultReleaseManager
         prepare( releaseDescriptor, releaseEnvironment, reactorProjects, true, false, null );
     }
 
+    /** {@inheritDoc} */
     public void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                          List<MavenProject> reactorProjects, boolean resume, boolean dryRun )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -134,6 +137,7 @@ public class DefaultReleaseManager
         return result;
     }
 
+    /** {@inheritDoc} */
     public void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                          List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
                          ReleaseManagerListener listener )
@@ -141,22 +145,43 @@ public class DefaultReleaseManager
     {
         prepare( releaseDescriptor, releaseEnvironment, reactorProjects, resume, dryRun, listener, null );
     }
+    
+    /** {@inheritDoc} */
+    public void prepare( ReleasePrepareRequest prepareRequest )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        prepare( prepareRequest, new ReleaseResult() );
+    }
 
     private void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                           List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
                           ReleaseManagerListener listener, ReleaseResult result )
         throws ReleaseExecutionException, ReleaseFailureException
     {
-        updateListener( listener, "prepare", GOAL_START );
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( releaseEnvironment );
+        prepareRequest.setReactorProjects( reactorProjects );
+        prepareRequest.setResume( resume );
+        prepareRequest.setDryRun( dryRun );
+        prepareRequest.setReleaseManagerListener( listener );
+        
+        prepare( prepareRequest, result );
+    }
+    
+    private void prepare( ReleasePrepareRequest prepareRequest, ReleaseResult result )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        updateListener( prepareRequest.getReleaseManagerListener(), "prepare", GOAL_START );
 
         ReleaseDescriptor config;
-        if ( resume )
+        if ( BooleanUtils.isNotFalse( prepareRequest.getResume() ) )
         {
-            config = loadReleaseDescriptor( releaseDescriptor, listener );
+            config = loadReleaseDescriptor( prepareRequest.getReleaseDescriptor(), prepareRequest.getReleaseManagerListener() );
         }
         else
         {
-            config = releaseDescriptor;
+            config = prepareRequest.getReleaseDescriptor();
         }
 
         // Later, it would be a good idea to introduce a proper workflow tool so that the release can be made up of a
@@ -167,7 +192,7 @@ public class DefaultReleaseManager
 
         for ( int idx = 0; idx <= index; idx++ )
         {
-            updateListener( listener, preparePhases.get( idx ), PHASE_SKIP );
+            updateListener( prepareRequest.getReleaseManagerListener(), preparePhases.get( idx ), PHASE_SKIP );
         }
 
         if ( index == preparePhases.size() - 1 )
@@ -192,18 +217,22 @@ public class DefaultReleaseManager
                 throw new ReleaseExecutionException( "Unable to find phase '" + name + "' to execute" );
             }
 
-            updateListener( listener, name, PHASE_START );
+            updateListener( prepareRequest.getReleaseManagerListener(), name, PHASE_START );
 
             ReleaseResult phaseResult = null;
             try
             {
-                if ( dryRun )
+                if ( BooleanUtils.isTrue( prepareRequest.getDryRun() ) )
                 {
-                    phaseResult = phase.simulate( config, releaseEnvironment, reactorProjects );
+                    phaseResult = phase.simulate( config,
+                                                  prepareRequest.getReleaseEnvironment(),
+                                                  prepareRequest.getReactorProjects());
                 }
                 else
                 {
-                    phaseResult = phase.execute( config, releaseEnvironment, reactorProjects );
+                    phaseResult = phase.execute( config,
+                                                 prepareRequest.getReleaseEnvironment(),
+                                                 prepareRequest.getReactorProjects());
                 }
             }
             finally
@@ -225,12 +254,13 @@ public class DefaultReleaseManager
                 throw new ReleaseExecutionException( "Error writing release properties after completing phase", e );
             }
 
-            updateListener( listener, name, PHASE_END );
+            updateListener( prepareRequest.getReleaseManagerListener(), name, PHASE_END );
         }
 
-        updateListener( listener, "prepare", GOAL_END );
+        updateListener( prepareRequest.getReleaseManagerListener(), "prepare", GOAL_END );
     }
 
+    /** {@inheritDoc} */
     public void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                           List<MavenProject> reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -238,13 +268,20 @@ public class DefaultReleaseManager
         rollback( releaseDescriptor, releaseEnvironment, reactorProjects, null );
     }
 
+    /** {@inheritDoc} */
     public void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                           List<MavenProject> reactorProjects, ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException
     {
-        updateListener( listener, "rollback", GOAL_START );
+    }
+    
+    /** {@inheritDoc} */
+    public void rollback( ReleaseRollbackRequest rollbackRequest )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        updateListener( rollbackRequest.getReleaseManagerListener(), "rollback", GOAL_START );
 
-        releaseDescriptor = loadReleaseDescriptor( releaseDescriptor, null );
+        ReleaseDescriptor releaseDescriptor = loadReleaseDescriptor( rollbackRequest.getReleaseDescriptor(), null );
 
         for ( String name : rollbackPhases )
         {
@@ -255,16 +292,21 @@ public class DefaultReleaseManager
                 throw new ReleaseExecutionException( "Unable to find phase '" + name + "' to execute" );
             }
 
-            updateListener( listener, name, PHASE_START );
-            phase.execute( releaseDescriptor, releaseEnvironment, reactorProjects );
-            updateListener( listener, name, PHASE_END );
+            updateListener( rollbackRequest.getReleaseManagerListener(), name, PHASE_START );
+            phase.execute( releaseDescriptor,
+                           rollbackRequest.getReleaseEnvironment(),
+                           rollbackRequest.getReactorProjects() );
+            updateListener( rollbackRequest.getReleaseManagerListener(), name, PHASE_END );
         }
 
         //call release:clean so that resume will not be possible anymore after a rollback
-        clean( releaseDescriptor, listener, reactorProjects );
-        updateListener( listener, "prepare", GOAL_END );
+        clean( releaseDescriptor, 
+               rollbackRequest.getReleaseManagerListener(), 
+               rollbackRequest.getReactorProjects() );
+        updateListener( rollbackRequest.getReleaseManagerListener(), "rollback", GOAL_END );
     }
 
+    /** {@inheritDoc} */
     public void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                          List<MavenProject> reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -272,6 +314,7 @@ public class DefaultReleaseManager
         perform( releaseDescriptor, releaseEnvironment, reactorProjects, null, true );
     }
 
+    /** {@inheritDoc} */
     public void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                          List<MavenProject> reactorProjects, boolean clean )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -279,6 +322,7 @@ public class DefaultReleaseManager
         perform( releaseDescriptor, releaseEnvironment, reactorProjects, null, clean );
     }
 
+    /** {@inheritDoc} */
     public void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                          List<MavenProject> reactorProjects, ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -322,17 +366,36 @@ public class DefaultReleaseManager
         return result;
     }
 
+    /** {@inheritDoc} */
+    public void perform( ReleasePerformRequest performRequest )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        perform( performRequest, new ReleaseResult() );
+    }
+    
     private void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                           List<MavenProject> reactorProjects, ReleaseManagerListener listener, ReleaseResult result,
                           boolean clean )
         throws ReleaseExecutionException, ReleaseFailureException
     {
-        updateListener( listener, "perform", GOAL_START );
-
-        releaseDescriptor = loadReleaseDescriptor( releaseDescriptor, listener );
+        ReleasePerformRequest performRequest = new ReleasePerformRequest();
+        performRequest.setReleaseDescriptor( releaseDescriptor );
+        performRequest.setReleaseEnvironment( releaseEnvironment );
+        performRequest.setReactorProjects( reactorProjects );
+        performRequest.setReleaseManagerListener( listener );
+        performRequest.setClean( clean );
         
-        ReleaseResult phaseResult = null;
+        perform( performRequest, result );
+    }    
+    
+    private void perform( ReleasePerformRequest performRequest, ReleaseResult result )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        updateListener( performRequest.getReleaseManagerListener(), "perform", GOAL_START );
 
+        ReleaseDescriptor releaseDescriptor = loadReleaseDescriptor( performRequest.getReleaseDescriptor(),
+                                                                     performRequest.getReleaseManagerListener() );
+        
         for ( String name : performPhases )
         {
             ReleasePhase phase = releasePhases.get( name );
@@ -342,21 +405,45 @@ public class DefaultReleaseManager
                 throw new ReleaseExecutionException( "Unable to find phase '" + name + "' to execute" );
             }
 
-            updateListener( listener, name, PHASE_START );
-            phaseResult = phase.execute( releaseDescriptor, releaseEnvironment, reactorProjects );
-            result.getOutputBuffer().append( phaseResult.getOutput() );
-            updateListener( listener, name, PHASE_END );
+            updateListener( performRequest.getReleaseManagerListener(), name, PHASE_START );
+            
+            ReleaseResult phaseResult = null;
+            try
+            {
+                if( BooleanUtils.isTrue( performRequest.getDryRun() ) )
+                {
+                    phaseResult = phase.simulate( releaseDescriptor,
+                                                 performRequest.getReleaseEnvironment(),
+                                                 performRequest.getReactorProjects() );
+                }
+                else
+                {
+                    phaseResult = phase.execute( releaseDescriptor,
+                                                 performRequest.getReleaseEnvironment(),
+                                                 performRequest.getReactorProjects() );
+                }
+            }
+            finally
+            {
+                if ( result != null && phaseResult != null )
+                {
+                    result.getOutputBuffer().append( phaseResult.getOutput() );
+                }
+            }
+            
+            updateListener( performRequest.getReleaseManagerListener(), name, PHASE_END );
         }
-
-        if ( clean )
+        
+        if ( BooleanUtils.isTrue( performRequest.getClean() ) )
         {
             // call release:clean so that resume will not be possible anymore after a perform
-            clean( releaseDescriptor, listener, reactorProjects );
+            clean( releaseDescriptor, performRequest.getReleaseManagerListener(), performRequest.getReactorProjects() );
         }
 
-        updateListener( listener, "perform", GOAL_END );
+        updateListener( performRequest.getReleaseManagerListener(), "perform", GOAL_END );
     }
 
+    /** {@inheritDoc} */
     public void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                         List<MavenProject> reactorProjects, boolean dryRun )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -364,13 +451,31 @@ public class DefaultReleaseManager
         branch( releaseDescriptor, releaseEnvironment, reactorProjects, dryRun, null );
     }
 
+    /** {@inheritDoc} */
     public void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                         List<MavenProject> reactorProjects, boolean dryRun, ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException
     {
-        updateListener( listener, "branch", GOAL_START );
+        ReleaseBranchRequest branchRequest = new ReleaseBranchRequest();
+        branchRequest.setReleaseDescriptor( releaseDescriptor );
+        branchRequest.setReleaseEnvironment( releaseEnvironment );
+        branchRequest.setReactorProjects( reactorProjects );
+        branchRequest.setDryRun( dryRun );
+        branchRequest.setReleaseManagerListener( listener );
+        
+        branch( branchRequest );
+    }
+    
+    /** {@inheritDoc} */
+    public void branch( ReleaseBranchRequest branchRequest )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        ReleaseDescriptor releaseDescriptor = loadReleaseDescriptor( branchRequest.getReleaseDescriptor(),
+                                                                     branchRequest.getReleaseManagerListener() );
 
-        releaseDescriptor = loadReleaseDescriptor( releaseDescriptor, listener );
+        updateListener( branchRequest.getReleaseManagerListener(), "branch", GOAL_START );
+
+        boolean dryRun = BooleanUtils.isTrue( branchRequest.getDryRun() );
 
         for ( String name : branchPhases )
         {
@@ -381,35 +486,51 @@ public class DefaultReleaseManager
                 throw new ReleaseExecutionException( "Unable to find phase '" + name + "' to execute" );
             }
 
-            updateListener( listener, name, PHASE_START );
+            updateListener( branchRequest.getReleaseManagerListener(), name, PHASE_START );
+            
             if ( dryRun )
             {
-                phase.simulate( releaseDescriptor, releaseEnvironment, reactorProjects );
+                phase.simulate( releaseDescriptor,
+                                branchRequest.getReleaseEnvironment(),
+                                branchRequest.getReactorProjects() );
             }
-            else
+            else // getDryRun is null or FALSE
             {
-                phase.execute( releaseDescriptor, releaseEnvironment, reactorProjects );
+                phase.execute( releaseDescriptor,
+                               branchRequest.getReleaseEnvironment(),
+                               branchRequest.getReactorProjects() );
             }
-            updateListener( listener, name, PHASE_END );
+            updateListener( branchRequest.getReleaseManagerListener(), name, PHASE_END );
         }
 
         if ( !dryRun )
         {
-            clean( releaseDescriptor, listener, reactorProjects );
+            clean( releaseDescriptor,
+                   branchRequest.getReleaseManagerListener(),
+                   branchRequest.getReactorProjects() );
         }
 
-        updateListener( listener, "branch", GOAL_END );
+        updateListener( branchRequest.getReleaseManagerListener(), "branch", GOAL_END );
     }
 
     public void updateVersions( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                                 List<MavenProject> reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException
     {
-        ReleaseManagerListener listener = null;
+        ReleaseUpdateVersionsRequest updateVersionsRequest = new ReleaseUpdateVersionsRequest();
+        updateVersionsRequest.setReleaseDescriptor( releaseDescriptor );
+        updateVersionsRequest.setReleaseEnvironment( releaseEnvironment );
+        updateVersionsRequest.setReactorProjects( reactorProjects );
         
-        updateListener( listener, "updateVersions", GOAL_START );
+    }
+    
+    /** {@inheritDoc} */
+    public void updateVersions( ReleaseUpdateVersionsRequest updateVersionsRequest )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        updateListener( updateVersionsRequest.getReleaseManagerListener(), "updateVersions", GOAL_START );
 
-        releaseDescriptor = loadReleaseDescriptor( releaseDescriptor, listener );
+        ReleaseDescriptor releaseDescriptor = loadReleaseDescriptor( updateVersionsRequest.getReleaseDescriptor(), updateVersionsRequest.getReleaseManagerListener() );
 
         for ( String name : updateVersionsPhases )
         {
@@ -420,14 +541,16 @@ public class DefaultReleaseManager
                 throw new ReleaseExecutionException( "Unable to find phase '" + name + "' to execute" );
             }
 
-            updateListener( listener, name, PHASE_START );
-            phase.execute( releaseDescriptor, releaseEnvironment, reactorProjects );
-            updateListener( listener, name, PHASE_END );
+            updateListener( updateVersionsRequest.getReleaseManagerListener(), name, PHASE_START );
+            phase.execute( releaseDescriptor,
+                           updateVersionsRequest.getReleaseEnvironment(),
+                           updateVersionsRequest.getReactorProjects() );
+            updateListener( updateVersionsRequest.getReleaseManagerListener(), name, PHASE_END );
         }
 
-        clean( releaseDescriptor, listener, reactorProjects );
+        clean( releaseDescriptor, updateVersionsRequest.getReleaseManagerListener(), updateVersionsRequest.getReactorProjects() );
 
-        updateListener( listener, "updateVersions", GOAL_END );
+        updateListener( updateVersionsRequest.getReleaseManagerListener(), "updateVersions", GOAL_END );
     }
 
     /**
@@ -471,14 +594,26 @@ public class DefaultReleaseManager
         }
     }
 
+    /** {@inheritDoc} */
     public void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener,
                        List<MavenProject> reactorProjects )
     {
-        updateListener( listener, "cleanup", PHASE_START );
+        ReleaseCleanRequest cleanRequest = new ReleaseCleanRequest();
+        cleanRequest.setReleaseDescriptor( releaseDescriptor );
+        cleanRequest.setReleaseManagerListener( listener );
+        cleanRequest.setReactorProjects( reactorProjects );
+        
+        clean( cleanRequest );
+    }
+
+    /** {@inheritDoc} */
+    public void clean( ReleaseCleanRequest cleanRequest )
+    {
+        updateListener( cleanRequest.getReleaseManagerListener(), "cleanup", PHASE_START );
 
         getLogger().info( "Cleaning up after release..." );
 
-        configStore.delete( releaseDescriptor );
+        configStore.delete( cleanRequest.getReleaseDescriptor() );
         Set<String> phases = new LinkedHashSet<String>( preparePhases );
         phases.addAll( branchPhases );
 
@@ -486,10 +621,10 @@ public class DefaultReleaseManager
         {
             ReleasePhase phase = releasePhases.get( name );
 
-            phase.clean( reactorProjects );
+            phase.clean( cleanRequest.getReactorProjects() );
         }
 
-        updateListener( listener, "cleanup", PHASE_END );
+        updateListener( cleanRequest.getReleaseManagerListener(), "cleanup", PHASE_END );
     }
 
     void setConfigStore( ReleaseDescriptorStore configStore )
@@ -571,6 +706,7 @@ public class DefaultReleaseManager
         result.setResultCode( ReleaseResult.ERROR );
     }
 
+    /** {@inheritDoc} */
     public void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
                         boolean dryRun )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -578,6 +714,7 @@ public class DefaultReleaseManager
         branch( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, dryRun );
     }
 
+    /** {@inheritDoc} */
     public void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
                         boolean dryRun, ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -586,12 +723,14 @@ public class DefaultReleaseManager
                 listener );
     }
 
+    /** {@inheritDoc} */
     public void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException
     {
         perform( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects );
     }
 
+    /** {@inheritDoc} */
     public void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
                          ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -599,6 +738,7 @@ public class DefaultReleaseManager
         perform( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, listener );
     }
 
+    /** {@inheritDoc} */
     public void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
                          boolean clean )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -613,12 +753,14 @@ public class DefaultReleaseManager
                                   reactorProjects, listener );
     }
 
+    /** {@inheritDoc} */
     public void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException
     {
         prepare( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects );
     }
 
+    /** {@inheritDoc} */
     public void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
                          boolean resume, boolean dryRun )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -627,6 +769,7 @@ public class DefaultReleaseManager
                  dryRun );
     }
 
+    /** {@inheritDoc} */
     public void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
                          boolean resume, boolean dryRun, ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -643,6 +786,7 @@ public class DefaultReleaseManager
                                   reactorProjects, resume, dryRun, listener );
     }
 
+    /** {@inheritDoc} */
     public void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
                           ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException
@@ -650,9 +794,10 @@ public class DefaultReleaseManager
         rollback( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, listener );
     }
 
+    /** {@inheritDoc} */
     public void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException
     {
         rollback( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, null );
     }
-}
+}
\ No newline at end of file

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseBranchRequest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseBranchRequest.java?rev=1296689&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseBranchRequest.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseBranchRequest.java Sat Mar  3 20:20:02 2012
@@ -0,0 +1,67 @@
+package org.apache.maven.shared.release;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.release.env.ReleaseEnvironment;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 2.3
+ */
+public class ReleaseBranchRequest extends AbstractReleaseRequest
+{
+    // using Boolean to detect if has been set explicitly
+    private Boolean dryRun;
+    
+    private ReleaseEnvironment releaseEnvironment;
+
+    /**
+     * @return the dryRun
+     */
+    public Boolean getDryRun()
+    {
+        return dryRun;
+    }
+    
+    /**
+     * @param dryRun the dryRun to set
+     */
+    public void setDryRun( Boolean dryRun )
+    {
+        this.dryRun = dryRun;
+    }
+
+    /**
+     * @return the releaseEnvironment
+     */
+    public ReleaseEnvironment getReleaseEnvironment()
+    {
+        return releaseEnvironment;
+    }
+
+    /**
+     * @param releaseEnvironment the releaseEnvironment to set
+     */
+    public void setReleaseEnvironment( ReleaseEnvironment releaseEnvironment )
+    {
+        this.releaseEnvironment = releaseEnvironment;
+    }
+}
\ No newline at end of file

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseCleanRequest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseCleanRequest.java?rev=1296689&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseCleanRequest.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseCleanRequest.java Sat Mar  3 20:20:02 2012
@@ -0,0 +1,29 @@
+package org.apache.maven.shared.release;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 2.3
+ */
+public class ReleaseCleanRequest extends AbstractReleaseRequest
+{
+}
\ No newline at end of file

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java?rev=1296689&r1=1296688&r2=1296689&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java Sat Mar  3 20:20:02 2012
@@ -96,6 +96,16 @@ public interface ReleaseManager
     void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
                   boolean resume, boolean dryRun )
         throws ReleaseExecutionException, ReleaseFailureException;
+    
+    /**
+     * Prepare a release.
+     * 
+     * @param prepareRequest             all prepare arguments
+     * @throws ReleaseExecutionException if there is a problem performing the release
+     * @throws ReleaseFailureException   if there is a problem performing the release
+     * @since 2.3
+     */
+    void prepare( ReleasePrepareRequest prepareRequest ) throws ReleaseExecutionException, ReleaseFailureException;
 
     /**
      * Prepare a release.
@@ -209,7 +219,7 @@ public interface ReleaseManager
                                      List<MavenProject> reactorProjects, ReleaseManagerListener listener );
 
     /**
-     * Perform a release, and optionnaly cleanup.
+     * Perform a release, and optionally cleanup.
      *
      * @param releaseDescriptor the configuration to use for release
      * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
@@ -221,9 +231,20 @@ public interface ReleaseManager
     void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                   List<MavenProject> reactorProjects, boolean clean )
         throws ReleaseExecutionException, ReleaseFailureException;
+    
+    /**
+     * Perform a release
+     * 
+     * @param performRequest   all perform arguments
+     * @throws ReleaseExecutionException if there is a problem performing the release
+     * @throws ReleaseFailureException   if there is a problem performing the release
+     * @since 2.3
+     */
+    void perform( ReleasePerformRequest performRequest )
+        throws ReleaseExecutionException, ReleaseFailureException;
 
     /**
-     * Perform a release, and optionnaly cleanup.
+     * Perform a release, and optionally cleanup.
      *
      * @param releaseDescriptor the configuration to use for release
      * @param settings          the settings.xml configuration
@@ -245,6 +266,14 @@ public interface ReleaseManager
      * @param reactorProjects   the reactor projects
      */
     void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener, List<MavenProject> reactorProjects );
+    
+    /**
+     * Clean a release.
+     * 
+     * @param cleanRequest all clean arguments
+     * @since 2.3
+     */
+    void clean( ReleaseCleanRequest cleanRequest );
 
     /**
      * Rollback changes made by the previous release
@@ -302,7 +331,18 @@ public interface ReleaseManager
     void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
                    ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException;
-
+    
+    /**
+     * Rollback changes made by the previous release
+     * 
+     * @param rollbackRequest            all rollback arguments
+     * @throws ReleaseExecutionException if there is a problem during release rollback
+     * @throws ReleaseFailureException   if there is a problem during release rollback
+     * @since 2.3
+     */
+    void rollback( ReleaseRollbackRequest rollbackRequest )
+        throws ReleaseExecutionException, ReleaseFailureException;
+    
     /**
      * Branch a project
      *
@@ -310,8 +350,8 @@ public interface ReleaseManager
      * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
      * @param reactorProjects   the reactor projects
      * @param dryRun            do not commit any changes to the file system or SCM
-     * @throws ReleaseExecutionException if there is a problem during release rollback
-     * @throws ReleaseFailureException   if there is a problem during release rollback
+     * @throws ReleaseExecutionException if there is a problem during release branch
+     * @throws ReleaseFailureException   if there is a problem during release branch
      */
     void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                  List<MavenProject> reactorProjects, boolean dryRun )
@@ -324,8 +364,8 @@ public interface ReleaseManager
      * @param settings          the settings.xml configuration
      * @param reactorProjects   the reactor projects
      * @param dryRun            do not commit any changes to the file system or SCM
-     * @throws ReleaseExecutionException if there is a problem during release rollback
-     * @throws ReleaseFailureException   if there is a problem during release rollback
+     * @throws ReleaseExecutionException if there is a problem during release branch
+     * @throws ReleaseFailureException   if there is a problem during release branch
      *
      * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean)} instead.
      */
@@ -341,8 +381,8 @@ public interface ReleaseManager
      * @param reactorProjects   the reactor projects
      * @param dryRun            do not commit any changes to the file system or SCM
      * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem during release rollback
-     * @throws ReleaseFailureException   if there is a problem during release rollback
+     * @throws ReleaseExecutionException if there is a problem during release branch
+     * @throws ReleaseFailureException   if there is a problem during release branch
      */
     void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                  List<MavenProject> reactorProjects, boolean dryRun, ReleaseManagerListener listener )
@@ -356,8 +396,8 @@ public interface ReleaseManager
      * @param reactorProjects   the reactor projects
      * @param dryRun            do not commit any changes to the file system or SCM
      * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem during release rollback
-     * @throws ReleaseFailureException   if there is a problem during release rollback
+     * @throws ReleaseExecutionException if there is a problem during release branch
+     * @throws ReleaseFailureException   if there is a problem during release branch
      *
      * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean, ReleaseManagerListener)} instead.
      */
@@ -366,16 +406,36 @@ public interface ReleaseManager
         throws ReleaseExecutionException, ReleaseFailureException;
     
     /**
+     * Branch a project
+     * 
+     * @param branchRequest              all branch arguments
+     * @throws ReleaseExecutionException if there is a problem during release branch
+     * @throws ReleaseFailureException   if there is a problem during release branch
+     * @since 2.3
+     */
+    void branch( ReleaseBranchRequest branchRequest ) throws ReleaseExecutionException, ReleaseFailureException;
+    
+    /**
      * Update version numbers for a project
      *
      * @param releaseDescriptor the configuration to use for release
      * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
      * @param reactorProjects   the reactor projects
-     * @throws ReleaseExecutionException if there is a problem during release rollback
-     * @throws ReleaseFailureException   if there is a problem during release rollback
+     * @throws ReleaseExecutionException if there is a problem during update versions
+     * @throws ReleaseFailureException   if there is a problem during update versions
      */
     void updateVersions( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
                          List<MavenProject> reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException;
 
+    /**
+     * Update version numbers for a project
+     * 
+     * @param updateVersionsRequest      all update versions arguments
+     * @throws ReleaseExecutionException if there is a problem during update versions
+     * @throws ReleaseFailureException   if there is a problem during update versions
+     * @since 2.3
+     */
+    void updateVersions( ReleaseUpdateVersionsRequest updateVersionsRequest )
+        throws ReleaseExecutionException, ReleaseFailureException;
 }

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePerformRequest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePerformRequest.java?rev=1296689&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePerformRequest.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePerformRequest.java Sat Mar  3 20:20:02 2012
@@ -0,0 +1,86 @@
+package org.apache.maven.shared.release;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.release.env.ReleaseEnvironment;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 2.3
+ */
+public class ReleasePerformRequest extends AbstractReleaseRequest
+{
+    // using Boolean to detect if has been set explicitly
+    private Boolean dryRun;
+    
+    // using Boolean to detect if has been set explicitly
+    private Boolean clean;
+    
+    private ReleaseEnvironment releaseEnvironment;
+
+    /**
+     * @return the dryRun
+     */
+    public Boolean getDryRun()
+    {
+        return dryRun;
+    }
+
+    /**
+     * @param dryRun the dryRun to set
+     */
+    public void setDryRun( Boolean dryRun )
+    {
+        this.dryRun = dryRun;
+    }
+    
+    /**
+     * @return the clean
+     */
+    public Boolean getClean()
+    {
+        return clean;
+    }
+
+    /**
+     * @param clean the clean to set
+     */
+    public void setClean( Boolean clean )
+    {
+        this.clean = clean;
+    }
+
+    /**
+     * @return the releaseEnvironment
+     */
+    public ReleaseEnvironment getReleaseEnvironment()
+    {
+        return releaseEnvironment;
+    }
+
+    /**
+     * @param releaseEnvironment the releaseEnvironment to set
+     */
+    public void setReleaseEnvironment( ReleaseEnvironment releaseEnvironment )
+    {
+        this.releaseEnvironment = releaseEnvironment;
+    }
+}
\ No newline at end of file

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePrepareRequest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePrepareRequest.java?rev=1296689&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePrepareRequest.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleasePrepareRequest.java Sat Mar  3 20:20:02 2012
@@ -0,0 +1,86 @@
+package org.apache.maven.shared.release;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.release.env.ReleaseEnvironment;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 2.3
+ */
+public class ReleasePrepareRequest extends AbstractReleaseRequest
+{
+    // using Boolean to detect if has been set explicitly
+    private Boolean dryRun;
+    
+    // using Boolean to detect if has been set explicitly
+    private Boolean resume;
+    
+    private ReleaseEnvironment releaseEnvironment;
+
+    /**
+     * @return the dryRun
+     */
+    public Boolean getDryRun()
+    {
+        return dryRun;
+    }
+
+    /**
+     * @param dryRun the dryRun to set
+     */
+    public void setDryRun( Boolean dryRun )
+    {
+        this.dryRun = dryRun;
+    }
+    
+    /**
+     * @return the resume
+     */
+    public Boolean getResume()
+    {
+        return resume;
+    }
+
+    /**
+     * @param resume the resume to set
+     */
+    public void setResume( Boolean resume )
+    {
+        this.resume = resume;
+    }
+
+    /**
+     * @return the releaseEnvironment
+     */
+    public ReleaseEnvironment getReleaseEnvironment()
+    {
+        return releaseEnvironment;
+    }
+
+    /**
+     * @param releaseEnvironment the releaseEnvironment to set
+     */
+    public void setReleaseEnvironment( ReleaseEnvironment releaseEnvironment )
+    {
+        this.releaseEnvironment = releaseEnvironment;
+    }
+}
\ No newline at end of file

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseRollbackRequest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseRollbackRequest.java?rev=1296689&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseRollbackRequest.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseRollbackRequest.java Sat Mar  3 20:20:02 2012
@@ -0,0 +1,48 @@
+package org.apache.maven.shared.release;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.release.env.ReleaseEnvironment;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 2.3
+ */
+public class ReleaseRollbackRequest extends AbstractReleaseRequest
+{
+    private ReleaseEnvironment releaseEnvironment;
+
+    /**
+     * @return the releaseEnvironment
+     */
+    public ReleaseEnvironment getReleaseEnvironment()
+    {
+        return releaseEnvironment;
+    }
+
+    /**
+     * @param releaseEnvironment the releaseEnvironment to set
+     */
+    public void setReleaseEnvironment( ReleaseEnvironment releaseEnvironment )
+    {
+        this.releaseEnvironment = releaseEnvironment;
+    }
+}
\ No newline at end of file

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseUpdateVersionsRequest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseUpdateVersionsRequest.java?rev=1296689&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseUpdateVersionsRequest.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseUpdateVersionsRequest.java Sat Mar  3 20:20:02 2012
@@ -0,0 +1,48 @@
+package org.apache.maven.shared.release;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.release.env.ReleaseEnvironment;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 2.3
+ */
+public class ReleaseUpdateVersionsRequest extends AbstractReleaseRequest
+{
+    private ReleaseEnvironment releaseEnvironment;
+
+    /**
+     * @return the releaseEnvironment
+     */
+    public ReleaseEnvironment getReleaseEnvironment()
+    {
+        return releaseEnvironment;
+    }
+
+    /**
+     * @param releaseEnvironment the releaseEnvironment to set
+     */
+    public void setReleaseEnvironment( ReleaseEnvironment releaseEnvironment )
+    {
+        this.releaseEnvironment = releaseEnvironment;
+    }
+}
\ No newline at end of file