1 package org.apache.maven.profiles;
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.model.Activation;
23 import org.apache.maven.model.Profile;
24 import org.apache.maven.model.building.ModelProblem;
25 import org.apache.maven.model.building.ModelProblemCollector;
26 import org.apache.maven.model.profile.DefaultProfileActivationContext;
27 import org.apache.maven.model.profile.ProfileSelector;
28 import org.apache.maven.profiles.activation.ProfileActivationException;
29 import org.codehaus.plexus.MutablePlexusContainer;
30 import org.codehaus.plexus.PlexusContainer;
31 import org.codehaus.plexus.component.annotations.Requirement;
32 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
33 import org.codehaus.plexus.logging.Logger;
34
35 import java.util.ArrayList;
36 import java.util.LinkedHashMap;
37 import java.util.List;
38 import java.util.Map;
39 import java.util.Properties;
40 import org.apache.maven.model.building.ModelProblemCollectorRequest;
41
42 @Deprecated
43 public class DefaultProfileManager
44 implements ProfileManager
45 {
46
47 @Requirement
48 private Logger logger;
49
50 @Requirement
51 private ProfileSelector profileSelector;
52
53 private List activatedIds = new ArrayList();
54
55 private List deactivatedIds = new ArrayList();
56
57 private List defaultIds = new ArrayList();
58
59 private Map profilesById = new LinkedHashMap();
60
61 private Properties requestProperties;
62
63
64
65
66
67 public DefaultProfileManager( PlexusContainer container )
68 {
69 this( container, null );
70 }
71
72
73
74
75
76
77 public DefaultProfileManager( PlexusContainer container, Properties props )
78 {
79 try
80 {
81 this.profileSelector = container.lookup( ProfileSelector.class );
82 this.logger = ( (MutablePlexusContainer) container ).getLogger();
83 }
84 catch ( ComponentLookupException e )
85 {
86 throw new IllegalStateException( e );
87 }
88 this.requestProperties = props;
89 }
90
91 public Properties getRequestProperties()
92 {
93 return requestProperties;
94 }
95
96 public Map getProfilesById()
97 {
98 return profilesById;
99 }
100
101
102
103
104 public void addProfile( Profile profile )
105 {
106 String profileId = profile.getId();
107
108 Profile existing = (Profile) profilesById.get( profileId );
109 if ( existing != null )
110 {
111 logger.warn( "Overriding profile: \'" + profileId + "\' (source: " + existing.getSource()
112 + ") with new instance from source: " + profile.getSource() );
113 }
114
115 profilesById.put( profile.getId(), profile );
116
117 Activation activation = profile.getActivation();
118
119 if ( activation != null && activation.isActiveByDefault() )
120 {
121 activateAsDefault( profileId );
122 }
123 }
124
125
126
127
128 public void explicitlyActivate( String profileId )
129 {
130 if ( !activatedIds.contains( profileId ) )
131 {
132 logger.debug( "Profile with id: \'" + profileId + "\' has been explicitly activated." );
133
134 activatedIds.add( profileId );
135 }
136 }
137
138
139
140
141 public void explicitlyActivate( List profileIds )
142 {
143 for ( Object profileId1 : profileIds )
144 {
145 String profileId = (String) profileId1;
146
147 explicitlyActivate( profileId );
148 }
149 }
150
151
152
153
154 public void explicitlyDeactivate( String profileId )
155 {
156 if ( !deactivatedIds.contains( profileId ) )
157 {
158 logger.debug( "Profile with id: \'" + profileId + "\' has been explicitly deactivated." );
159
160 deactivatedIds.add( profileId );
161 }
162 }
163
164
165
166
167 public void explicitlyDeactivate( List profileIds )
168 {
169 for ( Object profileId1 : profileIds )
170 {
171 String profileId = (String) profileId1;
172
173 explicitlyDeactivate( profileId );
174 }
175 }
176
177
178
179
180 public List getActiveProfiles()
181 throws ProfileActivationException
182 {
183 DefaultProfileActivationContext context = new DefaultProfileActivationContext();
184 context.setActiveProfileIds( activatedIds );
185 context.setInactiveProfileIds( deactivatedIds );
186 context.setSystemProperties( System.getProperties() );
187 context.setUserProperties( requestProperties );
188
189 final List<ProfileActivationException> errors = new ArrayList<ProfileActivationException>();
190
191 List<Profile> profiles =
192 profileSelector.getActiveProfiles( profilesById.values(), context, new ModelProblemCollector()
193 {
194
195 public void add( ModelProblemCollectorRequest req )
196 {
197 if ( !ModelProblem.Severity.WARNING.equals( req.getSeverity() ) )
198 {
199 errors.add( new ProfileActivationException( req.getMessage(), req.getException() ) );
200 }
201 }
202 } );
203
204 if ( !errors.isEmpty() )
205 {
206 throw errors.get( 0 );
207 }
208
209 return profiles;
210 }
211
212
213
214
215 public void addProfiles( List profiles )
216 {
217 for ( Object profile1 : profiles )
218 {
219 Profile profile = (Profile) profile1;
220
221 addProfile( profile );
222 }
223 }
224
225 public void activateAsDefault( String profileId )
226 {
227 if ( !defaultIds.contains( profileId ) )
228 {
229 defaultIds.add( profileId );
230 }
231 }
232
233 public List getExplicitlyActivatedIds()
234 {
235 return activatedIds;
236 }
237
238 public List getExplicitlyDeactivatedIds()
239 {
240 return deactivatedIds;
241 }
242
243 public List getIdsActivatedByDefault()
244 {
245 return defaultIds;
246 }
247
248 }