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