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