1 package org.apache.maven.continuum.scm.queue;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.continuum.dao.ProjectDao;
23 import org.apache.continuum.taskqueue.CheckOutTask;
24 import org.apache.maven.continuum.core.action.AbstractContinuumAction;
25 import org.apache.maven.continuum.core.action.CheckoutProjectContinuumAction;
26 import org.apache.maven.continuum.model.project.Project;
27 import org.apache.maven.continuum.store.ContinuumStoreException;
28 import org.codehaus.plexus.action.ActionManager;
29 import org.codehaus.plexus.taskqueue.Task;
30 import org.codehaus.plexus.taskqueue.execution.TaskExecutionException;
31 import org.codehaus.plexus.taskqueue.execution.TaskExecutor;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34
35 import java.util.HashMap;
36 import java.util.Map;
37
38
39
40
41
42
43
44 public class CheckOutTaskExecutor
45 implements TaskExecutor
46 {
47 private static final Logger log = LoggerFactory.getLogger( CheckOutTaskExecutor.class );
48
49
50
51
52 private ActionManager actionManager;
53
54
55
56
57 private ProjectDao projectDao;
58
59
60
61
62
63 public void executeTask( Task t )
64 throws TaskExecutionException
65 {
66 log.info( "Checkout task executor.." );
67
68 CheckOutTask task = (CheckOutTask) t;
69
70 int projectId = task.getProjectId();
71
72 Project project;
73
74 try
75 {
76 project = projectDao.getProjectWithBuildDetails( projectId );
77 }
78 catch ( ContinuumStoreException ex )
79 {
80 log.error( "Internal error while getting the project.", ex );
81
82 return;
83 }
84
85 String workingDirectory = task.getWorkingDirectory().getAbsolutePath();
86
87 Map<String, Object> context = new HashMap<String, Object>();
88
89 AbstractContinuumAction.setProjectId( context, projectId );
90
91 AbstractContinuumAction.setProject( context, project );
92
93 AbstractContinuumAction.setWorkingDirectory( context, workingDirectory );
94
95 CheckoutProjectContinuumAction.setScmUsername( context, task.getScmUserName() );
96
97 CheckoutProjectContinuumAction.setScmPassword( context, task.getScmPassword() );
98
99 AbstractContinuumAction.setProjectScmRootUrl( context, task.getScmRootUrl() );
100
101 AbstractContinuumAction.setListOfProjectsInGroupWithCommonScmRoot( context,
102 task.getProjectsWithCommonScmRoot() );
103
104 try
105 {
106 actionManager.lookup( "checkout-project" ).execute( context );
107
108 actionManager.lookup( "store-checkout-scm-result" ).execute( context );
109 }
110 catch ( Exception e )
111 {
112 throw new TaskExecutionException( "Error checking out project.", e );
113 }
114 }
115 }