1
2
3
4
5
6 package org.apache.maven.profiles.io.xpp3;
7
8
9
10
11
12 import java.io.OutputStream;
13 import java.io.Writer;
14 import java.util.Iterator;
15 import org.apache.maven.profiles.Activation;
16 import org.apache.maven.profiles.ActivationFile;
17 import org.apache.maven.profiles.ActivationOS;
18 import org.apache.maven.profiles.ActivationProperty;
19 import org.apache.maven.profiles.Profile;
20 import org.apache.maven.profiles.ProfilesRoot;
21 import org.apache.maven.profiles.Repository;
22 import org.apache.maven.profiles.RepositoryBase;
23 import org.apache.maven.profiles.RepositoryPolicy;
24 import org.codehaus.plexus.util.xml.pull.MXSerializer;
25 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
26
27
28
29
30
31
32 @SuppressWarnings( "all" )
33 public class ProfilesXpp3Writer
34 {
35
36
37
38
39
40
41
42
43 private static final String NAMESPACE = null;
44
45
46
47
48 private String fileComment = null;
49
50
51
52
53
54
55
56
57
58
59
60 public void setFileComment( String fileComment )
61 {
62 this.fileComment = fileComment;
63 }
64
65
66
67
68
69
70
71
72 public void write( Writer writer, ProfilesRoot profilesRoot )
73 throws java.io.IOException
74 {
75 XmlSerializer serializer = new MXSerializer();
76 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
77 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
78 serializer.setOutput( writer );
79 serializer.startDocument( profilesRoot.getModelEncoding(), null );
80 writeProfilesRoot( profilesRoot, "profilesXml", serializer );
81 serializer.endDocument();
82 }
83
84
85
86
87
88
89
90
91 public void write( OutputStream stream, ProfilesRoot profilesRoot )
92 throws java.io.IOException
93 {
94 XmlSerializer serializer = new MXSerializer();
95 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
96 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
97 serializer.setOutput( stream, profilesRoot.getModelEncoding() );
98 serializer.startDocument( profilesRoot.getModelEncoding(), null );
99 writeProfilesRoot( profilesRoot, "profilesXml", serializer );
100 serializer.endDocument();
101 }
102
103
104
105
106
107
108
109
110
111 private void writeActivation( Activation activation, String tagName, XmlSerializer serializer )
112 throws java.io.IOException
113 {
114 serializer.startTag( NAMESPACE, tagName );
115 if ( activation.isActiveByDefault() != false )
116 {
117 serializer.startTag( NAMESPACE, "activeByDefault" ).text( String.valueOf( activation.isActiveByDefault() ) ).endTag( NAMESPACE, "activeByDefault" );
118 }
119 if ( activation.getJdk() != null )
120 {
121 serializer.startTag( NAMESPACE, "jdk" ).text( activation.getJdk() ).endTag( NAMESPACE, "jdk" );
122 }
123 if ( activation.getOs() != null )
124 {
125 writeActivationOS( (ActivationOS) activation.getOs(), "os", serializer );
126 }
127 if ( activation.getProperty() != null )
128 {
129 writeActivationProperty( (ActivationProperty) activation.getProperty(), "property", serializer );
130 }
131 if ( activation.getFile() != null )
132 {
133 writeActivationFile( (ActivationFile) activation.getFile(), "file", serializer );
134 }
135 serializer.endTag( NAMESPACE, tagName );
136 }
137
138
139
140
141
142
143
144
145
146 private void writeActivationFile( ActivationFile activationFile, String tagName, XmlSerializer serializer )
147 throws java.io.IOException
148 {
149 serializer.startTag( NAMESPACE, tagName );
150 if ( activationFile.getMissing() != null )
151 {
152 serializer.startTag( NAMESPACE, "missing" ).text( activationFile.getMissing() ).endTag( NAMESPACE, "missing" );
153 }
154 if ( activationFile.getExists() != null )
155 {
156 serializer.startTag( NAMESPACE, "exists" ).text( activationFile.getExists() ).endTag( NAMESPACE, "exists" );
157 }
158 serializer.endTag( NAMESPACE, tagName );
159 }
160
161
162
163
164
165
166
167
168
169 private void writeActivationOS( ActivationOS activationOS, String tagName, XmlSerializer serializer )
170 throws java.io.IOException
171 {
172 serializer.startTag( NAMESPACE, tagName );
173 if ( activationOS.getName() != null )
174 {
175 serializer.startTag( NAMESPACE, "name" ).text( activationOS.getName() ).endTag( NAMESPACE, "name" );
176 }
177 if ( activationOS.getFamily() != null )
178 {
179 serializer.startTag( NAMESPACE, "family" ).text( activationOS.getFamily() ).endTag( NAMESPACE, "family" );
180 }
181 if ( activationOS.getArch() != null )
182 {
183 serializer.startTag( NAMESPACE, "arch" ).text( activationOS.getArch() ).endTag( NAMESPACE, "arch" );
184 }
185 if ( activationOS.getVersion() != null )
186 {
187 serializer.startTag( NAMESPACE, "version" ).text( activationOS.getVersion() ).endTag( NAMESPACE, "version" );
188 }
189 serializer.endTag( NAMESPACE, tagName );
190 }
191
192
193
194
195
196
197
198
199
200 private void writeActivationProperty( ActivationProperty activationProperty, String tagName, XmlSerializer serializer )
201 throws java.io.IOException
202 {
203 serializer.startTag( NAMESPACE, tagName );
204 if ( activationProperty.getName() != null )
205 {
206 serializer.startTag( NAMESPACE, "name" ).text( activationProperty.getName() ).endTag( NAMESPACE, "name" );
207 }
208 if ( activationProperty.getValue() != null )
209 {
210 serializer.startTag( NAMESPACE, "value" ).text( activationProperty.getValue() ).endTag( NAMESPACE, "value" );
211 }
212 serializer.endTag( NAMESPACE, tagName );
213 }
214
215
216
217
218
219
220
221
222
223 private void writeProfile( Profile profile, String tagName, XmlSerializer serializer )
224 throws java.io.IOException
225 {
226 serializer.startTag( NAMESPACE, tagName );
227 if ( profile.getId() != null )
228 {
229 serializer.startTag( NAMESPACE, "id" ).text( profile.getId() ).endTag( NAMESPACE, "id" );
230 }
231 if ( profile.getActivation() != null )
232 {
233 writeActivation( (Activation) profile.getActivation(), "activation", serializer );
234 }
235 if ( ( profile.getProperties() != null ) && ( profile.getProperties().size() > 0 ) )
236 {
237 serializer.startTag( NAMESPACE, "properties" );
238 for ( Iterator iter = profile.getProperties().keySet().iterator(); iter.hasNext(); )
239 {
240 String key = (String) iter.next();
241 String value = (String) profile.getProperties().get( key );
242 serializer.startTag( NAMESPACE, key ).text( value ).endTag( NAMESPACE, key );
243 }
244 serializer.endTag( NAMESPACE, "properties" );
245 }
246 if ( ( profile.getRepositories() != null ) && ( profile.getRepositories().size() > 0 ) )
247 {
248 serializer.startTag( NAMESPACE, "repositories" );
249 for ( Iterator iter = profile.getRepositories().iterator(); iter.hasNext(); )
250 {
251 Repository o = (Repository) iter.next();
252 writeRepository( o, "repository", serializer );
253 }
254 serializer.endTag( NAMESPACE, "repositories" );
255 }
256 if ( ( profile.getPluginRepositories() != null ) && ( profile.getPluginRepositories().size() > 0 ) )
257 {
258 serializer.startTag( NAMESPACE, "pluginRepositories" );
259 for ( Iterator iter = profile.getPluginRepositories().iterator(); iter.hasNext(); )
260 {
261 Repository o = (Repository) iter.next();
262 writeRepository( o, "pluginRepository", serializer );
263 }
264 serializer.endTag( NAMESPACE, "pluginRepositories" );
265 }
266 serializer.endTag( NAMESPACE, tagName );
267 }
268
269
270
271
272
273
274
275
276
277 private void writeProfilesRoot( ProfilesRoot profilesRoot, String tagName, XmlSerializer serializer )
278 throws java.io.IOException
279 {
280 if ( this.fileComment != null )
281 {
282 serializer.comment(this.fileComment);
283 }
284 serializer.setPrefix( "", "http://maven.apache.org/PROFILES/1.0.0" );
285 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
286 serializer.startTag( NAMESPACE, tagName );
287 serializer.attribute( "", "xsi:schemaLocation", "http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd" );
288 if ( ( profilesRoot.getProfiles() != null ) && ( profilesRoot.getProfiles().size() > 0 ) )
289 {
290 serializer.startTag( NAMESPACE, "profiles" );
291 for ( Iterator iter = profilesRoot.getProfiles().iterator(); iter.hasNext(); )
292 {
293 Profile o = (Profile) iter.next();
294 writeProfile( o, "profile", serializer );
295 }
296 serializer.endTag( NAMESPACE, "profiles" );
297 }
298 if ( ( profilesRoot.getActiveProfiles() != null ) && ( profilesRoot.getActiveProfiles().size() > 0 ) )
299 {
300 serializer.startTag( NAMESPACE, "activeProfiles" );
301 for ( Iterator iter = profilesRoot.getActiveProfiles().iterator(); iter.hasNext(); )
302 {
303 String activeProfile = (String) iter.next();
304 serializer.startTag( NAMESPACE, "activeProfile" ).text( activeProfile ).endTag( NAMESPACE, "activeProfile" );
305 }
306 serializer.endTag( NAMESPACE, "activeProfiles" );
307 }
308 serializer.endTag( NAMESPACE, tagName );
309 }
310
311
312
313
314
315
316
317
318
319 private void writeRepository( Repository repository, String tagName, XmlSerializer serializer )
320 throws java.io.IOException
321 {
322 serializer.startTag( NAMESPACE, tagName );
323 if ( repository.getReleases() != null )
324 {
325 writeRepositoryPolicy( (RepositoryPolicy) repository.getReleases(), "releases", serializer );
326 }
327 if ( repository.getSnapshots() != null )
328 {
329 writeRepositoryPolicy( (RepositoryPolicy) repository.getSnapshots(), "snapshots", serializer );
330 }
331 if ( repository.getId() != null )
332 {
333 serializer.startTag( NAMESPACE, "id" ).text( repository.getId() ).endTag( NAMESPACE, "id" );
334 }
335 if ( repository.getName() != null )
336 {
337 serializer.startTag( NAMESPACE, "name" ).text( repository.getName() ).endTag( NAMESPACE, "name" );
338 }
339 if ( repository.getUrl() != null )
340 {
341 serializer.startTag( NAMESPACE, "url" ).text( repository.getUrl() ).endTag( NAMESPACE, "url" );
342 }
343 if ( ( repository.getLayout() != null ) && !repository.getLayout().equals( "default" ) )
344 {
345 serializer.startTag( NAMESPACE, "layout" ).text( repository.getLayout() ).endTag( NAMESPACE, "layout" );
346 }
347 serializer.endTag( NAMESPACE, tagName );
348 }
349
350
351
352
353
354
355
356
357
358 private void writeRepositoryBase( RepositoryBase repositoryBase, String tagName, XmlSerializer serializer )
359 throws java.io.IOException
360 {
361 serializer.startTag( NAMESPACE, tagName );
362 if ( repositoryBase.getId() != null )
363 {
364 serializer.startTag( NAMESPACE, "id" ).text( repositoryBase.getId() ).endTag( NAMESPACE, "id" );
365 }
366 if ( repositoryBase.getName() != null )
367 {
368 serializer.startTag( NAMESPACE, "name" ).text( repositoryBase.getName() ).endTag( NAMESPACE, "name" );
369 }
370 if ( repositoryBase.getUrl() != null )
371 {
372 serializer.startTag( NAMESPACE, "url" ).text( repositoryBase.getUrl() ).endTag( NAMESPACE, "url" );
373 }
374 if ( ( repositoryBase.getLayout() != null ) && !repositoryBase.getLayout().equals( "default" ) )
375 {
376 serializer.startTag( NAMESPACE, "layout" ).text( repositoryBase.getLayout() ).endTag( NAMESPACE, "layout" );
377 }
378 serializer.endTag( NAMESPACE, tagName );
379 }
380
381
382
383
384
385
386
387
388
389 private void writeRepositoryPolicy( RepositoryPolicy repositoryPolicy, String tagName, XmlSerializer serializer )
390 throws java.io.IOException
391 {
392 serializer.startTag( NAMESPACE, tagName );
393 if ( repositoryPolicy.isEnabled() != true )
394 {
395 serializer.startTag( NAMESPACE, "enabled" ).text( String.valueOf( repositoryPolicy.isEnabled() ) ).endTag( NAMESPACE, "enabled" );
396 }
397 if ( repositoryPolicy.getUpdatePolicy() != null )
398 {
399 serializer.startTag( NAMESPACE, "updatePolicy" ).text( repositoryPolicy.getUpdatePolicy() ).endTag( NAMESPACE, "updatePolicy" );
400 }
401 if ( repositoryPolicy.getChecksumPolicy() != null )
402 {
403 serializer.startTag( NAMESPACE, "checksumPolicy" ).text( repositoryPolicy.getChecksumPolicy() ).endTag( NAMESPACE, "checksumPolicy" );
404 }
405 serializer.endTag( NAMESPACE, tagName );
406 }
407
408 }