1 package org.apache.continuum.buildagent.action;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.List;
23 import java.util.Map;
24
25 import org.apache.continuum.buildagent.buildcontext.BuildContext;
26 import org.apache.continuum.buildagent.taskqueue.manager.BuildAgentTaskQueueManager;
27 import org.apache.continuum.buildagent.utils.ContinuumBuildAgentUtil;
28 import org.apache.continuum.taskqueue.BuildProjectTask;
29 import org.apache.continuum.taskqueue.manager.TaskQueueManagerException;
30 import org.apache.maven.continuum.ContinuumException;
31 import org.codehaus.plexus.action.AbstractAction;
32 import org.codehaus.plexus.taskqueue.TaskQueueException;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
35
36
37
38
39 public class CreateBuildProjectTaskAction
40 extends AbstractAction
41 {
42 private static final Logger log = LoggerFactory.getLogger( CreateBuildProjectTaskAction.class );
43
44
45
46
47 private BuildAgentTaskQueueManager buildAgentTaskQueueManager;
48
49 public void execute( Map context )
50 throws Exception
51 {
52 List<BuildContext> buildContexts = ContinuumBuildAgentUtil.getBuildContexts( context );
53
54 for ( BuildContext buildContext : buildContexts )
55 {
56 BuildProjectTask buildProjectTask =
57 new BuildProjectTask( buildContext.getProjectId(), buildContext.getBuildDefinitionId(),
58 buildContext.getTrigger(), buildContext.getProjectName(), buildContext.getBuildDefinitionLabel(),
59 buildContext.getScmResult(), buildContext.getProjectGroupId() );
60 buildProjectTask.setMaxExecutionTime( buildContext.getMaxExecutionTime() * 1000 );
61
62 try
63 {
64 if ( !buildAgentTaskQueueManager.isProjectInBuildQueue( buildProjectTask.getProjectId() ) )
65 {
66 buildAgentTaskQueueManager.getBuildQueue().put( buildProjectTask );
67 }
68 }
69 catch ( TaskQueueException e )
70 {
71 log.error( "Error while enqueing build task for project " + buildContext.getProjectId(), e );
72 throw new ContinuumException(
73 "Error while enqueuing build task for project " + buildContext.getProjectId(), e );
74 }
75 catch ( TaskQueueManagerException e )
76 {
77 log.error( "Error while checking if project " + buildContext.getProjectId() + " is in build queue", e );
78 throw new ContinuumException(
79 "Error while checking if project " + buildContext.getProjectId() + " is in build queue", e );
80 }
81 }
82 }
83
84 }