1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.apache.maven.archetype.model.io.xpp3;
25
26
27
28
29
30 import java.io.OutputStream;
31 import java.io.Writer;
32 import java.util.Iterator;
33 import org.apache.maven.archetype.model.ArchetypeModel;
34 import org.apache.maven.archetype.model.Resource;
35 import org.apache.maven.archetype.model.Source;
36 import org.codehaus.plexus.util.xml.pull.MXSerializer;
37 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
38
39
40
41
42
43
44 @SuppressWarnings( "all" )
45 public class ArchetypeXpp3Writer
46 {
47
48
49
50
51
52
53
54
55 private static final String NAMESPACE = null;
56
57
58
59
60 private String fileComment = null;
61
62
63
64
65
66
67
68
69
70
71
72 public void setFileComment( String fileComment )
73 {
74 this.fileComment = fileComment;
75 }
76
77
78
79
80
81
82
83
84 public void write( Writer writer, ArchetypeModel archetypeModel )
85 throws java.io.IOException
86 {
87 XmlSerializer serializer = new MXSerializer();
88 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
89 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
90 serializer.setOutput( writer );
91 serializer.startDocument( archetypeModel.getModelEncoding(), null );
92 writeArchetypeModel( archetypeModel, "archetype", serializer );
93 serializer.endDocument();
94 }
95
96
97
98
99
100
101
102
103 public void write( OutputStream stream, ArchetypeModel archetypeModel )
104 throws java.io.IOException
105 {
106 XmlSerializer serializer = new MXSerializer();
107 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
108 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
109 serializer.setOutput( stream, archetypeModel.getModelEncoding() );
110 serializer.startDocument( archetypeModel.getModelEncoding(), null );
111 writeArchetypeModel( archetypeModel, "archetype", serializer );
112 serializer.endDocument();
113 }
114
115
116
117
118
119
120
121
122
123 private void writeArchetypeModel( ArchetypeModel archetypeModel, String tagName, XmlSerializer serializer )
124 throws java.io.IOException
125 {
126 if ( this.fileComment != null )
127 {
128 serializer.comment(this.fileComment);
129 }
130 serializer.setPrefix( "", "https://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" );
131 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
132 serializer.startTag( NAMESPACE, tagName );
133 serializer.attribute( "", "xsi:schemaLocation", "https://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0 https://maven.apache.org/xsd/archetype-1.0.0.xsd" );
134 if ( archetypeModel.getId() != null )
135 {
136 serializer.startTag( NAMESPACE, "id" ).text( archetypeModel.getId() ).endTag( NAMESPACE, "id" );
137 }
138 if ( archetypeModel.isAllowPartial() != false )
139 {
140 serializer.startTag( NAMESPACE, "allowPartial" ).text( String.valueOf( archetypeModel.isAllowPartial() ) ).endTag( NAMESPACE, "allowPartial" );
141 }
142 if ( ( archetypeModel.getSources() != null ) && ( archetypeModel.getSources().size() > 0 ) )
143 {
144 serializer.startTag( NAMESPACE, "sources" );
145 for ( Iterator iter = archetypeModel.getSources().iterator(); iter.hasNext(); )
146 {
147 Source o = (Source) iter.next();
148 writeSource( o, "source", serializer );
149 }
150 serializer.endTag( NAMESPACE, "sources" );
151 }
152 if ( ( archetypeModel.getResources() != null ) && ( archetypeModel.getResources().size() > 0 ) )
153 {
154 serializer.startTag( NAMESPACE, "resources" );
155 for ( Iterator iter = archetypeModel.getResources().iterator(); iter.hasNext(); )
156 {
157 Resource o = (Resource) iter.next();
158 writeResource( o, "resource", serializer );
159 }
160 serializer.endTag( NAMESPACE, "resources" );
161 }
162 if ( ( archetypeModel.getTestSources() != null ) && ( archetypeModel.getTestSources().size() > 0 ) )
163 {
164 serializer.startTag( NAMESPACE, "testSources" );
165 for ( Iterator iter = archetypeModel.getTestSources().iterator(); iter.hasNext(); )
166 {
167 Source o = (Source) iter.next();
168 writeSource( o, "source", serializer );
169 }
170 serializer.endTag( NAMESPACE, "testSources" );
171 }
172 if ( ( archetypeModel.getTestResources() != null ) && ( archetypeModel.getTestResources().size() > 0 ) )
173 {
174 serializer.startTag( NAMESPACE, "testResources" );
175 for ( Iterator iter = archetypeModel.getTestResources().iterator(); iter.hasNext(); )
176 {
177 Resource o = (Resource) iter.next();
178 writeResource( o, "resource", serializer );
179 }
180 serializer.endTag( NAMESPACE, "testResources" );
181 }
182 if ( ( archetypeModel.getSiteResources() != null ) && ( archetypeModel.getSiteResources().size() > 0 ) )
183 {
184 serializer.startTag( NAMESPACE, "siteResources" );
185 for ( Iterator iter = archetypeModel.getSiteResources().iterator(); iter.hasNext(); )
186 {
187 Resource o = (Resource) iter.next();
188 writeResource( o, "resource", serializer );
189 }
190 serializer.endTag( NAMESPACE, "siteResources" );
191 }
192 serializer.endTag( NAMESPACE, tagName );
193 }
194
195
196
197
198
199
200
201
202
203 private void writeResource( Resource resource, String tagName, XmlSerializer serializer )
204 throws java.io.IOException
205 {
206 serializer.startTag( NAMESPACE, tagName );
207 if ( resource.getEncoding() != null )
208 {
209 serializer.attribute( NAMESPACE, "encoding", resource.getEncoding() );
210 }
211 if ( resource.isFiltered() != true )
212 {
213 serializer.attribute( NAMESPACE, "filtered", String.valueOf( resource.isFiltered() ) );
214 }
215 serializer.text( resource.getFile() );
216 serializer.endTag( NAMESPACE, tagName );
217 }
218
219
220
221
222
223
224
225
226
227 private void writeSource( Source source, String tagName, XmlSerializer serializer )
228 throws java.io.IOException
229 {
230 serializer.startTag( NAMESPACE, tagName );
231 if ( source.getEncoding() != null )
232 {
233 serializer.attribute( NAMESPACE, "encoding", source.getEncoding() );
234 }
235 serializer.text( source.getFile() );
236 serializer.endTag( NAMESPACE, tagName );
237 }
238
239 }