1
2
3
4
5
6 package org.apache.maven.archetype.metadata.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.archetype.metadata.AbstractArchetypeDescriptor;
16 import org.apache.maven.archetype.metadata.ArchetypeDescriptor;
17 import org.apache.maven.archetype.metadata.FileSet;
18 import org.apache.maven.archetype.metadata.ModuleDescriptor;
19 import org.apache.maven.archetype.metadata.RequiredProperty;
20 import org.codehaus.plexus.util.xml.pull.MXSerializer;
21 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
22
23
24
25
26
27
28 @SuppressWarnings( "all" )
29 public class ArchetypeDescriptorXpp3Writer
30 {
31
32
33
34
35
36
37
38
39 private static final String NAMESPACE = null;
40
41
42
43
44 private String fileComment = null;
45
46
47
48
49
50
51
52
53
54
55
56 public void setFileComment( String fileComment )
57 {
58 this.fileComment = fileComment;
59 }
60
61
62
63
64
65
66
67
68 public void write( Writer writer, ArchetypeDescriptor archetypeDescriptor )
69 throws java.io.IOException
70 {
71 XmlSerializer serializer = new MXSerializer();
72 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
73 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
74 serializer.setOutput( writer );
75 serializer.startDocument( archetypeDescriptor.getModelEncoding(), null );
76 writeArchetypeDescriptor( archetypeDescriptor, "archetype-descriptor", serializer );
77 serializer.endDocument();
78 }
79
80
81
82
83
84
85
86
87 public void write( OutputStream stream, ArchetypeDescriptor archetypeDescriptor )
88 throws java.io.IOException
89 {
90 XmlSerializer serializer = new MXSerializer();
91 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
92 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
93 serializer.setOutput( stream, archetypeDescriptor.getModelEncoding() );
94 serializer.startDocument( archetypeDescriptor.getModelEncoding(), null );
95 writeArchetypeDescriptor( archetypeDescriptor, "archetype-descriptor", serializer );
96 serializer.endDocument();
97 }
98
99
100
101
102
103
104
105
106
107 private void writeAbstractArchetypeDescriptor( AbstractArchetypeDescriptor abstractArchetypeDescriptor, String tagName, XmlSerializer serializer )
108 throws java.io.IOException
109 {
110 serializer.startTag( NAMESPACE, tagName );
111 if ( ( abstractArchetypeDescriptor.getFileSets() != null ) && ( abstractArchetypeDescriptor.getFileSets().size() > 0 ) )
112 {
113 serializer.startTag( NAMESPACE, "fileSets" );
114 for ( Iterator iter = abstractArchetypeDescriptor.getFileSets().iterator(); iter.hasNext(); )
115 {
116 FileSet o = (FileSet) iter.next();
117 writeFileSet( o, "fileSet", serializer );
118 }
119 serializer.endTag( NAMESPACE, "fileSets" );
120 }
121 if ( ( abstractArchetypeDescriptor.getModules() != null ) && ( abstractArchetypeDescriptor.getModules().size() > 0 ) )
122 {
123 serializer.startTag( NAMESPACE, "modules" );
124 for ( Iterator iter = abstractArchetypeDescriptor.getModules().iterator(); iter.hasNext(); )
125 {
126 ModuleDescriptor o = (ModuleDescriptor) iter.next();
127 writeModuleDescriptor( o, "module", serializer );
128 }
129 serializer.endTag( NAMESPACE, "modules" );
130 }
131 serializer.endTag( NAMESPACE, tagName );
132 }
133
134
135
136
137
138
139
140
141
142 private void writeArchetypeDescriptor( ArchetypeDescriptor archetypeDescriptor, String tagName, XmlSerializer serializer )
143 throws java.io.IOException
144 {
145 if ( this.fileComment != null )
146 {
147 serializer.comment(this.fileComment);
148 }
149 serializer.setPrefix( "", "https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0" );
150 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
151 serializer.startTag( NAMESPACE, tagName );
152 serializer.attribute( "", "xsi:schemaLocation", "https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" );
153 if ( archetypeDescriptor.getName() != null )
154 {
155 serializer.attribute( NAMESPACE, "name", archetypeDescriptor.getName() );
156 }
157 if ( archetypeDescriptor.isPartial() != false )
158 {
159 serializer.attribute( NAMESPACE, "partial", String.valueOf( archetypeDescriptor.isPartial() ) );
160 }
161 if ( ( archetypeDescriptor.getRequiredProperties() != null ) && ( archetypeDescriptor.getRequiredProperties().size() > 0 ) )
162 {
163 serializer.startTag( NAMESPACE, "requiredProperties" );
164 for ( Iterator iter = archetypeDescriptor.getRequiredProperties().iterator(); iter.hasNext(); )
165 {
166 RequiredProperty o = (RequiredProperty) iter.next();
167 writeRequiredProperty( o, "requiredProperty", serializer );
168 }
169 serializer.endTag( NAMESPACE, "requiredProperties" );
170 }
171 if ( ( archetypeDescriptor.getFileSets() != null ) && ( archetypeDescriptor.getFileSets().size() > 0 ) )
172 {
173 serializer.startTag( NAMESPACE, "fileSets" );
174 for ( Iterator iter = archetypeDescriptor.getFileSets().iterator(); iter.hasNext(); )
175 {
176 FileSet o = (FileSet) iter.next();
177 writeFileSet( o, "fileSet", serializer );
178 }
179 serializer.endTag( NAMESPACE, "fileSets" );
180 }
181 if ( ( archetypeDescriptor.getModules() != null ) && ( archetypeDescriptor.getModules().size() > 0 ) )
182 {
183 serializer.startTag( NAMESPACE, "modules" );
184 for ( Iterator iter = archetypeDescriptor.getModules().iterator(); iter.hasNext(); )
185 {
186 ModuleDescriptor o = (ModuleDescriptor) iter.next();
187 writeModuleDescriptor( o, "module", serializer );
188 }
189 serializer.endTag( NAMESPACE, "modules" );
190 }
191 serializer.endTag( NAMESPACE, tagName );
192 }
193
194
195
196
197
198
199
200
201
202 private void writeFileSet( FileSet fileSet, String tagName, XmlSerializer serializer )
203 throws java.io.IOException
204 {
205 serializer.startTag( NAMESPACE, tagName );
206 if ( fileSet.isFiltered() != false )
207 {
208 serializer.attribute( NAMESPACE, "filtered", String.valueOf( fileSet.isFiltered() ) );
209 }
210 if ( fileSet.isPackaged() != false )
211 {
212 serializer.attribute( NAMESPACE, "packaged", String.valueOf( fileSet.isPackaged() ) );
213 }
214 if ( fileSet.getEncoding() != null )
215 {
216 serializer.attribute( NAMESPACE, "encoding", fileSet.getEncoding() );
217 }
218 if ( fileSet.getDirectory() != null )
219 {
220 serializer.startTag( NAMESPACE, "directory" ).text( fileSet.getDirectory() ).endTag( NAMESPACE, "directory" );
221 }
222 if ( ( fileSet.getIncludes() != null ) && ( fileSet.getIncludes().size() > 0 ) )
223 {
224 serializer.startTag( NAMESPACE, "includes" );
225 for ( Iterator iter = fileSet.getIncludes().iterator(); iter.hasNext(); )
226 {
227 String include = (String) iter.next();
228 serializer.startTag( NAMESPACE, "include" ).text( include ).endTag( NAMESPACE, "include" );
229 }
230 serializer.endTag( NAMESPACE, "includes" );
231 }
232 if ( ( fileSet.getExcludes() != null ) && ( fileSet.getExcludes().size() > 0 ) )
233 {
234 serializer.startTag( NAMESPACE, "excludes" );
235 for ( Iterator iter = fileSet.getExcludes().iterator(); iter.hasNext(); )
236 {
237 String exclude = (String) iter.next();
238 serializer.startTag( NAMESPACE, "exclude" ).text( exclude ).endTag( NAMESPACE, "exclude" );
239 }
240 serializer.endTag( NAMESPACE, "excludes" );
241 }
242 serializer.endTag( NAMESPACE, tagName );
243 }
244
245
246
247
248
249
250
251
252
253 private void writeModuleDescriptor( ModuleDescriptor moduleDescriptor, String tagName, XmlSerializer serializer )
254 throws java.io.IOException
255 {
256 serializer.startTag( NAMESPACE, tagName );
257 if ( moduleDescriptor.getId() != null )
258 {
259 serializer.attribute( NAMESPACE, "id", moduleDescriptor.getId() );
260 }
261 if ( moduleDescriptor.getDir() != null )
262 {
263 serializer.attribute( NAMESPACE, "dir", moduleDescriptor.getDir() );
264 }
265 if ( moduleDescriptor.getName() != null )
266 {
267 serializer.attribute( NAMESPACE, "name", moduleDescriptor.getName() );
268 }
269 if ( ( moduleDescriptor.getFileSets() != null ) && ( moduleDescriptor.getFileSets().size() > 0 ) )
270 {
271 serializer.startTag( NAMESPACE, "fileSets" );
272 for ( Iterator iter = moduleDescriptor.getFileSets().iterator(); iter.hasNext(); )
273 {
274 FileSet o = (FileSet) iter.next();
275 writeFileSet( o, "fileSet", serializer );
276 }
277 serializer.endTag( NAMESPACE, "fileSets" );
278 }
279 if ( ( moduleDescriptor.getModules() != null ) && ( moduleDescriptor.getModules().size() > 0 ) )
280 {
281 serializer.startTag( NAMESPACE, "modules" );
282 for ( Iterator iter = moduleDescriptor.getModules().iterator(); iter.hasNext(); )
283 {
284 ModuleDescriptor o = (ModuleDescriptor) iter.next();
285 writeModuleDescriptor( o, "module", serializer );
286 }
287 serializer.endTag( NAMESPACE, "modules" );
288 }
289 serializer.endTag( NAMESPACE, tagName );
290 }
291
292
293
294
295
296
297
298
299
300 private void writeRequiredProperty( RequiredProperty requiredProperty, String tagName, XmlSerializer serializer )
301 throws java.io.IOException
302 {
303 serializer.startTag( NAMESPACE, tagName );
304 if ( requiredProperty.getKey() != null )
305 {
306 serializer.attribute( NAMESPACE, "key", requiredProperty.getKey() );
307 }
308 if ( requiredProperty.getDefaultValue() != null )
309 {
310 serializer.startTag( NAMESPACE, "defaultValue" ).text( requiredProperty.getDefaultValue() ).endTag( NAMESPACE, "defaultValue" );
311 }
312 if ( requiredProperty.getValidationRegex() != null )
313 {
314 serializer.startTag( NAMESPACE, "validationRegex" ).text( requiredProperty.getValidationRegex() ).endTag( NAMESPACE, "validationRegex" );
315 }
316 serializer.endTag( NAMESPACE, tagName );
317 }
318
319 }