You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ct...@apache.org on 2009/03/08 15:41:35 UTC
svn commit: r751433 [4/4] - in /continuum/trunk: continuum-api/
continuum-api/src/main/java/org/apache/continuum/release/
continuum-api/src/main/java/org/apache/continuum/release/distributed/
continuum-api/src/main/java/org/apache/continuum/release/dis...
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java?rev=751433&r1=751432&r2=751433&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java Sun Mar 8 14:41:33 2009
@@ -21,6 +21,9 @@
import org.apache.continuum.model.repository.LocalRepository;
import org.apache.continuum.release.config.ContinuumReleaseDescriptor;
+import org.apache.continuum.release.distributed.DistributedReleaseUtil;
+import org.apache.continuum.release.distributed.manager.DistributedReleaseManager;
+import org.apache.continuum.web.action.AbstractReleaseAction;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.model.system.Profile;
@@ -37,7 +40,9 @@
import java.io.File;
import java.io.FileReader;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* @author Edwin Punzalan
@@ -45,7 +50,7 @@
* @plexus.component role="com.opensymphony.xwork2.Action" role-hint="releasePerform"
*/
public class ReleasePerformAction
- extends ContinuumActionSupport
+ extends AbstractReleaseAction
{
private int projectId;
@@ -80,11 +85,20 @@
private void init()
throws Exception
{
- Project project = getContinuum().getProject( projectId );
-
- String workingDirectory = getContinuum().getWorkingDirectory( project.getId() ).getPath();
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+ {
+ DistributedReleaseManager distributedReleaseManager = getContinuum().getDistributedReleaseManager();
- getReleasePluginParameters( workingDirectory, "pom.xml" );
+ getReleasePluginParameters( distributedReleaseManager.getReleasePluginParameters( projectId, "pom.xml" ) );
+ }
+ else
+ {
+ Project project = getContinuum().getProject( projectId );
+
+ String workingDirectory = getContinuum().getWorkingDirectory( project.getId() ).getPath();
+
+ getReleasePluginParameters( workingDirectory, "pom.xml" );
+ }
}
public String inputFromScm()
@@ -186,21 +200,30 @@
return REQUIRES_AUTHORIZATION;
}
- listener = new DefaultReleaseManagerListener();
-
- ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
-
Project project = getContinuum().getProject( projectId );
- //todo should be configurable
- File performDirectory = new File( getContinuum().getConfiguration().getWorkingDirectory(),
- "releases-" + System.currentTimeMillis() );
- performDirectory.mkdirs();
-
LocalRepository repository = project.getProjectGroup().getLocalRepository();
- releaseManager.perform( releaseId, performDirectory, goals, arguments, useReleaseProfile, listener,
- repository );
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+ {
+ DistributedReleaseManager releaseManager = getContinuum().getDistributedReleaseManager();
+
+ releaseManager.releasePerform( releaseId, goals, arguments, useReleaseProfile, repository );
+ }
+ else
+ {
+ listener = new DefaultReleaseManagerListener();
+
+ ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+
+ //todo should be configurable
+ File performDirectory = new File( getContinuum().getConfiguration().getWorkingDirectory(),
+ "releases-" + System.currentTimeMillis() );
+ performDirectory.mkdirs();
+
+ releaseManager.perform( releaseId, performDirectory, goals, arguments, useReleaseProfile, listener,
+ repository );
+ }
return SUCCESS;
}
@@ -208,30 +231,53 @@
public String executeFromScm()
throws Exception
{
- ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+ {
+ Project project = getContinuum().getProject( projectId );
- ContinuumReleaseDescriptor descriptor = new ContinuumReleaseDescriptor();
- descriptor.setScmSourceUrl( scmUrl );
- descriptor.setScmUsername( scmUsername );
- descriptor.setScmPassword( scmPassword );
- descriptor.setScmReleaseLabel( scmTag );
- descriptor.setScmTagBase( scmTagBase );
+ LocalRepository repository = project.getProjectGroup().getLocalRepository();
- if ( profileId != -1 )
- {
- Profile profile = getContinuum().getProfileService().getProfile( profileId );
- descriptor.setEnvironments( releaseManager.getEnvironments( profile ) );
- }
+ DistributedReleaseManager releaseManager = getContinuum().getDistributedReleaseManager();
+ Map<String, String> environments = new HashMap<String, String>();
+
+ if ( profileId != -1 )
+ {
+ Profile profile = getContinuum().getProfileService().getProfile( profileId );
+ environments = getEnvironments( profile );
+ }
+
+ releaseManager.releasePerformFromScm( projectId, goals, arguments, useReleaseProfile, repository, scmUrl,
+ scmUsername, scmPassword, scmTag, scmTagBase, environments );
- do
+ return SUCCESS;
+ }
+ else
{
- releaseId = String.valueOf( System.currentTimeMillis() );
+ ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+
+ ContinuumReleaseDescriptor descriptor = new ContinuumReleaseDescriptor();
+ descriptor.setScmSourceUrl( scmUrl );
+ descriptor.setScmUsername( scmUsername );
+ descriptor.setScmPassword( scmPassword );
+ descriptor.setScmReleaseLabel( scmTag );
+ descriptor.setScmTagBase( scmTagBase );
+
+ if ( profileId != -1 )
+ {
+ Profile profile = getContinuum().getProfileService().getProfile( profileId );
+ descriptor.setEnvironments( getEnvironments( profile ) );
+ }
+
+ do
+ {
+ releaseId = String.valueOf( System.currentTimeMillis() );
+ }
+ while ( releaseManager.getPreparedReleases().containsKey( releaseId ) );
+
+ releaseManager.getPreparedReleases().put( releaseId, descriptor );
+
+ return execute();
}
- while ( releaseManager.getPreparedReleases().containsKey( releaseId ) );
-
- releaseManager.getPreparedReleases().put( releaseId, descriptor );
-
- return execute();
}
private void populateFromProject()
@@ -255,6 +301,15 @@
releaseId = "";
}
+ private void getReleasePluginParameters( Map context )
+ {
+ useReleaseProfile = DistributedReleaseUtil.getUseReleaseProfile( context, useReleaseProfile );
+
+ goals = DistributedReleaseUtil.getGoals( context, goals );
+
+ arguments = DistributedReleaseUtil.getArguments( context, "" );
+ }
+
public String getReleaseId()
{
return releaseId;
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePrepareAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePrepareAction.java?rev=751433&r1=751432&r2=751433&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePrepareAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePrepareAction.java Sun Mar 8 14:41:33 2009
@@ -19,13 +19,18 @@
* under the License.
*/
+import org.apache.continuum.release.distributed.DistributedReleaseUtil;
+import org.apache.continuum.release.distributed.manager.DistributedReleaseManager;
+import org.apache.continuum.web.action.AbstractReleaseAction;
import org.apache.maven.continuum.ContinuumException;
+import org.apache.maven.continuum.installation.InstallationService;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.model.system.Profile;
import org.apache.maven.continuum.release.ContinuumReleaseManager;
import org.apache.maven.continuum.release.ContinuumReleaseManagerListener;
import org.apache.maven.continuum.release.DefaultReleaseManagerListener;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
+import org.apache.maven.continuum.web.model.ReleaseListenerSummary;
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
@@ -51,7 +56,7 @@
* @plexus.component role="com.opensymphony.xwork2.Action" role-hint="releasePrepare"
*/
public class ReleasePrepareAction
- extends ContinuumActionSupport
+ extends AbstractReleaseAction
{
private static final String SCM_SVN_PROTOCOL_PREFIX = "scm:svn";
@@ -101,6 +106,8 @@
private boolean addSchema = true;
+ private ReleaseListenerSummary listenerSummary;
+
public String input()
throws Exception
{
@@ -134,8 +141,6 @@
}
}
- String workingDirectory = getContinuum().getWorkingDirectory( project.getId() ).getPath();
-
String scmUrl = project.getScmUrl();
if ( scmUrl.startsWith( SCM_SVN_PROTOCOL_PREFIX ) )
{
@@ -148,16 +153,29 @@
scmTagBase = "";
}
- prepareGoals = "clean integration-test";
-
- getReleasePluginParameters( workingDirectory, "pom.xml" );
-
ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
//CONTINUUM-1503
releaseManager.sanitizeTagName( scmUrl, scmTag );
- processProject( workingDirectory, "pom.xml" );
+ prepareGoals = "clean integration-test";
+
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+ {
+ DistributedReleaseManager distributedReleaseManager = getContinuum().getDistributedReleaseManager();
+
+ getReleasePluginParameters( distributedReleaseManager.getReleasePluginParameters( projectId, "pom.xml" ) );
+
+ projects = distributedReleaseManager.processProject( projectId, "pom.xml", autoVersionSubmodules );
+ }
+ else
+ {
+ String workingDirectory = getContinuum().getWorkingDirectory( project.getId() ).getPath();
+
+ getReleasePluginParameters( workingDirectory, "pom.xml" );
+
+ processProject( workingDirectory, "pom.xml" );
+ }
profiles = this.getContinuum().getProfileService().getAllProfiles();
@@ -247,10 +265,8 @@
return REQUIRES_AUTHORIZATION;
}
- listener = new DefaultReleaseManagerListener();
-
Project project = getContinuum().getProject( projectId );
-
+
name = project.getName();
if ( name == null )
{
@@ -264,11 +280,39 @@
profile = getContinuum().getProfileService().getProfile( profileId );
}
- ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+ Map<String, String> environments = getEnvironments( profile );
- releaseId =
- releaseManager.prepare( project, getReleaseProperties(), getRelVersionMap(), getDevVersionMap(), listener,
- profile );
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+ {
+ DistributedReleaseManager distributedReleaseManager = getContinuum().getDistributedReleaseManager();
+
+ releaseId = distributedReleaseManager.releasePrepare( project, getReleaseProperties(), getRelVersionMap(), getDevVersionMap(),
+ environments );
+ }
+ else
+ {
+ listener = new DefaultReleaseManagerListener();
+
+ String workingDirectory = getContinuum().getWorkingDirectory( projectId ).getPath();
+
+ ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+
+ String executable = getContinuum().getInstallationService()
+ .getExecutorConfigurator( InstallationService.MAVEN2_TYPE ).getExecutable();
+
+ if ( environments != null )
+ {
+ String m2Home = environments.get( getContinuum().getInstallationService().getEnvVar( InstallationService.MAVEN2_TYPE ) );
+ if ( StringUtils.isNotEmpty( m2Home ) )
+ {
+ executable = m2Home + File.separator + "bin" + File.separator + executable;
+ }
+ }
+
+ releaseId =
+ releaseManager.prepare( project, getReleaseProperties(), getRelVersionMap(), getDevVersionMap(), listener,
+ workingDirectory, environments, executable );
+ }
return SUCCESS;
}
@@ -285,7 +329,15 @@
return REQUIRES_AUTHORIZATION;
}
- result = (ReleaseResult) getContinuum().getReleaseManager().getReleaseResults().get( releaseId );
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+ {
+ DistributedReleaseManager distributedReleaseManager = getContinuum().getDistributedReleaseManager();
+ result = distributedReleaseManager.getReleaseResult( releaseId );
+ }
+ else
+ {
+ result = (ReleaseResult) getContinuum().getReleaseManager().getReleaseResults().get( releaseId );
+ }
return "viewResult";
}
@@ -304,28 +356,70 @@
String status;
- ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+ listenerSummary = new ReleaseListenerSummary();
- listener = (ContinuumReleaseManagerListener) releaseManager.getListeners().get( releaseId );
-
- if ( listener != null )
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
{
- if ( listener.getState() == ContinuumReleaseManagerListener.FINISHED )
+ DistributedReleaseManager distributedReleaseManager = getContinuum().getDistributedReleaseManager();
+ Map listenerMap = distributedReleaseManager.getListener( releaseId );
+
+ if ( listenerMap != null && !listenerMap.isEmpty() )
{
- releaseManager.getListeners().remove( releaseId );
+ int state = DistributedReleaseUtil.getReleaseState( listenerMap );
- result = (ReleaseResult) releaseManager.getReleaseResults().get( releaseId );
+ if ( state == ContinuumReleaseManagerListener.FINISHED )
+ {
+ distributedReleaseManager.removeListener( releaseId );
+
+ result = distributedReleaseManager.getReleaseResult( releaseId );
+
+ status = "finished";
+ }
+ else
+ {
+ status = "inProgress";
+ }
- status = "finished";
+ listenerSummary.setPhases( DistributedReleaseUtil.getReleasePhases( listenerMap ) );
+ listenerSummary.setCompletedPhases( DistributedReleaseUtil.getCompletedReleasePhases( listenerMap ) );
+ listenerSummary.setInProgress( DistributedReleaseUtil.getReleaseInProgress( listenerMap ) );
+ listenerSummary.setError( DistributedReleaseUtil.getReleaseError( listenerMap ) );
}
else
{
- status = "inProgress";
+ throw new Exception( "There is no release on-going or finished with id: " + releaseId );
}
}
else
{
- throw new Exception( "There is no release on-going or finished with id: " + releaseId );
+ ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+
+ listener = (ContinuumReleaseManagerListener) releaseManager.getListeners().get( releaseId );
+
+ if ( listener != null )
+ {
+ if ( listener.getState() == ContinuumReleaseManagerListener.FINISHED )
+ {
+ releaseManager.getListeners().remove( releaseId );
+
+ result = (ReleaseResult) releaseManager.getReleaseResults().get( releaseId );
+
+ status = "finished";
+ }
+ else
+ {
+ status = "inProgress";
+ }
+
+ listenerSummary.setPhases( listener.getPhases() );
+ listenerSummary.setCompletedPhases( listener.getCompletedPhases() );
+ listenerSummary.setInProgress( listener.getInProgress() );
+ listenerSummary.setError( listener.getError() );
+ }
+ else
+ {
+ throw new Exception( "There is no release on-going or finished with id: " + releaseId );
+ }
}
return status;
@@ -446,6 +540,23 @@
return p;
}
+ private void getReleasePluginParameters( Map context )
+ {
+ scmTag = DistributedReleaseUtil.getScmTag( context, scmTag );
+
+ scmTagBase = DistributedReleaseUtil.getScmTagBase( context, scmTagBase );
+
+ prepareGoals = DistributedReleaseUtil.getPrepareGoals( context, prepareGoals );
+
+ arguments = DistributedReleaseUtil.getArguments( context, "" );
+
+ scmCommentPrefix = DistributedReleaseUtil.getScmCommentPrefix( context, "" );
+
+ autoVersionSubmodules = DistributedReleaseUtil.getAutoVersionSubmodules( context, false );
+
+ addSchema = DistributedReleaseUtil.getAddSchema( context, true );
+ }
+
public List<String> getProjectKeys()
{
return projectKeys;
@@ -670,4 +781,14 @@
{
this.addSchema = addSchema;
}
+
+ public ReleaseListenerSummary getListenerSummary()
+ {
+ return listenerSummary;
+ }
+
+ public void setListenerSummary( ReleaseListenerSummary listenerSummary )
+ {
+ this.listenerSummary = listenerSummary;
+ }
}
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseProjectAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseProjectAction.java?rev=751433&r1=751432&r2=751433&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseProjectAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseProjectAction.java Sun Mar 8 14:41:33 2009
@@ -19,6 +19,7 @@
* under the License.
*/
+import org.apache.continuum.release.distributed.manager.DistributedReleaseManager;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.Project;
@@ -80,16 +81,34 @@
String releaseId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
- ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
-
- Map preparedReleases = releaseManager.getPreparedReleases();
- if ( preparedReleases.containsKey( releaseId ) )
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
{
- ReleaseDescriptor descriptor = (ReleaseDescriptor) preparedReleases.get( releaseId );
+ DistributedReleaseManager releaseManager = getContinuum().getDistributedReleaseManager();
- preparedReleaseName = descriptor.getReleaseVersions().get( releaseId ).toString();
+ preparedReleaseName = releaseManager.getPreparedReleaseName( releaseId );
- preparedReleaseId = releaseId;
+ if ( StringUtils.isNotBlank( preparedReleaseName ) )
+ {
+ preparedReleaseId = releaseId;
+ }
+ else
+ {
+ preparedReleaseName = null;
+ }
+ }
+ else
+ {
+ ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+
+ Map preparedReleases = releaseManager.getPreparedReleases();
+ if ( preparedReleases.containsKey( releaseId ) )
+ {
+ ReleaseDescriptor descriptor = (ReleaseDescriptor) preparedReleases.get( releaseId );
+
+ preparedReleaseName = descriptor.getReleaseVersions().get( releaseId ).toString();
+
+ preparedReleaseId = releaseId;
+ }
}
projectName = project.getName();
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseProjectGoalAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseProjectGoalAction.java?rev=751433&r1=751432&r2=751433&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseProjectGoalAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseProjectGoalAction.java Sun Mar 8 14:41:33 2009
@@ -19,6 +19,7 @@
* under the License.
*/
+import org.apache.continuum.release.distributed.manager.DistributedReleaseManager;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.Project;
@@ -65,16 +66,34 @@
String releaseId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
- ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
-
- Map preparedReleases = releaseManager.getPreparedReleases();
- if ( preparedReleases.containsKey( releaseId ) )
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
{
- ReleaseDescriptor descriptor = (ReleaseDescriptor) preparedReleases.get( releaseId );
+ DistributedReleaseManager releaseManager = getContinuum().getDistributedReleaseManager();
- preparedReleaseName = descriptor.getReleaseVersions().get( releaseId ).toString();
+ preparedReleaseName = releaseManager.getPreparedReleaseName( releaseId );
- preparedReleaseId = releaseId;
+ if ( StringUtils.isNotBlank( preparedReleaseName ) )
+ {
+ preparedReleaseId = releaseId;
+ }
+ else
+ {
+ preparedReleaseName = null;
+ }
+ }
+ else
+ {
+ ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+
+ Map preparedReleases = releaseManager.getPreparedReleases();
+ if ( preparedReleases.containsKey( releaseId ) )
+ {
+ ReleaseDescriptor descriptor = (ReleaseDescriptor) preparedReleases.get( releaseId );
+
+ preparedReleaseName = descriptor.getReleaseVersions().get( releaseId ).toString();
+
+ preparedReleaseId = releaseId;
+ }
}
projectName = project.getName();
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseRollbackAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseRollbackAction.java?rev=751433&r1=751432&r2=751433&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseRollbackAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseRollbackAction.java Sun Mar 8 14:41:33 2009
@@ -19,6 +19,7 @@
* under the License.
*/
+import org.apache.continuum.release.distributed.manager.DistributedReleaseManager;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.utils.WorkingDirectoryService;
import org.apache.maven.continuum.model.project.Project;
@@ -61,29 +62,38 @@
return REQUIRES_AUTHORIZATION;
}
- ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
-
- ContinuumReleaseManagerListener listener = new DefaultReleaseManagerListener();
-
- Project project = getContinuum().getProject( projectId );
-
- releaseManager.rollback( releaseId, workingDirectoryService.getWorkingDirectory( project ).getPath(), listener );
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+ {
+ DistributedReleaseManager releaseManager = getContinuum().getDistributedReleaseManager();
- //recurse until rollback is finished
- while ( listener.getState() != ContinuumReleaseManagerListener.FINISHED )
+ releaseManager.releaseRollback( releaseId, projectId );
+ }
+ else
{
- try
- {
- Thread.sleep( 1000 );
- }
- catch ( InterruptedException e )
+ ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
+
+ ContinuumReleaseManagerListener listener = new DefaultReleaseManagerListener();
+
+ Project project = getContinuum().getProject( projectId );
+
+ releaseManager.rollback( releaseId, workingDirectoryService.getWorkingDirectory( project ).getPath(), listener );
+
+ //recurse until rollback is finished
+ while ( listener.getState() != ContinuumReleaseManagerListener.FINISHED )
{
- //do nothing
+ try
+ {
+ Thread.sleep( 1000 );
+ }
+ catch ( InterruptedException e )
+ {
+ //do nothing
+ }
}
+
+ releaseManager.getPreparedReleases().remove( releaseId );
}
- releaseManager.getPreparedReleases().remove( releaseId );
-
return SUCCESS;
}
Modified: continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo?rev=751433&r1=751432&r2=751433&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo (original)
+++ continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo Sun Mar 8 14:41:33 2009
@@ -535,5 +535,41 @@
</field>
</fields>
</class>
+ <class>
+ <name>ReleaseListenerSummary</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>phases</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <description>Release Phases</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>completedPhases</name>
+ <version>1.0.0</version>
+ <description>Completed release phases</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>inProgress</name>
+ <version>1.0.0</version>
+ <description>Release phase in progress</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>error</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
</classes>
</model>
Modified: continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties?rev=751433&r1=751432&r2=751433&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties Sun Mar 8 14:41:33 2009
@@ -659,6 +659,7 @@
releasePrepare.section.title=Prepare Project for Release
releasePrepare.releaseVersion=Release Version*
releasePrepare.nextDevelopmentVersion=Next Development Version*
+releasePrepare.parameters=Release Prepare Parameters
releasePerform.section.title=Perform Project Release
releasePerform.parameters=Release Perform Parameters
releaseInProgress.section.title=Executing Release Goal
Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releaseFinished.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releaseFinished.jsp?rev=751433&r1=751432&r2=751433&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releaseFinished.jsp (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releaseFinished.jsp Sun Mar 8 14:41:33 2009
@@ -32,15 +32,15 @@
<th><s:text name="releaseInProgress.status"/></th>
<th width="100%"><s:text name="releaseInProgress.phase"/></th>
</tr>
- <s:iterator value="listener.phases">
+ <s:iterator value="listenerSummary.phases">
<tr>
<td>
- <s:if test="listener.completedPhases.contains( top )">
+ <s:if test="listenerSummary.completedPhases.contains( top )">
<img src="<s:url value='/images/icon_success_sml.gif' includeParams="none"/>"
alt="Done" title="Done" border="0">
</s:if>
- <s:elseif test="listener.inProgress.equals( top )">
- <s:if test="listener.error == null">
+ <s:elseif test="listenerSummary.inProgress.equals( top )">
+ <s:if test="listenerSummary.error == null">
<img src="<s:url value='/images/building.gif' includeParams="none"/>"
alt="In Progress" title="In Progress" border="0">
</s:if>
Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releaseInProgress.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releaseInProgress.jsp?rev=751433&r1=751432&r2=751433&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releaseInProgress.jsp (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releaseInProgress.jsp Sun Mar 8 14:41:33 2009
@@ -33,15 +33,15 @@
<th><s:text name="releaseInProgress.status"/></th>
<th width="100%"><s:text name="releaseInProgress.phase"/></th>
</tr>
- <s:iterator value="listener.phases">
+ <s:iterator value="listenerSummary.phases">
<tr>
<td>
- <s:if test="listener.completedPhases.contains( top )">
+ <s:if test="listenerSummary.completedPhases.contains( top )">
<img src="<s:url value='/images/icon_success_sml.gif' includeParams="none"/>"
alt="Done" title="Done" border="0">
</s:if>
- <s:elseif test="listener.inProgress.equals( top )">
- <s:if test="listener.error == null">
+ <s:elseif test="listenerSummary.inProgress.equals( top )">
+ <s:if test="listenerSummary.error == null">
<img src="<s:url value='/images/building.gif' includeParams="none"/>"
alt="In Progress" title="In Progress" border="0">
</s:if>