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 org.apache.maven.artifact.repository.ArtifactRepository;
23  import org.apache.maven.monitor.event.EventDispatcher;
24  import org.apache.maven.plugin.descriptor.PluginDescriptor;
25  import org.apache.maven.project.DefaultProjectBuilderConfiguration;
26  import org.apache.maven.project.MavenProject;
27  import org.apache.maven.project.ProjectBuilderConfiguration;
28  import org.apache.maven.settings.Settings;
29  import org.codehaus.plexus.PlexusContainer;
30  import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
31  
32  import java.util.Date;
33  import java.util.List;
34  import java.util.Map;
35  import java.util.Properties;
36  
37  
38  
39  
40  
41  public class MavenSession
42  {
43      private PlexusContainer container;
44  
45      private ArtifactRepository localRepository;
46  
47      private List goals;
48  
49      private EventDispatcher eventDispatcher;
50  
51      
52      private final Settings settings;
53  
54      private ReactorManager reactorManager;
55  
56      private final String executionRootDir;
57  
58      private boolean usingPOMsFromFilesystem = true;
59  
60      private final Properties executionProperties;
61  
62      private Properties userProperties;
63  
64      private final Date startTime;
65  
66      private MavenProject currentProject;
67  
68      public MavenSession( PlexusContainer container, Settings settings, ArtifactRepository localRepository,
69                           EventDispatcher eventDispatcher, ReactorManager reactorManager, List goals,
70                           String executionRootDir, Properties executionProperties, Date startTime )
71      {
72          this( container, settings, localRepository, eventDispatcher, reactorManager, goals, executionRootDir, executionProperties, null, startTime );
73      }
74  
75      public MavenSession( PlexusContainer container, Settings settings, ArtifactRepository localRepository,
76                           EventDispatcher eventDispatcher, ReactorManager reactorManager, List goals,
77                           String executionRootDir, Properties executionProperties, Properties userProperties, Date startTime )
78      {
79          this.container = container;
80  
81          this.settings = settings;
82  
83          this.localRepository = localRepository;
84  
85          this.eventDispatcher = eventDispatcher;
86  
87          this.reactorManager = reactorManager;
88  
89          this.goals = goals;
90  
91          this.executionRootDir = executionRootDir;
92  
93          this.executionProperties = executionProperties;
94  
95          this.userProperties = userProperties;
96  
97          this.startTime = startTime;
98      }
99  
100     public Map getPluginContext( PluginDescriptor pluginDescriptor, MavenProject project )
101     {
102         return reactorManager.getPluginContext( pluginDescriptor, project );
103     }
104 
105     public PlexusContainer getContainer()
106     {
107         return container;
108     }
109 
110     public ArtifactRepository getLocalRepository()
111     {
112         return localRepository;
113     }
114 
115     public List getGoals()
116     {
117         return goals;
118     }
119 
120     public Properties getExecutionProperties()
121     {
122         return executionProperties;
123     }
124 
125     
126     
127     
128 
129     public Object lookup( String role )
130         throws ComponentLookupException
131     {
132         return container.lookup( role );
133     }
134 
135     public Object lookup( String role, String roleHint )
136         throws ComponentLookupException
137     {
138         return container.lookup( role, roleHint );
139     }
140 
141     public List lookupList( String role )
142         throws ComponentLookupException
143     {
144         return container.lookupList( role );
145     }
146 
147     public Map lookupMap( String role )
148         throws ComponentLookupException
149     {
150         return container.lookupMap( role );
151     }
152 
153     public EventDispatcher getEventDispatcher()
154     {
155         return eventDispatcher;
156     }
157 
158     public Settings getSettings()
159     {
160         return settings;
161     }
162 
163     public List<MavenProject> getSortedProjects()
164     {
165         return reactorManager.getSortedProjects();
166     }
167 
168     public String getExecutionRootDirectory()
169     {
170         return executionRootDir;
171     }
172 
173     public void setUsingPOMsFromFilesystem( boolean usingPOMsFromFilesystem )
174     {
175         this.usingPOMsFromFilesystem = usingPOMsFromFilesystem;
176     }
177 
178     public boolean isUsingPOMsFromFilesystem()
179     {
180         return usingPOMsFromFilesystem;
181     }
182 
183     public Date getStartTime()
184     {
185         return startTime;
186     }
187 
188     public void setCurrentProject( MavenProject currentProject )
189     {
190         this.currentProject = currentProject;
191     }
192 
193     
194 
195 
196     public MavenProject getCurrentProject()
197     {
198         return currentProject;
199     }
200 
201 
202     public Properties getUserProperties()
203     {
204         return userProperties;
205     }
206 
207     public void setUserProperties( Properties userProperties )
208     {
209         this.userProperties = userProperties;
210     }
211 
212     
213 
214 
215 
216     public ProjectBuilderConfiguration getProjectBuilderConfiguration()
217     {
218         ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration();
219         config.setLocalRepository( getLocalRepository() )
220               .setExecutionProperties( getExecutionProperties() )
221               .setUserProperties( getUserProperties() )
222               .setBuildStartTime( getStartTime() );
223 
224         return config;
225     }
226 }