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