You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ev...@apache.org on 2007/09/13 15:41:57 UTC
svn commit: r575311 - in /maven/continuum/trunk:
continuum-api/src/main/java/org/apache/maven/continuum/
continuum-api/src/main/java/org/apache/maven/continuum/store/
continuum-core/src/main/java/org/apache/maven/continuum/
continuum-core/src/main/java...
Author: evenisse
Date: Thu Sep 13 06:41:56 2007
New Revision: 575311
URL: http://svn.apache.org/viewvc?rev=575311&view=rev
Log:
[CONTINUUM-1037] Allow to add more than one default build definition in a group (one by project type)
Choose the default build definition to use for a project with the executor type
Modified:
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractBuildDefinitionContinuumAction.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/installation/DefaultInstallationService.java
maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java
maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
maven/continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties
Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=575311&r1=575310&r2=575311&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java Thu Sep 13 06:41:56 2007
@@ -475,7 +475,7 @@
BuildDefinition getDefaultBuildDefinition( int projectId )
throws ContinuumException;
- public BuildDefinition getDefaultBuildDefinitionForProjectGroup( int projectGroupId )
+ public List<BuildDefinition> getDefaultBuildDefinitionsForProjectGroup( int projectGroupId )
throws ContinuumException;
BuildDefinition addBuildDefinitionToProject( int projectId, BuildDefinition buildDefinition )
Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java?rev=575311&r1=575310&r2=575311&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java Thu Sep 13 06:41:56 2007
@@ -79,8 +79,8 @@
throws ContinuumStoreException, ContinuumObjectNotFoundException;
/**
- * returns the default build definition for the project group and there
- * should always be one declared
+ * returns the default build definitions for the project group and there
+ * should always be at least one declared
*
* @param projectGroupId
* @return
@@ -88,7 +88,7 @@
* @throws ContinuumObjectNotFoundException
*
*/
- BuildDefinition getDefaultBuildDefinitionForProjectGroup( int projectGroupId )
+ List<BuildDefinition> getDefaultBuildDefinitionsForProjectGroup( int projectGroupId )
throws ContinuumStoreException, ContinuumObjectNotFoundException;
BuildDefinition getBuildDefinition( int buildDefinitionId )
Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=575311&r1=575310&r2=575311&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Thu Sep 13 06:41:56 2007
@@ -844,29 +844,30 @@
public void buildProjectGroup( int projectGroupId )
throws ContinuumException
{
- BuildDefinition groupDefaultBD = null;
+ List<BuildDefinition> groupDefaultBDs = null;
- groupDefaultBD = getDefaultBuildDefinitionForProjectGroup( projectGroupId );
+ groupDefaultBDs = getDefaultBuildDefinitionsForProjectGroup( projectGroupId );
- int buildDefinitionId = -1;
-
- if ( groupDefaultBD != null )
- {
- buildDefinitionId = groupDefaultBD.getId();
- }
- buildProjectGroupWithBuildDefinition( projectGroupId, buildDefinitionId, true );
+ buildProjectGroupWithBuildDefinition( projectGroupId, groupDefaultBDs, true );
}
/**
- * fire off a build for all of the projects in a project group using their default builds
+ * fire off a build for all of the projects in a project group using their default builds.
*
- * @param projectGroupId
+ * @param projectGroupId the project group id
+ * @param buildDefinitionId the build definition id to use
* @throws ContinuumException
*/
public void buildProjectGroupWithBuildDefinition( int projectGroupId, int buildDefinitionId )
throws ContinuumException
{
- buildProjectGroupWithBuildDefinition( projectGroupId, buildDefinitionId, false );
+ List<BuildDefinition> bds = new ArrayList<BuildDefinition>();
+ BuildDefinition bd = getBuildDefinition( buildDefinitionId );
+ if ( bd != null )
+ {
+ bds.add( bd );
+ }
+ buildProjectGroupWithBuildDefinition( projectGroupId, bds, false );
}
/**
@@ -875,7 +876,7 @@
* @param projectGroupId
* @throws ContinuumException
*/
- private void buildProjectGroupWithBuildDefinition( int projectGroupId, int buildDefinitionId,
+ private void buildProjectGroupWithBuildDefinition( int projectGroupId, List<BuildDefinition> bds,
boolean checkDefaultBuildDefinitionForProject )
throws ContinuumException
{
@@ -898,7 +899,16 @@
{
Project project = (Project) i.next();
- int buildDefId = buildDefinitionId;
+ int buildDefId = -1;
+
+ for ( BuildDefinition bd : bds )
+ {
+ if ( project.getExecutorId().equals( bd.getType() ) )
+ {
+ buildDefId = bd.getId();
+ break;
+ }
+ }
if ( checkDefaultBuildDefinitionForProject )
{
@@ -924,10 +934,10 @@
}
}
- if ( !"maven2".equals( project.getExecutorId() ) )
+ if ( buildDefId == -1 )
{
- getLogger().info(
- "Project " + project.getId() + " is not a maven2 project, will not be included in group build." );
+ getLogger().info( "Project " + project.getId() +
+ " don't have a default build definition defined in the project or project group, will not be included in group build." );
continue;
}
@@ -1982,12 +1992,12 @@
}
}
- public BuildDefinition getDefaultBuildDefinitionForProjectGroup( int projectGroupId )
+ public List<BuildDefinition> getDefaultBuildDefinitionsForProjectGroup( int projectGroupId )
throws ContinuumException
{
try
{
- return store.getDefaultBuildDefinitionForProjectGroup( projectGroupId );
+ return store.getDefaultBuildDefinitionsForProjectGroup( projectGroupId );
}
catch ( ContinuumObjectNotFoundException cne )
{
Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractBuildDefinitionContinuumAction.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractBuildDefinitionContinuumAction.java?rev=575311&r1=575310&r2=575311&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractBuildDefinitionContinuumAction.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractBuildDefinitionContinuumAction.java Thu Sep 13 06:41:56 2007
@@ -86,6 +86,7 @@
*
* @param buildDefinition
* @param projectGroup
+ * @throws ContinuumException
*/
protected void resolveDefaultBuildDefinitionsForProjectGroup( BuildDefinition buildDefinition,
ProjectGroup projectGroup )
@@ -93,27 +94,35 @@
{
try
{
- BuildDefinition storedDefinition = store.getDefaultBuildDefinitionForProjectGroup( projectGroup.getId() );
+ List<BuildDefinition> storedDefinitions =
+ store.getDefaultBuildDefinitionsForProjectGroup( projectGroup.getId() );
- // if buildDefinition passed in is not default then we are done
- if ( buildDefinition.isDefaultForProject() )
+ for ( BuildDefinition storedDefinition : storedDefinitions )
{
- if ( storedDefinition != null && storedDefinition.getId() != buildDefinition.getId() )
+ // if buildDefinition passed in is not default then we are done
+ if ( buildDefinition.isDefaultForProject() )
{
- storedDefinition.setDefaultForProject( false );
+ if ( storedDefinition != null && storedDefinition.getId() != buildDefinition.getId() )
+ {
+ if ( buildDefinition.getType() != null &&
+ buildDefinition.getType().equals( storedDefinition.getType() ) )
+ {
+ storedDefinition.setDefaultForProject( false );
- store.storeBuildDefinition( storedDefinition );
+ store.storeBuildDefinition( storedDefinition );
+ }
+ }
}
- }
- else
- {
- //make sure we are not wacking out default build definition, that would be bad
- if ( buildDefinition.getId() == storedDefinition.getId() )
+ else
{
- getLogger().info(
- "processing this build definition would result in no default build definition for project group" );
- throw new ContinuumException(
- "processing this build definition would result in no default build definition for project group" );
+ //make sure we are not wacking out default build definition, that would be bad
+ if ( buildDefinition.getId() == storedDefinition.getId() )
+ {
+ getLogger().info(
+ "processing this build definition would result in no default build definition for project group" );
+ throw new ContinuumException(
+ "processing this build definition would result in no default build definition for project group" );
+ }
}
}
}
@@ -181,11 +190,11 @@
storedDefinition.setProfile( buildDefinition.getProfile() );
storedDefinition.setDescription( buildDefinition.getDescription() );
-
+
storedDefinition.setType( buildDefinition.getType() );
-
+
storedDefinition.setAlwaysBuild( buildDefinition.isAlwaysBuild() );
-
+
store.storeBuildDefinition( storedDefinition );
return storedDefinition;
Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/installation/DefaultInstallationService.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/installation/DefaultInstallationService.java?rev=575311&r1=575310&r2=575311&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/installation/DefaultInstallationService.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/installation/DefaultInstallationService.java Thu Sep 13 06:41:56 2007
@@ -155,7 +155,7 @@
/**
* @see org.apache.maven.continuum.installation.InstallationService#getAllInstallations()
*/
- @SuppressWarnings ("unchecked")
+ @SuppressWarnings("unchecked")
public List<Installation> getAllInstallations()
throws InstallationException
{
@@ -335,7 +335,7 @@
}
return cliOutput;
}
-
+
private Map<String, String> getEnvVars( Profile profile )
{
Map<String, String> environnments = new HashMap<String, String>();
@@ -363,13 +363,13 @@
}
/**
- * @see org.apache.maven.continuum.installation.InstallationService#getExecutorConfiguratorVersion(java.lang.String,org.apache.maven.continuum.execution.ExecutorConfigurator)
+ * @see org.apache.maven.continuum.installation.InstallationService#getExecutorConfiguratorVersion(java.lang.String,org.apache.maven.continuum.execution.ExecutorConfigurator,Profile)
*/
- @SuppressWarnings ("unchecked")
- public List<String> getExecutorConfiguratorVersion( String path, ExecutorConfigurator executorConfigurator, Profile profile )
+ @SuppressWarnings("unchecked")
+ public List<String> getExecutorConfiguratorVersion( String path, ExecutorConfigurator executorConfigurator,
+ Profile profile )
throws InstallationException
{
-
if ( executorConfigurator == null )
{
@@ -398,7 +398,7 @@
String value = environments.get( key );
commandline.addEnvironment( key, value );
}
-
+
executable = executable.append( executorConfigurator.getExecutable() );
commandline.setExecutable( executable.toString() );
commandline.addArguments( new String[]{executorConfigurator.getVersionArgument()} );
Modified: maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java?rev=575311&r1=575310&r2=575311&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java Thu Sep 13 06:41:56 2007
@@ -592,7 +592,7 @@
{
return getLatestBuildResultsByProjectGroupId( -1 );
}
-
+
public void removeBuildResult( BuildResult buildResult )
{
removeObject( buildResult );
@@ -632,7 +632,17 @@
{
ProjectGroup projectGroup = getProjectGroupByProjectId( projectId );
- bd = getDefaultBuildDefinitionForProjectGroup( projectGroup.getId() );
+ Project p = getProject( projectId );
+
+ List<BuildDefinition> bds = getDefaultBuildDefinitionsForProjectGroup( projectGroup.getId() );
+
+ for ( BuildDefinition bdef : bds )
+ {
+ if ( p.getExecutorId().equals( bdef.getType() ) )
+ {
+ return bdef;
+ }
+ }
}
return bd;
@@ -669,11 +679,13 @@
throw new ContinuumObjectNotFoundException( "no default build definition declared for project " + projectId );
}
- public BuildDefinition getDefaultBuildDefinitionForProjectGroup( int projectGroupId )
+ public List<BuildDefinition> getDefaultBuildDefinitionsForProjectGroup( int projectGroupId )
throws ContinuumStoreException, ContinuumObjectNotFoundException
{
ProjectGroup projectGroup = getProjectGroupWithBuildDetailsByProjectGroupId( projectGroupId );
+ List<BuildDefinition> bds = new ArrayList<BuildDefinition>();
+
for ( Iterator i = projectGroup.getBuildDefinitions().iterator(); i.hasNext(); )
{
BuildDefinition bd = (BuildDefinition) i.next();
@@ -681,11 +693,11 @@
// also applies to project group membership
if ( bd.isDefaultForProject() )
{
- return bd;
+ bds.add( bd );
}
}
- return null;
+ return bds;
}
public Map getDefaultBuildDefinitions()
Modified: maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java?rev=575311&r1=575310&r2=575311&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java (original)
+++ maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java Thu Sep 13 06:41:56 2007
@@ -27,8 +27,6 @@
import org.apache.maven.continuum.project.ContinuumProjectState;
import org.apache.maven.continuum.web.bean.ProjectGroupUserBean;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
-import org.apache.maven.continuum.web.model.BuildDefinitionSummary;
-import org.apache.maven.continuum.xmlrpc.project.ProjectGroupSummary;
import org.codehaus.plexus.redback.rbac.RBACManager;
import org.codehaus.plexus.redback.rbac.RbacManagerException;
import org.codehaus.plexus.redback.rbac.RbacObjectNotFoundException;
@@ -131,23 +129,21 @@
projectGroup = getProjectGroup( projectGroupId );
//projectGroup.
-
-
- List<BuildDefinition> projectGroupBuildDefs = getContinuum().getBuildDefinitionsForProjectGroup( projectGroupId );
- int defaultBuildDefinitionId = getContinuum().getDefaultBuildDefinitionForProjectGroup( projectGroupId ).getId();
+ List<BuildDefinition> projectGroupBuildDefs =
+ getContinuum().getBuildDefinitionsForProjectGroup( projectGroupId );
- if (projectGroupBuildDefs != null)
+ if ( projectGroupBuildDefs != null )
{
- this.buildDefinitions = new LinkedHashMap<String, Integer>(projectGroupBuildDefs.size());
- for(BuildDefinition buildDefinition : projectGroupBuildDefs)
+ this.buildDefinitions = new LinkedHashMap<String, Integer>( projectGroupBuildDefs.size() );
+ for ( BuildDefinition buildDefinition : projectGroupBuildDefs )
{
-
- if (buildDefinition.getId() != defaultBuildDefinitionId)
+
+ if ( !buildDefinition.isDefaultForProject() )
{
String key = StringUtils.isEmpty( buildDefinition.getDescription() ) ? buildDefinition.getGoals()
- : buildDefinition
- .getDescription();
+ : buildDefinition
+ .getDescription();
buildDefinitions.put( key, Integer.valueOf( buildDefinition.getId() ) );
}
}
@@ -341,7 +337,8 @@
}
}
- ProjectGroup newProjectGroup = getContinuum().getProjectGroupWithProjects( new Integer( id[0] ).intValue() );
+ ProjectGroup newProjectGroup =
+ getContinuum().getProjectGroupWithProjects( new Integer( id[0] ).intValue() );
if ( newProjectGroup.getId() != projectGroup.getId() )
{
Modified: maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java?rev=575311&r1=575310&r2=575311&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java (original)
+++ maven/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java Thu Sep 13 06:41:56 2007
@@ -147,12 +147,12 @@
}
//TODO : Change this part because it's a duplicate of DefaultContinuum.buildProjectGroup*
- BuildDefinition groupDefaultBD = null;
+ List<BuildDefinition> groupDefaultBDs = null;
if (getBuildDefinitionId() == -1 || getBuildDefinitionId() == 0)
{
try
{
- groupDefaultBD = store.getDefaultBuildDefinitionForProjectGroup( projectGroupId );
+ groupDefaultBDs = store.getDefaultBuildDefinitionsForProjectGroup( projectGroupId );
}
catch ( ContinuumObjectNotFoundException e )
{
@@ -170,7 +170,16 @@
Project project = (Project) i.next();
if ( this.getBuildDefinitionId() == -1 || getBuildDefinitionId() == 0)
{
- int buildDefId = groupDefaultBD.getId();
+ int buildDefId = -1;
+
+ for ( BuildDefinition bd : groupDefaultBDs )
+ {
+ if ( project.getExecutorId().equals( bd.getType() ) )
+ {
+ buildDefId = bd.getId();
+ break;
+ }
+ }
BuildDefinition projectDefaultBD = null;
if ( this.getBuildDefinitionId() == -1 )
Modified: maven/continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties?rev=575311&r1=575310&r2=575311&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ maven/continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties Thu Sep 13 06:41:56 2007
@@ -372,6 +372,7 @@
buildDefinition.goals.maven.label = Goals
buildDefinition.arguments.label = Arguments
buildDefinition.buildFresh.label = Build Fresh (Run always a clean checkout instead of an SCM update)
+buildDefinition.type.label = Type
buildDefinition.defaultForProject.label = Is it default?
buildDefinition.schedule.label = Schedule
buildDefinition.description.label = Description