You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by oc...@apache.org on 2010/05/06 11:23:34 UTC
svn commit: r941625 [21/24] - in
/continuum/branches/continuum-flat-multi-module: ./ continuum-api/
continuum-api/src/main/java/org/apache/continuum/builder/distributed/
continuum-api/src/main/java/org/apache/continuum/builder/distributed/manager/
cont...
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/PurgeConfigurationAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/PurgeConfigurationAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/PurgeConfigurationAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/PurgeConfigurationAction.java Thu May 6 09:23:13 2010
@@ -35,15 +35,19 @@ import org.apache.continuum.purge.Contin
import org.apache.continuum.purge.PurgeConfigurationService;
import org.apache.continuum.repository.RepositoryService;
import org.apache.continuum.taskqueue.manager.TaskQueueManager;
+import org.apache.maven.continuum.build.settings.SchedulesActivationException;
import org.apache.maven.continuum.configuration.ConfigurationService;
import org.apache.maven.continuum.model.project.Schedule;
import org.apache.maven.continuum.security.ContinuumRoleConstants;
import org.apache.maven.continuum.web.action.ContinuumConfirmAction;
+import org.apache.maven.continuum.web.action.ScheduleAction;
import org.apache.struts2.ServletActionContext;
import org.codehaus.plexus.redback.rbac.Resource;
import org.codehaus.redback.integration.interceptor.SecureAction;
import org.codehaus.redback.integration.interceptor.SecureActionBundle;
import org.codehaus.redback.integration.interceptor.SecureActionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author Maria Catherine Tan
@@ -55,6 +59,8 @@ public class PurgeConfigurationAction
extends ContinuumConfirmAction
implements Preparable, SecureAction
{
+ private static final Logger logger = LoggerFactory.getLogger( PurgeConfigurationAction.class );
+
private static final String PURGE_TYPE_REPOSITORY = "repository";
private static final String PURGE_TYPE_DIRECTORY = "directory";
@@ -117,6 +123,7 @@ public class PurgeConfigurationAction
*/
private RepositoryService repositoryService;
+ @Override
public void prepare()
throws Exception
{
@@ -153,6 +160,7 @@ public class PurgeConfigurationAction
directoryTypes.add( PURGE_DIRECTORY_BUILDOUTPUT );
}
+ @Override
public String input()
throws Exception
{
@@ -258,6 +266,11 @@ public class PurgeConfigurationAction
updateDefaultPurgeConfiguration();
}
+ if ( purgeConfig.isEnabled() && purgeConfig.getSchedule() != null )
+ {
+ getContinuum().activePurgeSchedule( purgeConfig.getSchedule() );
+ }
+
return SUCCESS;
}
@@ -379,11 +392,13 @@ public class PurgeConfigurationAction
this.enabled = enabled;
}
+ @Override
public boolean isConfirmed()
{
return this.confirmed;
}
+ @Override
public void setConfirmed( boolean confirmed )
{
this.confirmed = confirmed;
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/startup/ContinuumStartup.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/startup/ContinuumStartup.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/startup/ContinuumStartup.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/startup/ContinuumStartup.java Thu May 6 09:23:13 2010
@@ -82,12 +82,5 @@ public class ContinuumStartup
DistributedBuildManager distributedBuildManager = (DistributedBuildManager) wac.getBean( PlexusToSpringUtils
.buildSpringId( DistributedBuildManager.class ) );
-
- TaskQueueExecutor distributedBuildProjectOverall = (TaskQueueExecutor) wac.getBean( PlexusToSpringUtils
- .buildSpringId( TaskQueueExecutor.class, "distributed-build-project-overall" ) );
-
- TaskQueueExecutor distributedBuildProjectDeferred = (TaskQueueExecutor) wac.getBean( PlexusToSpringUtils
- .buildSpringId( TaskQueueExecutor.class, "distributed-build-project-deferred" ) );
}
-
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/util/AuditLogConstants.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/util/AuditLogConstants.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/util/AuditLogConstants.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/util/AuditLogConstants.java Thu May 6 09:23:13 2010
@@ -36,6 +36,14 @@ public class AuditLogConstants
public static final String PROJECT_GROUP = "PROJECT_GROUP";
+ public static final String BUILD_RESULT = "BUILD_RESULT";
+
+ public static final String BUILD_QUEUE = "BUILD_QUEUE";
+
+ public static final String BUILD_AGENT = "BUILD_AGENT";
+
+ public static final String LOCAL_REPOSITORY = "LOCAL_REPOSITORY";
+
// events
public static final String FORCE_BUILD = "Forced Project Build";
@@ -51,6 +59,12 @@ public class AuditLogConstants
public static final String ADD_M2_PROJECT = "Added M2 Project";
+ public static final String ADD_M2_PROJECT_FAILED = "Failed Adding M2 Project";
+
+ public static final String ADD_M1_PROJECT = "Added M1 Project";
+
+ public static final String ADD_M1_PROJECT_FAILED = "Failed Adding M1 Project";
+
public static final String ADD_PROJECT = "Added Project";
public static final String MODIFY_PROJECT = "Modified Project";
@@ -80,5 +94,25 @@ public class AuditLogConstants
public static final String MODIFY_TEMPLATE = "Modified Build Definition Template";
public static final String REMOVE_TEMPLATE = "Removed Build Definition Template";
+
+ public static final String REMOVE_BUILD_RESULT = "Removed Build Result";
+
+ public static final String ADD_BUILD_QUEUE = "Added Build Queue";
+
+ public static final String REMOVE_BUILD_QUEUE = "Removed Build Queue";
+
+ public static final String PURGE_LOCAL_REPOSITORY = "Purged Local Repository";
+
+ public static final String ADD_BUILD_AGENT = "Added Build Agent";
+
+ public static final String ADD_BUILD_AGENT_GROUP = "Added Build Agent Group";
+
+ public static final String MODIFY_BUILD_AGENT = "Modified Build Agent";
+
+ public static final String MODIFY_BUILD_AGENT_GROUP = "Modified Build Agent Group";
+
+ public static final String REMOVE_BUILD_AGENT = "Removed Build Agent";
+
+ public static final String REMOVE_BUILD_AGENT_GROUP = "Removed Build Agent Group";
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/util/GenerateRecipentNotifier.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/util/GenerateRecipentNotifier.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/util/GenerateRecipentNotifier.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/continuum/web/util/GenerateRecipentNotifier.java Thu May 6 09:23:13 2010
@@ -62,6 +62,15 @@ public final class GenerateRecipentNotif
}
}
}
+ if (StringUtils.isNotEmpty(configuration.get(AbstractContinuumNotifier.DEVELOPER_FIELD))) {
+ if (Boolean.parseBoolean(configuration.get(AbstractContinuumNotifier.DEVELOPER_FIELD))) {
+ if ("unknown".equals(recipent)) {
+ recipent = "project developers";
+ } else {
+ recipent += ", " + "project developers";
+ }
+ }
+ }
}
if ( "irc".equals( notifier.getType() ) )
{
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AboutAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AboutAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AboutAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AboutAction.java Thu May 6 09:23:13 2010
@@ -23,7 +23,7 @@ package org.apache.maven.continuum.web.a
* AboutAction:
*
* @author: Jesse McConnell <jm...@apache.org>
- * @version: $ID:$
+ * @version: $Id$
* @plexus.component role="com.opensymphony.xwork2.Action"
* role-hint="about"
*/
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java Thu May 6 09:23:13 2010
@@ -22,6 +22,7 @@ import java.util.Map;
import java.util.Set;
import org.apache.continuum.buildmanager.BuildManagerException;
+import org.apache.continuum.buildmanager.BuildsManager;
import org.apache.continuum.taskqueue.BuildProjectTask;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.project.ContinuumProjectState;
@@ -41,7 +42,9 @@ public abstract class AbstractBuildActio
protected boolean canRemoveBuildResult( BuildResult buildResult )
throws BuildManagerException
{
- Map<String, BuildProjectTask> currentBuilds = getContinuum().getBuildsManager().getCurrentBuilds();
+ BuildsManager buildsManager = getContinuum().getBuildsManager();
+
+ Map<String, BuildProjectTask> currentBuilds = buildsManager.getCurrentBuilds();
Set<String> keySet = currentBuilds.keySet();
for ( String key : keySet )
{
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenOneProjectAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenOneProjectAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenOneProjectAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenOneProjectAction.java Thu May 6 09:23:13 2010
@@ -21,6 +21,8 @@ package org.apache.maven.continuum.web.a
import java.io.File;
+import org.apache.continuum.web.util.AuditLog;
+import org.apache.continuum.web.util.AuditLogConstants;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
@@ -40,8 +42,21 @@ public class AddMavenOneProjectAction
boolean scmUseCache )
throws ContinuumException
{
- return getContinuum().addMavenOneProject( pomUrl, selectedProjectGroup, checkProtocol, scmUseCache,
+ ContinuumProjectBuildingResult result = getContinuum().addMavenOneProject( pomUrl, selectedProjectGroup, checkProtocol, scmUseCache,
this.getBuildDefinitionTemplateId() );
+
+ AuditLog event = new AuditLog( hidePasswordInUrl( pomUrl ), AuditLogConstants.ADD_M1_PROJECT );
+ event.setCategory( AuditLogConstants.PROJECT );
+ event.setCurrentUser( getPrincipal() );
+
+ if ( result == null || result.hasErrors() )
+ {
+ event.setAction( AuditLogConstants.ADD_M1_PROJECT_FAILED );
+ }
+
+ event.log();
+
+ return result;
}
/**
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenProjectAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenProjectAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenProjectAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenProjectAction.java Thu May 6 09:23:13 2010
@@ -291,6 +291,22 @@ public abstract class AddMavenProjectAct
return INPUT;
}
+ protected String hidePasswordInUrl( String url )
+ {
+ int indexAt = url.indexOf( "@" );
+
+ if ( indexAt < 0 )
+ {
+ return url;
+ }
+
+ String s = url.substring( 0, indexAt );
+
+ int pos = s.lastIndexOf( ":" );
+
+ return s.substring( 0, pos + 1 ) + "*****" + url.substring( indexAt );
+ }
+
private void initializeProjectGroupName()
{
if ( disableGroupSelection && selectedProjectGroup != DEFINED_BY_POM_GROUP_ID )
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenTwoProjectAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenTwoProjectAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenTwoProjectAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenTwoProjectAction.java Thu May 6 09:23:13 2010
@@ -53,8 +53,6 @@ public class AddMavenTwoProjectAction
public static final String FILE_SCHEME = "file:/";
private boolean nonRecursiveProject;
-
- private boolean checkoutInSingleDirectory;
protected ContinuumProjectBuildingResult doExecute( String pomUrl, int selectedProjectGroup, boolean checkProtocol,
boolean scmUseCache )
@@ -106,26 +104,23 @@ public class AddMavenTwoProjectAction
}
}
- // force set checkoutInCingleDirectory to false if adding the project as non-recursive
- if( this.isNonRecursiveProject() )
- {
- this.setCheckoutInSingleDirectory( false );
- }
-
if ( result == null )
{
result = getContinuum().addMavenTwoProject( pomUrl, selectedProjectGroup, checkProtocol, scmUseCache,
!this.isNonRecursiveProject(),
- this.getBuildDefinitionTemplateId(), this.isCheckoutInSingleDirectory() );
+ this.getBuildDefinitionTemplateId() );
}
-
- String projectUrl = hidePasswordInUrl( pomUrl );
-
- AuditLog event = new AuditLog( projectUrl, AuditLogConstants.ADD_M2_PROJECT );
+
+ AuditLog event = new AuditLog( hidePasswordInUrl( pomUrl ), AuditLogConstants.ADD_M2_PROJECT );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
- event.log();
+ if ( result == null || result.hasErrors() )
+ {
+ event.setAction( AuditLogConstants.ADD_M2_PROJECT_FAILED );
+ }
+
+ event.log();
return result;
}
@@ -170,42 +165,4 @@ public class AddMavenTwoProjectAction
{
this.nonRecursiveProject = nonRecursiveProject;
}
-
- public boolean isCheckoutInSingleDirectory()
- {
- return checkoutInSingleDirectory;
- }
-
- public void setCheckoutInSingleDirectory( boolean checkoutInSingleDirectory )
- {
- this.checkoutInSingleDirectory = checkoutInSingleDirectory;
- }
-
- private String hidePasswordInUrl( String pomUrl )
- {
- String projectUrl = pomUrl;
-
- int idx = projectUrl.indexOf( "@" );
-
- if ( idx > 0 )
- {
- int pwdIndex = projectUrl.lastIndexOf( ":" );
-
- if ( ( pwdIndex > 0 ) && ( pwdIndex > projectUrl.indexOf( "://" ) ) )
- {
- String password = projectUrl.substring( pwdIndex, idx + 1 );
-
- String newPwd = "@";
-
- if ( ( password.length() ) > 2 )
- {
- newPwd = ":*****@";
- }
-
- projectUrl = projectUrl.replace( password, newPwd );
- }
- }
-
- return projectUrl;
- }
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java Thu May 6 09:23:13 2010
@@ -87,24 +87,26 @@ public class AddProjectAction
private List<BuildDefinitionTemplate> buildDefinitionTemplates;
+ private boolean emptyProjectGroups;
+
public void validate()
{
clearErrorsAndMessages();
try
{
- if ( !( projectName.trim().length() > 0 ) )
+ if ( ( projectName != null ) && !( projectName.trim().length() > 0 ) )
{
addActionError( getText( "addProject.name.required" ) );
}
- if ( !( projectVersion.trim().length() > 0 ) )
+ if ( ( projectVersion != null ) && !( projectVersion.trim().length() > 0 ) )
{
addActionError( getText( "addProject.version.required" ) );
}
- if ( !( projectScmUrl.trim().length() > 0 ) )
+ if ( ( projectScmUrl != null ) && !( projectScmUrl.trim().length() > 0 ) )
{
addActionError( getText( "addProject.scmUrl.required" ) );
}
- if ( selectedProjectGroup == 0 )
+ if ( isEmptyProjectGroups() )
{
addActionError( getText( "addProject.projectGroup.required" ) );
}
@@ -148,6 +150,7 @@ public class AddProjectAction
String projectNameTrim = projectName.trim();
String versionTrim = projectVersion.trim();
String scmTrim = projectScmUrl.trim();
+ //TODO: Instead of get all projects then test them, it would be better to check it directly in the DB
for ( Project project : getContinuum().getProjects() )
{
// CONTINUUM-1445
@@ -190,8 +193,8 @@ public class AddProjectAction
this.setProjectGroupId( this.getSelectedProjectGroup() );
return "projectGroupSummary";
}
-
- AuditLog event = new AuditLog( projectNameTrim, AuditLogConstants.ADD_PROJECT );
+
+ AuditLog event = new AuditLog( "Project id=" + project.getId(), AuditLogConstants.ADD_PROJECT );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
event.log();
@@ -433,4 +436,14 @@ public class AddProjectAction
{
this.projectDescription = projectDescription;
}
+
+ public boolean isEmptyProjectGroups()
+ {
+ return emptyProjectGroups;
+ }
+
+ public void setEmptyProjectGroups( boolean emptyProjectGroups )
+ {
+ this.emptyProjectGroups = emptyProjectGroups;
+ }
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectGroupAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectGroupAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectGroupAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddProjectGroupAction.java Thu May 6 09:23:13 2010
@@ -154,7 +154,7 @@ public class AddProjectGroupAction
return ERROR;
}
- AuditLog event = new AuditLog( name, AuditLogConstants.ADD_PROJECT_GROUP );
+ AuditLog event = new AuditLog( "Project Group id=" + projectGroup.getId(), AuditLogConstants.ADD_PROJECT_GROUP );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
event.log();
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildDefinitionAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildDefinitionAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildDefinitionAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildDefinitionAction.java Thu May 6 09:23:13 2010
@@ -28,6 +28,7 @@ import java.util.Map;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.builddefinition.BuildDefinitionService;
import org.apache.maven.continuum.builddefinition.BuildDefinitionServiceException;
+import org.apache.maven.continuum.builddefinition.BuildDefinitionUpdatePolicyConstants;
import org.apache.maven.continuum.execution.ContinuumBuildExecutorConstants;
import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.Project;
@@ -92,6 +93,10 @@ public class BuildDefinitionAction
private String buildDefinitionType;
private boolean alwaysBuild;
+
+ private int updatePolicy = BuildDefinitionUpdatePolicyConstants.UPDATE_DESCRIPTION_ALWAYS;
+
+ private Map<Integer, String> buildDefinitionUpdatePolicies;
/**
* @plexus.requirement
@@ -127,6 +132,15 @@ public class BuildDefinitionAction
buildDefinitionTypes.add( ContinuumBuildExecutorConstants.MAVEN_ONE_BUILD_EXECUTOR );
buildDefinitionTypes.add( ContinuumBuildExecutorConstants.MAVEN_TWO_BUILD_EXECUTOR );
buildDefinitionTypes.add( ContinuumBuildExecutorConstants.SHELL_BUILD_EXECUTOR );
+
+ buildDefinitionUpdatePolicies = new HashMap<Integer, String>();
+ String text = getText( "buildDefinition.updatePolicy.always" );
+ buildDefinitionUpdatePolicies.put( BuildDefinitionUpdatePolicyConstants.UPDATE_DESCRIPTION_ALWAYS, text );
+ text = getText( "buildDefinition.updatePolicy.never" );
+ buildDefinitionUpdatePolicies.put( BuildDefinitionUpdatePolicyConstants.UPDATE_DESCRIPTION_NEVER, text );
+ text = getText( "buildDefinition.updatePolicy.newPom" );
+ buildDefinitionUpdatePolicies.put( BuildDefinitionUpdatePolicyConstants.UPDATE_DESCRIPTION_ONLY_FOR_NEW_POM,
+ text );
}
/**
@@ -184,6 +198,7 @@ public class BuildDefinitionAction
description = buildDefinition.getDescription();
buildDefinitionType = buildDefinition.getType();
alwaysBuild = buildDefinition.isAlwaysBuild();
+ updatePolicy = buildDefinition.getUpdatePolicy();
}
else
{
@@ -315,7 +330,7 @@ public class BuildDefinitionAction
return REQUIRES_AUTHORIZATION;
}
- String resource = getProjectGroupName() + ":" + goals + " " + arguments;
+ String resource = "Project id=" + projectId + ":" + goals + " " + arguments;
AuditLog event = new AuditLog( resource, AuditLogConstants.ADD_GOAL );
event.setCategory( AuditLogConstants.BUILD_DEFINITION );
event.setCurrentUser( getPrincipal() );
@@ -367,7 +382,7 @@ public class BuildDefinitionAction
if ( projectId != 0 )
{
- String resource = getProjectGroupName() + ":" + goals + " " + arguments;
+ String resource = "Project id=" + projectId + ":" + goals + " " + arguments;
AuditLog event = new AuditLog( resource, AuditLogConstants.ADD_GOAL );
event.setCategory( AuditLogConstants.BUILD_DEFINITION );
event.setCurrentUser( getPrincipal() );
@@ -376,6 +391,11 @@ public class BuildDefinitionAction
}
else
{
+ String resource = "Project Group id=" + projectGroupId + ":" + goals + " " + arguments;
+ AuditLog event = new AuditLog( resource, AuditLogConstants.ADD_GOAL );
+ event.setCategory( AuditLogConstants.BUILD_DEFINITION );
+ event.setCurrentUser( getPrincipal() );
+ event.log();
return "success_group";
}
}
@@ -391,7 +411,7 @@ public class BuildDefinitionAction
{
getContinuum().removeBuildDefinitionFromProject( projectId, buildDefinitionId );
- String resource = getProjectGroupName() + ":" + goals + " " + arguments;
+ String resource = "Project id=" + projectId + ":" + goals + " " + arguments;
AuditLog event = new AuditLog( resource, AuditLogConstants.REMOVE_GOAL );
event.setCategory( AuditLogConstants.BUILD_DEFINITION );
event.setCurrentUser( getPrincipal() );
@@ -425,7 +445,7 @@ public class BuildDefinitionAction
{
getContinuum().removeBuildDefinitionFromProjectGroup( projectGroupId, buildDefinitionId );
- String resource = getProjectGroupName() + ":" + goals + " " + arguments;
+ String resource = "Project Group id=" + projectGroupId + ":" + goals + " " + arguments;
AuditLog event = new AuditLog( resource, AuditLogConstants.REMOVE_GOAL );
event.setCategory( AuditLogConstants.BUILD_DEFINITION );
event.setCurrentUser( getPrincipal() );
@@ -487,6 +507,7 @@ public class BuildDefinitionAction
buildDefinition.setDescription( description );
buildDefinition.setType( buildDefinitionType );
buildDefinition.setAlwaysBuild( alwaysBuild );
+ buildDefinition.setUpdatePolicy( updatePolicy );
return buildDefinition;
}
@@ -705,4 +726,18 @@ public class BuildDefinitionAction
this.groupBuildView = groupBuildView;
}
+ public int getUpdatePolicy()
+ {
+ return updatePolicy;
+ }
+
+ public void setUpdatePolicy( int updatePolicy )
+ {
+ this.updatePolicy = updatePolicy;
+ }
+
+ public Map<Integer, String> getBuildDefinitionUpdatePolicies()
+ {
+ return buildDefinitionUpdatePolicies;
+ }
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildProjectAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildProjectAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildProjectAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildProjectAction.java Thu May 6 09:23:13 2010
@@ -20,7 +20,12 @@ package org.apache.maven.continuum.web.a
*/
import org.apache.maven.continuum.ContinuumException;
+import org.apache.maven.continuum.model.project.ProjectGroup;
+import org.apache.maven.continuum.project.ContinuumProjectState;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
+import org.apache.continuum.buildagent.NoBuildAgentException;
+import org.apache.continuum.buildagent.NoBuildAgentInGroupException;
+import org.apache.continuum.utils.build.BuildTrigger;
import org.apache.continuum.web.util.AuditLog;
import org.apache.continuum.web.util.AuditLogConstants;
import org.codehaus.plexus.util.StringUtils;
@@ -56,30 +61,45 @@ public class BuildProjectAction
{
return REQUIRES_AUTHORIZATION;
}
+
+ BuildTrigger buildTrigger = new BuildTrigger( ContinuumProjectState.TRIGGER_FORCED, getPrincipal() );
- if ( projectId > 0 )
+ try
{
- if ( buildDefinitionId > 0 )
+ if ( projectId > 0 )
{
- getContinuum().buildProjectWithBuildDefinition( projectId, buildDefinitionId );
+ if ( buildDefinitionId > 0 )
+ {
+ getContinuum().buildProjectWithBuildDefinition( projectId, buildDefinitionId, buildTrigger );
+ }
+ else
+ {
+ getContinuum().buildProject( projectId, buildTrigger.getUsername() );
+ }
}
else
{
- getContinuum().buildProject( projectId );
+ if ( buildDefinitionId > 0 )
+ {
+ getContinuum().buildProjectGroupWithBuildDefinition( projectGroupId, buildDefinitionId, buildTrigger );
+ }
+ else
+ {
+ //TODO: Check if this code is called, I don't think
+ //If it is, it should used the projectId
+ getContinuum().buildProjects( buildTrigger.getUsername() );
+ }
}
}
- else
+ catch ( NoBuildAgentException e )
{
- if ( buildDefinitionId > 0 )
- {
- getContinuum().buildProjectGroupWithBuildDefinition( projectGroupId, buildDefinitionId );
- }
- else
- {
- getContinuum().buildProjects();
- }
+ addActionError( getText( "projectGroup.build.error.noBuildAgent" ) );
}
-
+ catch ( NoBuildAgentInGroupException e )
+ {
+ addActionError( getText( "projectGroup.build.error.noBuildAgentInGroup" ) );
+ }
+
AuditLog event = new AuditLog( AuditLogConstants.FORCE_BUILD );
event.setCurrentUser( getPrincipal() );
@@ -89,7 +109,7 @@ public class BuildProjectAction
event.setCategory( AuditLogConstants.PROJECT );
event.log();
- if ( fromGroupPage )
+ if ( fromGroupPage || hasActionErrors() )
{
return "to_group_page";
}
@@ -103,6 +123,10 @@ public class BuildProjectAction
event.setResource( "Project Group id=" + projectGroupId );
event.setCategory( AuditLogConstants.PROJECT_GROUP );
event.log();
+ if ( fromGroupPage )
+ {
+ return "to_group_page";
+ }
}
return SUCCESS;
@@ -169,7 +193,10 @@ public class BuildProjectAction
}
else
{
- projectGroupName = getContinuum().getProjectGroupByProjectId( projectId ).getName();
+ ProjectGroup projectGroup = getContinuum().getProjectGroupByProjectId( projectId );
+
+ projectGroupName = projectGroup.getName();
+ projectGroupId = projectGroup.getId();
}
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java Thu May 6 09:23:13 2010
@@ -30,8 +30,12 @@ import org.apache.commons.lang.StringEsc
import org.apache.continuum.builder.distributed.manager.DistributedBuildManager;
import org.apache.continuum.builder.utils.ContinuumBuildConstant;
import org.apache.continuum.buildmanager.BuildManagerException;
+import org.apache.continuum.web.util.AuditLog;
+import org.apache.continuum.web.util.AuditLogConstants;
+import org.apache.continuum.buildmanager.BuildManagerException;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.configuration.ConfigurationException;
+import org.apache.maven.continuum.configuration.ConfigurationService;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.model.scm.ChangeSet;
@@ -90,9 +94,14 @@ public class BuildResultAction
// check if there are surefire results to display
project = getContinuum().getProject( getProjectId() );
- if ( getContinuum().getConfiguration().isDistributedBuildEnabled() &&
- project.getState() == ContinuumProjectState.BUILDING )
+ ConfigurationService configuration = getContinuum().getConfiguration();
+
+ // view build result of the current build from the distributed build agent
+ if ( configuration.isDistributedBuildEnabled() &&
+ project.getState() == ContinuumProjectState.BUILDING && getBuildId() == 0 )
{
+ // if the project is currently building in distributed build agent, the build result will be stored in the database after the build is finished.
+ // it's safe to assume that the build result will be null at this point
Map<String, Object> map = distributedBuildManager.getBuildResult( project.getId() );
if ( map == null )
@@ -107,6 +116,12 @@ public class BuildResultAction
buildResult = ContinuumBuildConstant.getBuildResult( map, null );
buildOutput = ContinuumBuildConstant.getBuildOutput( map );
+
+ if ( ServletActionContext.getRequest() != null )
+ {
+ state =
+ StateGenerator.generate( buildResult.getState(), ServletActionContext.getRequest().getContextPath() );
+ }
}
changeSet = null;
@@ -120,15 +135,18 @@ public class BuildResultAction
// directory contains files ?
File surefireReportsDirectory =
- getContinuum().getConfiguration().getTestReportsDirectory( buildId, getProjectId() );
+ configuration.getTestReportsDirectory( buildId, getProjectId() );
File[] files = surefireReportsDirectory.listFiles();
hasSurefireResults = files != null && files.length > 0;
changeSet = getContinuum().getChangesSinceLastSuccess( getProjectId(), getBuildId() );
buildOutput = getBuildOutputText();
- state =
- StateGenerator.generate( buildResult.getState(), ServletActionContext.getRequest().getContextPath() );
+ if ( ServletActionContext.getRequest() != null )
+ {
+ state =
+ StateGenerator.generate( buildResult.getState(), ServletActionContext.getRequest().getContextPath() );
+ }
this.setCanDelete( this.canRemoveBuildResult( buildResult ) );
}
@@ -149,7 +167,32 @@ public class BuildResultAction
}
if ( this.isConfirmed() )
{
- getContinuum().removeBuildResult( buildId );
+ try
+ {
+ if ( canRemoveBuildResult( getContinuum().getBuildResult( buildId ) ) )
+ {
+ getContinuum().removeBuildResult( buildId );
+ }
+ else
+ {
+ addActionError( getText( "buildResult.cannot.delete" ) );
+ }
+ }
+ catch ( ContinuumException e )
+ {
+ addActionError( getText( "buildResult.delete.error", "Unable to delete build result",
+ new Integer( buildId ).toString() ) );
+ }
+ catch ( BuildManagerException e )
+ {
+ throw new ContinuumException( e.getMessage(), e );
+ }
+
+ AuditLog event = new AuditLog( "Build Result id=" + buildId, AuditLogConstants.REMOVE_BUILD_RESULT );
+ event.setCategory( AuditLogConstants.BUILD_RESULT );
+ event.setCurrentUser( getPrincipal() );
+ event.log();
+
return SUCCESS;
}
@@ -174,7 +217,8 @@ public class BuildResultAction
private String getBuildOutputText()
throws ConfigurationException, IOException
{
- File buildOutputFile = getContinuum().getConfiguration().getBuildOutputFile( getBuildId(), getProjectId() );
+ ConfigurationService configuration = getContinuum().getConfiguration();
+ File buildOutputFile = configuration.getBuildOutputFile( getBuildId(), getProjectId() );
if ( buildOutputFile.exists() )
{
@@ -244,4 +288,10 @@ public class BuildResultAction
{
return projectGroupId;
}
+
+ // for testing
+ public void setDistributedBuildManager( DistributedBuildManager distributedBuildManager )
+ {
+ this.distributedBuildManager = distributedBuildManager;
+ }
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultsListAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultsListAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultsListAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultsListAction.java Thu May 6 09:23:13 2010
@@ -24,6 +24,8 @@ import java.util.Collection;
import java.util.List;
import org.apache.continuum.buildmanager.BuildManagerException;
+import org.apache.continuum.web.util.AuditLog;
+import org.apache.continuum.web.util.AuditLogConstants;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
@@ -99,11 +101,17 @@ public class BuildResultsListAction
logger.info( "Removing BuildResult with id=" + buildId );
getContinuum().removeBuildResult( buildId );
+
+ AuditLog event = new AuditLog( "Build Result id=" + buildId, AuditLogConstants.REMOVE_BUILD_RESULT );
+ event.setCategory( AuditLogConstants.BUILD_RESULT );
+ event.setCurrentUser( getPrincipal() );
+ event.log();
}
catch ( ContinuumException e )
{
logger.error( "Error removing BuildResult with id=" + buildId );
- addActionError( getText( "Unable to remove BuildResult with id=" + buildId ) );
+ addActionError( getText( "buildResult.delete.error", "Unable to delete build result",
+ new Integer( buildId ).toString() ) );
}
}
}
@@ -127,6 +135,7 @@ public class BuildResultsListAction
else
{
this.addActionMessage( getResourceBundle().getString( "buildResult.cannot.delete" ) );
+ return SUCCESS;
}
}
catch ( BuildManagerException e )
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java Thu May 6 09:23:13 2010
@@ -68,7 +68,7 @@ public class CancelBuildAction
buildsManager.cancelBuild( projectId );
- AuditLog event = new AuditLog( getProjectGroupName(), AuditLogConstants.CANCEL_BUILD );
+ AuditLog event = new AuditLog( "Project id=" + projectId, AuditLogConstants.CANCEL_BUILD );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
event.log();
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/DeleteProjectAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/DeleteProjectAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/DeleteProjectAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/DeleteProjectAction.java Thu May 6 09:23:13 2010
@@ -24,6 +24,8 @@ import org.apache.continuum.web.util.Aud
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
@@ -33,6 +35,8 @@ import org.apache.maven.continuum.web.ex
public class DeleteProjectAction
extends ContinuumActionSupport
{
+ private Logger logger = LoggerFactory.getLogger( this.getClass() );
+
private int projectId;
private String projectName;
@@ -58,7 +62,16 @@ public class DeleteProjectAction
event.setCategory( AuditLogConstants.PROJECT );
event.log();
- getContinuum().removeProject( projectId );
+ try
+ {
+ getContinuum().removeProject( projectId );
+ }
+ catch ( ContinuumException e )
+ {
+ logger.error( "Error removing project with id " + projectId, e );
+ addActionError( getText( "deleteProject.error", "Unable to delete project",
+ new Integer( projectId ).toString() ) );
+ }
return SUCCESS;
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/GroupSummaryAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/GroupSummaryAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/GroupSummaryAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/GroupSummaryAction.java Thu May 6 09:23:13 2010
@@ -22,9 +22,10 @@ package org.apache.maven.continuum.web.a
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
+import org.apache.continuum.model.project.ProjectGroupSummary;
import org.apache.maven.continuum.ContinuumException;
-import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.model.project.ProjectGroup;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
import org.apache.maven.continuum.web.model.GroupSummary;
@@ -50,14 +51,19 @@ public class GroupSummaryAction
{
groups = new ArrayList<GroupSummary>();
- Collection<ProjectGroup> projectGroups = getContinuum().getAllProjectGroupsWithProjects();
+ //TODO: Merge this two requests to one
+ Collection<ProjectGroup> projectGroups = getContinuum().getAllProjectGroups();
+ Map<Integer, ProjectGroupSummary> summaries = getContinuum().getProjectsSummaryByGroups();
for ( ProjectGroup projectGroup : projectGroups )
{
if ( isAuthorized( projectGroup.getName() ) )
{
- logger.debug( "GroupSummaryAction: building group " + projectGroup.getName() );
+ if ( logger.isDebugEnabled() )
+ {
+ logger.debug( "GroupSummaryAction: building group " + projectGroup.getName() );
+ }
GroupSummary groupModel = new GroupSummary();
groupModel.setId( projectGroup.getId() );
@@ -65,40 +71,23 @@ public class GroupSummaryAction
groupModel.setName( projectGroup.getName() );
groupModel.setDescription( projectGroup.getDescription() );
- //TODO: Create a summary jpox request so code will be more simple and performance will be better
- Collection<Project> projects = projectGroup.getProjects();
-
- groupModel.setNumProjects( projects.size() );
-
- int numSuccesses = 0;
- int numFailures = 0;
- int numErrors = 0;
+ ProjectGroupSummary summary = summaries.get( projectGroup.getId() );
- for ( Project project : projects )
+ if ( summary != null )
{
-
- if ( project.getState() == 2 )
- {
- numSuccesses++;
- }
- else if ( project.getState() == 3 )
- {
- numFailures++;
- }
- else if ( project.getState() == 4 )
- {
- numErrors++;
- }
+ groupModel.setNumProjects( summary.getNumberOfProjects() );
+ groupModel.setNumErrors( summary.getNumberOfErrors() );
+ groupModel.setNumFailures( summary.getNumberOfFailures() );
+ groupModel.setNumSuccesses( summary.getNumberOfSuccesses() );
}
//todo wire in the next scheduled build for the project group and a meaningful status message
//groupModel.setNextScheduledBuild( "unknown" );
//groupModel.setStatusMessage( "none" );
-
- groupModel.setNumSuccesses( numSuccesses );
- groupModel.setNumFailures( numFailures );
- groupModel.setNumErrors( numErrors );
- logger.debug( "GroupSummaryAction: adding group to groups list " + groupModel.getName() );
+ if ( logger.isDebugEnabled() )
+ {
+ logger.debug( "GroupSummaryAction: adding group to groups list " + groupModel.getName() );
+ }
groups.add( groupModel );
}
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectEditAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectEditAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectEditAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectEditAction.java Thu May 6 09:23:13 2010
@@ -80,9 +80,8 @@ public class ProjectEditAction
project.setScmTag( scmTag );
getContinuum().updateProject( project );
-
- String resource = project.getGroupId() + ":" + project.getArtifactId();
- AuditLog event = new AuditLog( resource, AuditLogConstants.MODIFY_PROJECT );
+
+ AuditLog event = new AuditLog( "Project id=" + projectId, AuditLogConstants.MODIFY_PROJECT );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
event.log();
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java Thu May 6 09:23:13 2010
@@ -30,10 +30,14 @@ import java.util.List;
import java.util.Map;
import org.apache.commons.collections.ComparatorUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.continuum.buildagent.NoBuildAgentException;
+import org.apache.continuum.buildagent.NoBuildAgentInGroupException;
import org.apache.continuum.buildmanager.BuildManagerException;
import org.apache.continuum.buildmanager.BuildsManager;
import org.apache.continuum.model.project.ProjectScmRoot;
import org.apache.continuum.model.repository.LocalRepository;
+import org.apache.continuum.utils.build.BuildTrigger;
import org.apache.continuum.web.util.AuditLog;
import org.apache.continuum.web.util.AuditLogConstants;
import org.apache.maven.continuum.ContinuumException;
@@ -53,7 +57,6 @@ import org.codehaus.plexus.redback.rbac.
import org.codehaus.plexus.redback.role.RoleManager;
import org.codehaus.plexus.redback.role.RoleManagerException;
import org.codehaus.plexus.redback.users.User;
-import org.codehaus.plexus.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -156,6 +159,12 @@ public class ProjectGroupAction
addActionError( authzE.getMessage() );
return REQUIRES_AUTHORIZATION;
}
+ catch ( ContinuumException e )
+ {
+ addActionError( getText( "projectGroup.invalid.id", "Invalid Project Group Id: " + projectGroupId,
+ Integer.toString( projectGroupId ) ) );
+ return "to_summary_page";
+ }
projectGroup = getContinuum().getProjectGroupWithProjects( projectGroupId );
@@ -296,7 +305,16 @@ public class ProjectGroupAction
if ( confirmed )
{
- getContinuum().removeProjectGroup( projectGroupId );
+ try
+ {
+ getContinuum().removeProjectGroup( projectGroupId );
+ }
+ catch ( ContinuumException e )
+ {
+ logger.error( "Error while removing project group with id " + projectGroupId, e );
+ addActionError( getText( "projectGroup.delete.error", "Unable to remove project group",
+ Integer.toString( projectGroupId ) ) );
+ }
}
else
{
@@ -304,7 +322,7 @@ public class ProjectGroupAction
return CONFIRM;
}
- AuditLog event = new AuditLog( getProjectGroupName(), AuditLogConstants.REMOVE_PROJECT_GROUP );
+ AuditLog event = new AuditLog( "Project Group id=" + projectGroupId, AuditLogConstants.REMOVE_PROJECT_GROUP );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
event.log();
@@ -348,7 +366,7 @@ public class ProjectGroupAction
}
}
- for ( ProjectGroup pg : getContinuum().getAllProjectGroupsWithProjects() )
+ for ( ProjectGroup pg : getContinuum().getAllProjectGroups() )
{
if ( isAuthorized( projectGroup.getName() ) )
{
@@ -467,15 +485,12 @@ public class ProjectGroupAction
projectGroup.setDescription( description );
+ // [CONTINUUM-2228]. In select field can't select empty values.
if ( repositoryId > 0 )
{
LocalRepository repository = getContinuum().getRepositoryService().getLocalRepository( repositoryId );
projectGroup.setLocalRepository( repository );
}
- else
- {
- projectGroup.setLocalRepository( null );
- }
getContinuum().updateProjectGroup( projectGroup );
@@ -527,7 +542,7 @@ public class ProjectGroupAction
}
}
- AuditLog event = new AuditLog( getProjectGroupName(), AuditLogConstants.MODIFY_PROJECT_GROUP );
+ AuditLog event = new AuditLog( "Project Group id=" + projectGroupId, AuditLogConstants.MODIFY_PROJECT_GROUP );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
event.log();
@@ -547,17 +562,30 @@ public class ProjectGroupAction
addActionError( authzE.getMessage() );
return REQUIRES_AUTHORIZATION;
}
+
+ BuildTrigger buildTrigger = new BuildTrigger( ContinuumProjectState.TRIGGER_FORCED, getPrincipal() );
- if ( this.getBuildDefinitionId() == -1 )
+ try
{
- getContinuum().buildProjectGroup( projectGroupId );
+ if ( this.getBuildDefinitionId() == -1 )
+ {
+ getContinuum().buildProjectGroup( projectGroupId, buildTrigger );
+ }
+ else
+ {
+ getContinuum().buildProjectGroupWithBuildDefinition( projectGroupId, buildDefinitionId, buildTrigger );
+ }
}
- else
+ catch ( NoBuildAgentException e )
{
- getContinuum().buildProjectGroupWithBuildDefinition( projectGroupId, buildDefinitionId );
+ addActionError( getText( "projectGroup.build.error.noBuildAgent" ) );
+ }
+ catch ( NoBuildAgentInGroupException e )
+ {
+ addActionError( getText( "projectGroup.build.error.noBuildAgentInGroup" ) );
}
- AuditLog event = new AuditLog( getProjectGroupName(), AuditLogConstants.FORCE_BUILD );
+ AuditLog event = new AuditLog( "Project Group id=" + projectGroupId, AuditLogConstants.FORCE_BUILD );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
event.log();
@@ -602,6 +630,9 @@ public class ProjectGroupAction
{
if ( p.getState() != ContinuumProjectState.OK )
{
+ logger.info(
+ "Attempt to release group '" + projectGroup.getName() + "' failed as project '" + p.getName() +
+ "' is in state " + p.getState() );
allBuildsOk = false;
}
@@ -613,6 +644,9 @@ public class ProjectGroupAction
}
else
{
+ logger.info( "Attempt to release group '" + projectGroup.getName() + "' failed as project '" +
+ p.getName() + "' and project '" + parent.getName() + "' are both parents" );
+
// currently, we have no provisions for releasing 2 or more parents
// at the same time, this will be implemented in the future
addActionError( getText( "projectGroup.release.error.severalParentProjects" ) );
@@ -622,6 +656,9 @@ public class ProjectGroupAction
if ( !"maven2".equals( p.getExecutorId() ) )
{
+ logger.info(
+ "Attempt to release group '" + projectGroup.getName() + "' failed as project '" + p.getName() +
+ "' is not a Maven 2 project (executor '" + p.getExecutorId() + "')" );
allMavenTwo = false;
}
}
@@ -677,7 +714,9 @@ public class ProjectGroupAction
List<String> roleNames = new ArrayList<String>();
for ( Role r : roles )
{
- if ( r.getName().indexOf( projectGroup.getName() ) > -1 )
+ String projectGroupName = StringUtils.substringAfter( r.getName(), "-" ).trim();
+
+ if ( projectGroupName.equals( group.getName() ) )
{
roleNames.add( r.getName() );
}
@@ -976,7 +1015,6 @@ public class ProjectGroupAction
public String getProjectGroupName()
throws ContinuumException
{
-
return getProjectGroup( projectGroupId ).getName();
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java Thu May 6 09:23:13 2010
@@ -22,12 +22,16 @@ package org.apache.maven.continuum.web.a
import java.util.ArrayList;
import java.util.List;
+import org.apache.continuum.buildagent.NoBuildAgentException;
+import org.apache.continuum.buildagent.NoBuildAgentInGroupException;
import org.apache.continuum.web.util.AuditLog;
import org.apache.continuum.web.util.AuditLogConstants;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
+import org.apache.continuum.web.util.AuditLog;
+import org.apache.continuum.web.util.AuditLogConstants;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.dag.CycleDetectedException;
import org.slf4j.Logger;
@@ -99,7 +103,7 @@ public class ProjectsListAction
try
{
- AuditLog event = new AuditLog( "Project id=" + selectedProject, AuditLogConstants.REMOVE_PROJECT );
+ AuditLog event = new AuditLog( "Project id=" + projectId, AuditLogConstants.REMOVE_PROJECT );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
event.log();
@@ -109,7 +113,8 @@ public class ProjectsListAction
catch ( ContinuumException e )
{
logger.error( "Error removing Project with id=" + projectId );
- addActionError( getText( "Unable to remove Project with id=" + projectId ) );
+ addActionError( getText( "deleteProject.error", "Unable to delete project",
+ new Integer( projectId ).toString() ) );
}
}
}
@@ -152,19 +157,35 @@ public class ProjectsListAction
int projectId = Integer.parseInt( pId );
Project p = getContinuum().getProjectWithAllDetails( projectId );
projectsList.add( p );
+
+ AuditLog event = new AuditLog( "Project id=" + projectId, AuditLogConstants.FORCE_BUILD );
+ event.setCategory( AuditLogConstants.PROJECT );
+ event.setCurrentUser( getPrincipal() );
+ event.log();
}
List<Project> sortedProjects = getContinuum().getProjectsInBuildOrder( projectsList );
- if ( this.getBuildDefinitionId() <= 0 )
+ try
+ {
+ if ( this.getBuildDefinitionId() <= 0 )
+ {
+ List<BuildDefinition> groupDefaultBDs =
+ getContinuum().getDefaultBuildDefinitionsForProjectGroup( projectGroupId );
+ getContinuum().buildProjectsWithBuildDefinition( sortedProjects, groupDefaultBDs );
+ }
+ else
+ {
+ getContinuum().buildProjectsWithBuildDefinition( sortedProjects, buildDefinitionId );
+ }
+ }
+ catch ( NoBuildAgentException e )
{
- List<BuildDefinition> groupDefaultBDs =
- getContinuum().getDefaultBuildDefinitionsForProjectGroup( projectGroupId );
- getContinuum().buildProjectsWithBuildDefinition( sortedProjects, groupDefaultBDs );
+ addActionError( getText( "projectGroup.build.error.noBuildAgent" ) );
}
- else
+ catch ( NoBuildAgentInGroupException e )
{
- getContinuum().buildProjectsWithBuildDefinition( sortedProjects, buildDefinitionId );
+ addActionError( getText( "projectGroup.build.error.noBuildAgentInGroup" ) );
}
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseInProgressAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseInProgressAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseInProgressAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseInProgressAction.java Thu May 6 09:23:13 2010
@@ -62,6 +62,8 @@ public class ReleaseInProgressAction
private String projectGroupName = "";
private ReleaseListenerSummary listenerSummary;
+
+ private String username = "";
public String execute()
throws Exception
@@ -94,13 +96,15 @@ public class ReleaseInProgressAction
List<String> args = new ArrayList<String>();
args.add( e.getMessage() );
- addActionError( getText( "releaseInProgress.error", args ) );
+ addActionError( getText( "distributedBuild.releaseInProgress.error", args ) );
return ERROR;
}
if ( map != null && !map.isEmpty() )
{
int state = DistributedReleaseUtil.getReleaseState( map );
+
+ username = DistributedReleaseUtil.getUsername( map );
if ( state == ContinuumReleaseManagerListener.LISTENING )
{
@@ -144,6 +148,8 @@ public class ReleaseInProgressAction
if ( listener != null )
{
+ username = listener.getUsername();
+
if ( listener.getState() == ContinuumReleaseManagerListener.LISTENING )
{
status = "inProgress";
@@ -212,6 +218,8 @@ public class ReleaseInProgressAction
listenerSummary.setCompletedPhases( DistributedReleaseUtil.getCompletedReleasePhases( map ) );
listenerSummary.setInProgress( DistributedReleaseUtil.getReleaseInProgress( map ) );
listenerSummary.setError( DistributedReleaseUtil.getReleaseError( map ) );
+
+ username = DistributedReleaseUtil.getUsername( map );
if ( state == ContinuumReleaseManagerListener.FINISHED )
{
@@ -250,6 +258,8 @@ public class ReleaseInProgressAction
listenerSummary.setCompletedPhases( listener.getCompletedPhases() );
listenerSummary.setInProgress( listener.getInProgress() );
listenerSummary.setError( listener.getError() );
+
+ username = listener.getUsername();
if ( listener.getState() == ContinuumReleaseManagerListener.FINISHED )
{
@@ -353,6 +363,7 @@ public class ReleaseInProgressAction
releaseResult.setProjectGroup( projectGroup );
releaseResult.setProject( project );
releaseResult.setReleaseGoal( releaseGoal );
+ releaseResult.setUsername( username );
String releaseName = "releases-" + result.getStartTime();
@@ -375,5 +386,16 @@ public class ReleaseInProgressAction
return releaseResult;
}
+
+ public String getProjectName()
+ throws ContinuumException
+ {
+ return getProjectGroupName();
+ }
+
+ public String getUsername()
+ {
+ return this.username;
+ }
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java Thu May 6 09:23:13 2010
@@ -234,6 +234,8 @@ public class ReleasePerformAction
Project project = getContinuum().getProject( projectId );
LocalRepository repository = project.getProjectGroup().getLocalRepository();
+
+ String username = getPrincipal();
if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
{
@@ -241,7 +243,7 @@ public class ReleasePerformAction
try
{
- releaseManager.releasePerform( projectId, releaseId, goals, arguments, useReleaseProfile, repository );
+ releaseManager.releasePerform( projectId, releaseId, goals, arguments, useReleaseProfile, repository, username );
}
catch ( BuildAgentConfigurationException e )
{
@@ -255,6 +257,8 @@ public class ReleasePerformAction
else
{
listener = new DefaultReleaseManagerListener();
+
+ listener.setUsername( username );
ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
@@ -266,11 +270,10 @@ public class ReleasePerformAction
releaseManager.perform( releaseId, performDirectory, goals, arguments, useReleaseProfile, listener,
repository );
}
-
- String resource = project.getGroupId() + ":" + project.getArtifactId() + ":" + project.getVersion();
- AuditLog event = new AuditLog( resource, AuditLogConstants.PERFORM_RELEASE );
+
+ AuditLog event = new AuditLog( "ReleaseId=" + releaseId, AuditLogConstants.PERFORM_RELEASE );
event.setCategory( AuditLogConstants.PROJECT );
- event.setCurrentUser( getPrincipal() );
+ event.setCurrentUser( username );
event.log();
return SUCCESS;
@@ -291,13 +294,13 @@ public class ReleasePerformAction
if ( profileId != -1 )
{
Profile profile = getContinuum().getProfileService().getProfile( profileId );
- environments = getEnvironments( profile );
+ environments = getEnvironments( profile, releaseManager.getDefaultBuildagent( projectId ) );
}
try
{
- releaseManager.releasePerformFromScm( projectId, goals, arguments, useReleaseProfile, repository, scmUrl,
- scmUsername, scmPassword, scmTag, scmTagBase, environments );
+ releaseId = releaseManager.releasePerformFromScm( projectId, goals, arguments, useReleaseProfile, repository, scmUrl,
+ scmUsername, scmPassword, scmTag, scmTagBase, environments, getPrincipal() );
}
catch ( BuildAgentConfigurationException e )
{
@@ -324,7 +327,7 @@ public class ReleasePerformAction
if ( profileId != -1 )
{
Profile profile = getContinuum().getProfileService().getProfile( profileId );
- descriptor.setEnvironments( getEnvironments( profile ) );
+ descriptor.setEnvironments( getEnvironments( profile, null ) );
}
do
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePrepareAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePrepareAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePrepareAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePrepareAction.java Thu May 6 09:23:13 2010
@@ -304,21 +304,25 @@ public class ReleasePrepareAction
{
profile = getContinuum().getProfileService().getProfile( profileId );
}
+
+ String username = getPrincipal();
- Map<String, String> environments = getEnvironments( profile );
+ Map<String, String> environments = new HashMap<String, String>();
if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
{
DistributedReleaseManager distributedReleaseManager = getContinuum().getDistributedReleaseManager();
+
+ environments = getEnvironments( profile, distributedReleaseManager.getDefaultBuildagent( projectId ) );
try
{
releaseId = distributedReleaseManager.releasePrepare( project, getReleaseProperties(), getRelVersionMap(), getDevVersionMap(),
- environments );
+ environments, username );
if ( releaseId == null )
{
- addActionError( "" );
+ addActionError( "Failed to release project" );
return ERROR;
}
}
@@ -333,7 +337,11 @@ public class ReleasePrepareAction
}
else
{
+ environments = getEnvironments( profile, null );
+
listener = new DefaultReleaseManagerListener();
+
+ listener.setUsername( username );
String workingDirectory = getContinuum().getWorkingDirectory( projectId ).getPath();
@@ -356,10 +364,9 @@ public class ReleasePrepareAction
workingDirectory, environments, executable );
}
- String resource = project.getGroupId() + ":" + project.getArtifactId() + ":" + project.getVersion();
- AuditLog event = new AuditLog( resource, AuditLogConstants.PREPARE_RELEASE );
+ AuditLog event = new AuditLog( "Release id=" + releaseId, AuditLogConstants.PREPARE_RELEASE );
event.setCategory( AuditLogConstants.PROJECT );
- event.setCurrentUser( getPrincipal() );
+ event.setCurrentUser( username );
event.log();
return SUCCESS;
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseRollbackAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseRollbackAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseRollbackAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseRollbackAction.java Thu May 6 09:23:13 2010
@@ -90,9 +90,11 @@ public class ReleaseRollbackAction
ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager();
ContinuumReleaseManagerListener listener = new DefaultReleaseManagerListener();
+
+ listener.setUsername( getPrincipal() );
Project project = getContinuum().getProject( projectId );
-
+
releaseManager.rollback( releaseId, workingDirectoryService.getWorkingDirectory( project ).getPath(), listener );
//recurse until rollback is finished
@@ -108,8 +110,7 @@ public class ReleaseRollbackAction
}
}
- String resource = project.getGroupId() + ":" + project.getArtifactId() + ":" + project.getVersion();
- AuditLog event = new AuditLog( resource, AuditLogConstants.ROLLBACK_RELEASE );
+ AuditLog event = new AuditLog( "Release id=" + releaseId, AuditLogConstants.ROLLBACK_RELEASE );
event.setCategory( AuditLogConstants.PROJECT );
event.setCurrentUser( getPrincipal() );
event.log();
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ScheduleAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ScheduleAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ScheduleAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ScheduleAction.java Thu May 6 09:23:13 2010
@@ -23,6 +23,7 @@ import com.opensymphony.xwork2.Preparabl
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import org.apache.commons.lang.StringUtils;
@@ -79,9 +80,11 @@ public class ScheduleAction
private String year;
- private List<String> availableBuildQueues;
+ private List<BuildQueue> availableBuildQueues;
- private List<String> selectedBuildQueues = new ArrayList<String>();
+ private List<BuildQueue> selectedBuildQueues = new ArrayList<BuildQueue>();
+
+ private List<String> selectedBuildQueuesIds = new ArrayList<String>();
public void prepare()
throws Exception
@@ -94,27 +97,19 @@ public class ScheduleAction
private void populateBuildQueues()
throws ContinuumException
{
- List<BuildQueue> buildQueues;
if ( schedule != null )
{
- buildQueues = schedule.getBuildQueues();
- for ( BuildQueue buildQueue : buildQueues )
+ selectedBuildQueues = schedule.getBuildQueues();
+ for ( BuildQueue bq : selectedBuildQueues )
{
- selectedBuildQueues.add( buildQueue.getName() );
+ this.selectedBuildQueuesIds.add( Integer.toString( bq.getId() ) );
}
-
}
- availableBuildQueues = new ArrayList<String>();
-
- buildQueues = getContinuum().getAllBuildQueues();
- for ( BuildQueue buildQueue : buildQueues )
- {
- availableBuildQueues.add( buildQueue.getName() );
- }
+ availableBuildQueues = getContinuum().getAllBuildQueues();
// remove selected build queues from available build queues
- for ( String buildQueue : selectedBuildQueues )
+ for ( BuildQueue buildQueue : selectedBuildQueues )
{
if ( availableBuildQueues.contains( buildQueue ) )
{
@@ -222,24 +217,30 @@ public class ScheduleAction
{
logger.error( "Can't create schedule. No schedule name was supplied." );
addActionError( getText( "buildDefinition.noname.save.error.message" ) );
+ }
+ if ( !getContinuum().getConfiguration().isDistributedBuildEnabled()
+ && ( selectedBuildQueuesIds == null || selectedBuildQueuesIds.isEmpty() ) )
+ {
+ addActionError( getText( "schedule.buildqueues.empty.error" ) );
+ }
+ if ( hasErrors() )
+ {
return ERROR;
}
- else
+
+ try
{
- try
- {
- Schedule s = getContinuum().getScheduleByName( name );
- if ( s != null && id != s.getId() )
- {
- addActionError( getText( "schedule.name.already.exists" ) );
- return ERROR;
- }
- }
- catch ( ContinuumException e )
+ Schedule s = getContinuum().getScheduleByName( name );
+ if ( s != null && id != s.getId() )
{
- logger.debug( "Unexpected error getting schedule" );
+ addActionError( getText( "schedule.name.already.exists" ) );
+ return ERROR;
}
}
+ catch ( ContinuumException e )
+ {
+ logger.debug( "Unexpected error getting schedule" );
+ }
AuditLog event = new AuditLog( getName(), AuditLogConstants.ADD_SCHEDULE );
event.setCategory( AuditLogConstants.SCHEDULE );
@@ -284,15 +285,14 @@ public class ScheduleAction
schedule.setDelay( delay );
schedule.setDescription( description );
schedule.setName( name );
- schedule.setMaxJobExecutionTime( maxJobExecutionTime );
-
- // remove old build queues
- schedule.setBuildQueues( null );
-
- for ( String name : selectedBuildQueues )
- {
- BuildQueue buildQueue = getContinuum().getBuildQueueByName( name );
- schedule.addBuildQueue( buildQueue );
+ schedule.setMaxJobExecutionTime(maxJobExecutionTime);
+ if (!getContinuum().getConfiguration().isDistributedBuildEnabled()) {
+ // if distributed build don't update schedules
+ schedule.setBuildQueues(null);
+ for (String id : selectedBuildQueuesIds) {
+ BuildQueue buildQueue = getContinuum().getBuildQueue(Integer.parseInt(id));
+ schedule.addBuildQueue(buildQueue);
+ }
}
return schedule;
@@ -529,23 +529,33 @@ public class ScheduleAction
year ).trim();
}
- public List<String> getAvailableBuildQueues()
+ public List<BuildQueue> getAvailableBuildQueues()
{
return availableBuildQueues;
}
- public void setAvailableBuildQueues( List<String> availableBuildQueues )
+ public void setAvailableBuildQueues( List<BuildQueue> availableBuildQueues )
{
this.availableBuildQueues = availableBuildQueues;
}
- public List<String> getSelectedBuildQueues()
+ public List<BuildQueue> getSelectedBuildQueues()
{
return selectedBuildQueues;
}
- public void setSelectedBuildQueues( List<String> selectedBuildQueues )
+ public void setSelectedBuildQueues( List<BuildQueue> selectedBuildQueues )
{
this.selectedBuildQueues = selectedBuildQueues;
}
+
+ public List<String> getSelectedBuildQueuesIds()
+ {
+ return selectedBuildQueuesIds;
+ }
+
+ public void setSelectedBuildQueuesIds( List<String> selectedBuildQueuesIds )
+ {
+ this.selectedBuildQueuesIds = selectedBuildQueuesIds;
+ }
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java Thu May 6 09:23:13 2010
@@ -29,6 +29,7 @@ import java.util.Map;
import org.apache.continuum.buildmanager.BuildManagerException;
import org.apache.continuum.buildmanager.BuildsManager;
import org.apache.maven.continuum.ContinuumException;
+import org.apache.maven.continuum.configuration.ConfigurationService;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.project.ContinuumProjectState;
@@ -112,7 +113,7 @@ public class SummaryAction
try
{
- if ( parallelBuildsManager.isInAnyBuildQueue( project.getId() ) )
+ if ( parallelBuildsManager.isInAnyBuildQueue( project.getId() ) || parallelBuildsManager.isInPrepareBuildQueue( project.getId() ) )
{
model.setInBuildingQueue( true );
}
@@ -156,6 +157,14 @@ public class SummaryAction
model.setLastBuildDateTime( latestBuild.getEndTime() );
model.setLastBuildDuration( latestBuild.getDurationTime() );
}
+
+ ConfigurationService configuration = getContinuum().getConfiguration();
+
+ if ( configuration.isDistributedBuildEnabled() &&
+ project.getState() == ContinuumProjectState.BUILDING )
+ {
+ model.setLatestBuildId( 0 );
+ }
}
summary.add( model );
@@ -230,4 +239,10 @@ public class SummaryAction
{
this.groupSummary = groupSummary;
}
+
+ // test
+ public void setParallelBuildsManager( BuildsManager parallelBuildsManager )
+ {
+ this.parallelBuildsManager = parallelBuildsManager;
+ }
}