1 package org.apache.maven.execution;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.Arrays;
24 import java.util.Date;
25 import java.util.List;
26 import java.util.Map;
27 import java.util.Properties;
28 import java.util.concurrent.ConcurrentHashMap;
29
30 import org.apache.maven.artifact.repository.ArtifactRepository;
31 import org.apache.maven.artifact.repository.RepositoryCache;
32 import org.apache.maven.monitor.event.EventDispatcher;
33 import org.apache.maven.plugin.descriptor.PluginDescriptor;
34 import org.apache.maven.project.MavenProject;
35 import org.apache.maven.project.ProjectBuildingRequest;
36 import org.apache.maven.settings.Settings;
37 import org.codehaus.plexus.PlexusContainer;
38 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
39 import org.eclipse.aether.RepositorySystemSession;
40
41
42
43
44 public class MavenSession
45 implements Cloneable
46 {
47 private PlexusContainer container;
48
49 private MavenExecutionRequest request;
50
51 private MavenExecutionResult result;
52
53 private RepositorySystemSession repositorySession;
54
55 private final Settings settings;
56
57 private Properties executionProperties;
58
59 private MavenProject currentProject;
60
61
62
63
64
65
66 private List<MavenProject> projects;
67
68
69
70
71
72 private List<MavenProject> allProjects;
73
74 private MavenProject topLevelProject;
75
76 private ProjectDependencyGraph projectDependencyGraph;
77
78 private boolean parallel;
79
80 private final Map<String, Map<String, Map<String, Object>>> pluginContextsByProjectAndPluginKey =
81 new ConcurrentHashMap<String, Map<String, Map<String, Object>>>();
82
83 @Deprecated
84 public MavenSession( PlexusContainer container, MavenExecutionRequest request, MavenExecutionResult result,
85 MavenProject project )
86 {
87 this( container, request, result, Arrays.asList( new MavenProject[]{project} ) );
88 }
89
90 @Deprecated
91 public MavenSession( PlexusContainer container, Settings settings, ArtifactRepository localRepository,
92 EventDispatcher eventDispatcher, ReactorManager unused, List<String> goals,
93 String executionRootDir, Properties executionProperties, Date startTime )
94 {
95 this( container, settings, localRepository, eventDispatcher, unused, goals, executionRootDir,
96 executionProperties, null, startTime );
97 }
98
99 @Deprecated
100 public MavenSession( PlexusContainer container, Settings settings, ArtifactRepository localRepository,
101 EventDispatcher eventDispatcher, ReactorManager unused, List<String> goals,
102 String executionRootDir, Properties executionProperties, Properties userProperties,
103 Date startTime )
104 {
105 this.container = container;
106 this.settings = settings;
107 this.executionProperties = executionProperties;
108 this.request = new DefaultMavenExecutionRequest();
109 this.request.setUserProperties( userProperties );
110 this.request.setLocalRepository( localRepository );
111 this.request.setGoals( goals );
112 this.request.setBaseDirectory( ( executionRootDir != null ) ? new File( executionRootDir ) : null );
113 this.request.setStartTime( startTime );
114 }
115
116 @Deprecated
117 public MavenSession( PlexusContainer container, MavenExecutionRequest request, MavenExecutionResult result,
118 List<MavenProject> projects )
119 {
120 this.container = container;
121 this.request = request;
122 this.result = result;
123 this.settings = new SettingsAdapter( request );
124 setProjects( projects );
125 }
126
127 public MavenSession( PlexusContainer container, RepositorySystemSession repositorySession, MavenExecutionRequest request,
128 MavenExecutionResult result )
129 {
130 this.container = container;
131 this.request = request;
132 this.result = result;
133 this.settings = new SettingsAdapter( request );
134 this.repositorySession = repositorySession;
135 }
136
137 public void setProjects( List<MavenProject> projects )
138 {
139 if ( !projects.isEmpty() )
140 {
141 this.currentProject = projects.get( 0 );
142 this.topLevelProject = currentProject;
143 for ( MavenProject project : projects )
144 {
145 if ( project.isExecutionRoot() )
146 {
147 topLevelProject = project;
148 break;
149 }
150 }
151 }
152 else
153 {
154 this.currentProject = null;
155 this.topLevelProject = null;
156 }
157 this.projects = projects;
158 }
159
160 @Deprecated
161 public PlexusContainer getContainer()
162 {
163 return container;
164 }
165
166 @Deprecated
167 public Object lookup( String role )
168 throws ComponentLookupException
169 {
170 return container.lookup( role );
171 }
172
173 @Deprecated
174 public Object lookup( String role, String roleHint )
175 throws ComponentLookupException
176 {
177 return container.lookup( role, roleHint );
178 }
179
180 @Deprecated
181 public List<Object> lookupList( String role )
182 throws ComponentLookupException
183 {
184 return container.lookupList( role );
185 }
186
187 @Deprecated
188 public Map<String, Object> lookupMap( String role )
189 throws ComponentLookupException
190 {
191 return container.lookupMap( role );
192 }
193
194 public ArtifactRepository getLocalRepository()
195 {
196 return request.getLocalRepository();
197 }
198
199 public List<String> getGoals()
200 {
201 return request.getGoals();
202 }
203
204
205
206
207
208
209
210
211 public Properties getUserProperties()
212 {
213 return request.getUserProperties();
214 }
215
216
217
218
219
220
221
222 public Properties getSystemProperties()
223 {
224 return request.getSystemProperties();
225 }
226
227
228
229
230 @Deprecated
231 public Properties getExecutionProperties()
232 {
233 if ( executionProperties == null )
234 {
235 executionProperties = new Properties();
236 executionProperties.putAll( request.getSystemProperties() );
237 executionProperties.putAll( request.getUserProperties() );
238 }
239
240 return executionProperties;
241 }
242
243 public Settings getSettings()
244 {
245 return settings;
246 }
247
248 public List<MavenProject> getProjects()
249 {
250 return projects;
251 }
252
253 @Deprecated
254 public List<MavenProject> getSortedProjects()
255 {
256 return getProjects();
257 }
258
259 public String getExecutionRootDirectory()
260 {
261 return request.getBaseDirectory();
262 }
263
264 @Deprecated
265 public boolean isUsingPOMsFromFilesystem()
266 {
267 return request.isProjectPresent();
268 }
269
270 public MavenExecutionRequest getRequest()
271 {
272 return request;
273 }
274
275 public void setCurrentProject( MavenProject currentProject )
276 {
277 this.currentProject = currentProject;
278 }
279
280 public MavenProject getCurrentProject()
281 {
282 return currentProject;
283 }
284
285 public ProjectBuildingRequest getProjectBuildingRequest()
286 {
287 return request.getProjectBuildingRequest().setRepositorySession( getRepositorySession() );
288 }
289
290 public List<String> getPluginGroups()
291 {
292 return request.getPluginGroups();
293 }
294
295 public boolean isOffline()
296 {
297 return request.isOffline();
298 }
299
300 public MavenProject getTopLevelProject()
301 {
302 return topLevelProject;
303 }
304
305 public MavenExecutionResult getResult()
306 {
307 return result;
308 }
309
310
311
312 public Map<String, Object> getPluginContext( PluginDescriptor plugin, MavenProject project )
313 {
314 String projectKey = project.getId();
315
316 Map<String, Map<String, Object>> pluginContextsByKey = pluginContextsByProjectAndPluginKey.get( projectKey );
317
318 if ( pluginContextsByKey == null )
319 {
320 pluginContextsByKey = new ConcurrentHashMap<String, Map<String, Object>>();
321
322 pluginContextsByProjectAndPluginKey.put( projectKey, pluginContextsByKey );
323 }
324
325 String pluginKey = plugin.getPluginLookupKey();
326
327 Map<String, Object> pluginContext = pluginContextsByKey.get( pluginKey );
328
329 if ( pluginContext == null )
330 {
331 pluginContext = new ConcurrentHashMap<String, Object>();
332
333 pluginContextsByKey.put( pluginKey, pluginContext );
334 }
335
336 return pluginContext;
337 }
338
339 public ProjectDependencyGraph getProjectDependencyGraph()
340 {
341 return projectDependencyGraph;
342 }
343
344 public void setProjectDependencyGraph( ProjectDependencyGraph projectDependencyGraph )
345 {
346 this.projectDependencyGraph = projectDependencyGraph;
347 }
348
349 public String getReactorFailureBehavior()
350 {
351 return request.getReactorFailureBehavior();
352 }
353
354 @Override
355 public MavenSession clone()
356 {
357 try
358 {
359 return (MavenSession) super.clone();
360 }
361 catch ( CloneNotSupportedException e )
362 {
363 throw new RuntimeException( "Bug", e );
364 }
365 }
366
367 @Deprecated
368 public EventDispatcher getEventDispatcher()
369 {
370 return null;
371 }
372
373 public Date getStartTime()
374 {
375 return request.getStartTime();
376 }
377
378 public boolean isParallel()
379 {
380 return parallel;
381 }
382
383 public void setParallel( boolean parallel )
384 {
385 this.parallel = parallel;
386 }
387
388 public RepositorySystemSession getRepositorySession()
389 {
390 return repositorySession;
391 }
392
393 @Deprecated
394
395
396
397
398 public RepositoryCache getRepositoryCache()
399 {
400 return null;
401 }
402
403 private Map<String, MavenProject> projectMap;
404
405 public void setProjectMap( Map<String, MavenProject> projectMap )
406 {
407 this.projectMap = projectMap;
408 }
409
410 public Map<String, MavenProject> getProjectMap()
411 {
412 return projectMap;
413 }
414
415
416 public List<MavenProject> getAllProjects()
417 {
418 return allProjects;
419 }
420
421
422 public void setAllProjects( List<MavenProject> allProjects )
423 {
424 this.allProjects = allProjects;
425 }
426
427
428 }