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