1
2
3
4
5
6
7
8 package org.apache.maven.plugin.tools.model.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.plugin.tools.model.Component;
20 import org.apache.maven.plugin.tools.model.LifecycleExecution;
21 import org.apache.maven.plugin.tools.model.Mojo;
22 import org.apache.maven.plugin.tools.model.Parameter;
23 import org.apache.maven.plugin.tools.model.PluginMetadata;
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 PluginMetadataXpp3Writer
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, PluginMetadata pluginMetadata )
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( pluginMetadata.getModelEncoding(), null );
65 writePluginMetadata( pluginMetadata, "pluginMetadata", serializer );
66 serializer.endDocument();
67 }
68
69
70
71
72
73
74
75
76 public void write( OutputStream stream, PluginMetadata pluginMetadata )
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, pluginMetadata.getModelEncoding() );
83 serializer.startDocument( pluginMetadata.getModelEncoding(), null );
84 writePluginMetadata( pluginMetadata, "pluginMetadata", serializer );
85 serializer.endDocument();
86 }
87
88
89
90
91
92
93
94
95
96 private void writeComponent( Component component, String tagName, XmlSerializer serializer )
97 throws java.io.IOException
98 {
99 serializer.startTag( NAMESPACE, tagName );
100 if ( component.getRole() != null )
101 {
102 serializer.startTag( NAMESPACE, "role" ).text( component.getRole() ).endTag( NAMESPACE, "role" );
103 }
104 if ( component.getHint() != null )
105 {
106 serializer.startTag( NAMESPACE, "hint" ).text( component.getHint() ).endTag( NAMESPACE, "hint" );
107 }
108 serializer.endTag( NAMESPACE, tagName );
109 }
110
111
112
113
114
115
116
117
118
119 private void writeLifecycleExecution( LifecycleExecution lifecycleExecution, String tagName, XmlSerializer serializer )
120 throws java.io.IOException
121 {
122 serializer.startTag( NAMESPACE, tagName );
123 if ( lifecycleExecution.getLifecycle() != null )
124 {
125 serializer.startTag( NAMESPACE, "lifecycle" ).text( lifecycleExecution.getLifecycle() ).endTag( NAMESPACE, "lifecycle" );
126 }
127 if ( lifecycleExecution.getPhase() != null )
128 {
129 serializer.startTag( NAMESPACE, "phase" ).text( lifecycleExecution.getPhase() ).endTag( NAMESPACE, "phase" );
130 }
131 if ( lifecycleExecution.getGoal() != null )
132 {
133 serializer.startTag( NAMESPACE, "goal" ).text( lifecycleExecution.getGoal() ).endTag( NAMESPACE, "goal" );
134 }
135 serializer.endTag( NAMESPACE, tagName );
136 }
137
138
139
140
141
142
143
144
145
146 private void writeMojo( Mojo mojo, String tagName, XmlSerializer serializer )
147 throws java.io.IOException
148 {
149 serializer.startTag( NAMESPACE, tagName );
150 if ( mojo.getGoal() != null )
151 {
152 serializer.startTag( NAMESPACE, "goal" ).text( mojo.getGoal() ).endTag( NAMESPACE, "goal" );
153 }
154 if ( mojo.getPhase() != null )
155 {
156 serializer.startTag( NAMESPACE, "phase" ).text( mojo.getPhase() ).endTag( NAMESPACE, "phase" );
157 }
158 if ( mojo.isAggregator() != false )
159 {
160 serializer.startTag( NAMESPACE, "aggregator" ).text( String.valueOf( mojo.isAggregator() ) ).endTag( NAMESPACE, "aggregator" );
161 }
162 if ( mojo.getRequiresDependencyResolution() != null )
163 {
164 serializer.startTag( NAMESPACE, "requiresDependencyResolution" ).text( mojo.getRequiresDependencyResolution() ).endTag( NAMESPACE, "requiresDependencyResolution" );
165 }
166 if ( mojo.isRequiresProject() != false )
167 {
168 serializer.startTag( NAMESPACE, "requiresProject" ).text( String.valueOf( mojo.isRequiresProject() ) ).endTag( NAMESPACE, "requiresProject" );
169 }
170 if ( mojo.isRequiresReports() != false )
171 {
172 serializer.startTag( NAMESPACE, "requiresReports" ).text( String.valueOf( mojo.isRequiresReports() ) ).endTag( NAMESPACE, "requiresReports" );
173 }
174 if ( mojo.isRequiresOnline() != false )
175 {
176 serializer.startTag( NAMESPACE, "requiresOnline" ).text( String.valueOf( mojo.isRequiresOnline() ) ).endTag( NAMESPACE, "requiresOnline" );
177 }
178 if ( mojo.isInheritByDefault() != false )
179 {
180 serializer.startTag( NAMESPACE, "inheritByDefault" ).text( String.valueOf( mojo.isInheritByDefault() ) ).endTag( NAMESPACE, "inheritByDefault" );
181 }
182 if ( mojo.isRequiresDirectInvocation() != false )
183 {
184 serializer.startTag( NAMESPACE, "requiresDirectInvocation" ).text( String.valueOf( mojo.isRequiresDirectInvocation() ) ).endTag( NAMESPACE, "requiresDirectInvocation" );
185 }
186 if ( mojo.getExecution() != null )
187 {
188 writeLifecycleExecution( (LifecycleExecution) mojo.getExecution(), "execution", serializer );
189 }
190 if ( ( mojo.getComponents() != null ) && ( mojo.getComponents().size() > 0 ) )
191 {
192 serializer.startTag( NAMESPACE, "components" );
193 for ( Iterator iter = mojo.getComponents().iterator(); iter.hasNext(); )
194 {
195 Component o = (Component) iter.next();
196 writeComponent( o, "component", serializer );
197 }
198 serializer.endTag( NAMESPACE, "components" );
199 }
200 if ( ( mojo.getParameters() != null ) && ( mojo.getParameters().size() > 0 ) )
201 {
202 serializer.startTag( NAMESPACE, "parameters" );
203 for ( Iterator iter = mojo.getParameters().iterator(); iter.hasNext(); )
204 {
205 Parameter o = (Parameter) iter.next();
206 writeParameter( o, "parameter", serializer );
207 }
208 serializer.endTag( NAMESPACE, "parameters" );
209 }
210 if ( mojo.getDescription() != null )
211 {
212 serializer.startTag( NAMESPACE, "description" ).text( mojo.getDescription() ).endTag( NAMESPACE, "description" );
213 }
214 if ( mojo.getDeprecation() != null )
215 {
216 serializer.startTag( NAMESPACE, "deprecated" ).text( mojo.getDeprecation() ).endTag( NAMESPACE, "deprecated" );
217 }
218 if ( mojo.getSince() != null )
219 {
220 serializer.startTag( NAMESPACE, "since" ).text( mojo.getSince() ).endTag( NAMESPACE, "since" );
221 }
222 if ( mojo.getCall() != null )
223 {
224 serializer.startTag( NAMESPACE, "call" ).text( mojo.getCall() ).endTag( NAMESPACE, "call" );
225 }
226 serializer.endTag( NAMESPACE, tagName );
227 }
228
229
230
231
232
233
234
235
236
237 private void writeParameter( Parameter parameter, String tagName, XmlSerializer serializer )
238 throws java.io.IOException
239 {
240 serializer.startTag( NAMESPACE, tagName );
241 if ( parameter.getName() != null )
242 {
243 serializer.startTag( NAMESPACE, "name" ).text( parameter.getName() ).endTag( NAMESPACE, "name" );
244 }
245 if ( parameter.getAlias() != null )
246 {
247 serializer.startTag( NAMESPACE, "alias" ).text( parameter.getAlias() ).endTag( NAMESPACE, "alias" );
248 }
249 if ( parameter.getProperty() != null )
250 {
251 serializer.startTag( NAMESPACE, "property" ).text( parameter.getProperty() ).endTag( NAMESPACE, "property" );
252 }
253 if ( parameter.isRequired() != false )
254 {
255 serializer.startTag( NAMESPACE, "required" ).text( String.valueOf( parameter.isRequired() ) ).endTag( NAMESPACE, "required" );
256 }
257 if ( parameter.isReadonly() != false )
258 {
259 serializer.startTag( NAMESPACE, "readonly" ).text( String.valueOf( parameter.isReadonly() ) ).endTag( NAMESPACE, "readonly" );
260 }
261 if ( parameter.getExpression() != null )
262 {
263 serializer.startTag( NAMESPACE, "expression" ).text( parameter.getExpression() ).endTag( NAMESPACE, "expression" );
264 }
265 if ( parameter.getDefaultValue() != null )
266 {
267 serializer.startTag( NAMESPACE, "defaultValue" ).text( parameter.getDefaultValue() ).endTag( NAMESPACE, "defaultValue" );
268 }
269 if ( parameter.getType() != null )
270 {
271 serializer.startTag( NAMESPACE, "type" ).text( parameter.getType() ).endTag( NAMESPACE, "type" );
272 }
273 if ( parameter.getDescription() != null )
274 {
275 serializer.startTag( NAMESPACE, "description" ).text( parameter.getDescription() ).endTag( NAMESPACE, "description" );
276 }
277 if ( parameter.getDeprecation() != null )
278 {
279 serializer.startTag( NAMESPACE, "deprecated" ).text( parameter.getDeprecation() ).endTag( NAMESPACE, "deprecated" );
280 }
281 if ( parameter.getSince() != null )
282 {
283 serializer.startTag( NAMESPACE, "since" ).text( parameter.getSince() ).endTag( NAMESPACE, "since" );
284 }
285 serializer.endTag( NAMESPACE, tagName );
286 }
287
288
289
290
291
292
293
294
295
296 private void writePluginMetadata( PluginMetadata pluginMetadata, String tagName, XmlSerializer serializer )
297 throws java.io.IOException
298 {
299 serializer.startTag( NAMESPACE, tagName );
300 if ( ( pluginMetadata.getMojos() != null ) && ( pluginMetadata.getMojos().size() > 0 ) )
301 {
302 serializer.startTag( NAMESPACE, "mojos" );
303 for ( Iterator iter = pluginMetadata.getMojos().iterator(); iter.hasNext(); )
304 {
305 Mojo o = (Mojo) iter.next();
306 writeMojo( o, "mojo", serializer );
307 }
308 serializer.endTag( NAMESPACE, "mojos" );
309 }
310 serializer.endTag( NAMESPACE, tagName );
311 }
312
313 }