1
2
3
4
5
6 package org.apache.maven.plugin.lifecycle.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.plugin.lifecycle.Execution;
16 import org.apache.maven.plugin.lifecycle.Lifecycle;
17 import org.apache.maven.plugin.lifecycle.LifecycleConfiguration;
18 import org.apache.maven.plugin.lifecycle.Phase;
19 import org.codehaus.plexus.util.xml.Xpp3Dom;
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 LifecycleMappingsXpp3Writer
30 {
31
32
33
34
35
36
37
38
39 private static final String NAMESPACE = null;
40
41
42
43
44 private String fileComment = null;
45
46
47
48
49
50
51
52
53
54
55
56 public void setFileComment( String fileComment )
57 {
58 this.fileComment = fileComment;
59 }
60
61
62
63
64
65
66
67
68 public void write( Writer writer, LifecycleConfiguration lifecycleConfiguration )
69 throws java.io.IOException
70 {
71 XmlSerializer serializer = new MXSerializer();
72 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
73 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
74 serializer.setOutput( writer );
75 serializer.startDocument( lifecycleConfiguration.getModelEncoding(), null );
76 writeLifecycleConfiguration( lifecycleConfiguration, "lifecycles", serializer );
77 serializer.endDocument();
78 }
79
80
81
82
83
84
85
86
87 public void write( OutputStream stream, LifecycleConfiguration lifecycleConfiguration )
88 throws java.io.IOException
89 {
90 XmlSerializer serializer = new MXSerializer();
91 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
92 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
93 serializer.setOutput( stream, lifecycleConfiguration.getModelEncoding() );
94 serializer.startDocument( lifecycleConfiguration.getModelEncoding(), null );
95 writeLifecycleConfiguration( lifecycleConfiguration, "lifecycles", serializer );
96 serializer.endDocument();
97 }
98
99
100
101
102
103
104
105
106
107 private void writeExecution( Execution execution, String tagName, XmlSerializer serializer )
108 throws java.io.IOException
109 {
110 serializer.startTag( NAMESPACE, tagName );
111 if ( execution.getConfiguration() != null )
112 {
113 ((Xpp3Dom) execution.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
114 }
115 if ( ( execution.getGoals() != null ) && ( execution.getGoals().size() > 0 ) )
116 {
117 serializer.startTag( NAMESPACE, "goals" );
118 for ( Iterator iter = execution.getGoals().iterator(); iter.hasNext(); )
119 {
120 String goal = (String) iter.next();
121 serializer.startTag( NAMESPACE, "goal" ).text( goal ).endTag( NAMESPACE, "goal" );
122 }
123 serializer.endTag( NAMESPACE, "goals" );
124 }
125 serializer.endTag( NAMESPACE, tagName );
126 }
127
128
129
130
131
132
133
134
135
136 private void writeLifecycle( Lifecycle lifecycle, String tagName, XmlSerializer serializer )
137 throws java.io.IOException
138 {
139 serializer.startTag( NAMESPACE, tagName );
140 if ( lifecycle.getId() != null )
141 {
142 serializer.startTag( NAMESPACE, "id" ).text( lifecycle.getId() ).endTag( NAMESPACE, "id" );
143 }
144 if ( ( lifecycle.getPhases() != null ) && ( lifecycle.getPhases().size() > 0 ) )
145 {
146 serializer.startTag( NAMESPACE, "phases" );
147 for ( Iterator iter = lifecycle.getPhases().iterator(); iter.hasNext(); )
148 {
149 Phase o = (Phase) iter.next();
150 writePhase( o, "phase", serializer );
151 }
152 serializer.endTag( NAMESPACE, "phases" );
153 }
154 serializer.endTag( NAMESPACE, tagName );
155 }
156
157
158
159
160
161
162
163
164
165 private void writeLifecycleConfiguration( LifecycleConfiguration lifecycleConfiguration, String tagName, XmlSerializer serializer )
166 throws java.io.IOException
167 {
168 if ( this.fileComment != null )
169 {
170 serializer.comment(this.fileComment);
171 }
172 serializer.setPrefix( "", "http://maven.apache.org/LIFECYCLE/1.0.0" );
173 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
174 serializer.startTag( NAMESPACE, tagName );
175 serializer.attribute( "", "xsi:schemaLocation", "http://maven.apache.org/LIFECYCLE/1.0.0 http://maven.apache.org/xsd/lifecycle-1.0.0.xsd" );
176 if ( ( lifecycleConfiguration.getLifecycles() != null ) && ( lifecycleConfiguration.getLifecycles().size() > 0 ) )
177 {
178 for ( Iterator iter = lifecycleConfiguration.getLifecycles().iterator(); iter.hasNext(); )
179 {
180 Lifecycle o = (Lifecycle) iter.next();
181 writeLifecycle( o, "lifecycle", serializer );
182 }
183 }
184 serializer.endTag( NAMESPACE, tagName );
185 }
186
187
188
189
190
191
192
193
194
195 private void writePhase( Phase phase, String tagName, XmlSerializer serializer )
196 throws java.io.IOException
197 {
198 serializer.startTag( NAMESPACE, tagName );
199 if ( phase.getId() != null )
200 {
201 serializer.startTag( NAMESPACE, "id" ).text( phase.getId() ).endTag( NAMESPACE, "id" );
202 }
203 if ( ( phase.getExecutions() != null ) && ( phase.getExecutions().size() > 0 ) )
204 {
205 serializer.startTag( NAMESPACE, "executions" );
206 for ( Iterator iter = phase.getExecutions().iterator(); iter.hasNext(); )
207 {
208 Execution o = (Execution) iter.next();
209 writeExecution( o, "execution", serializer );
210 }
211 serializer.endTag( NAMESPACE, "executions" );
212 }
213 if ( phase.getConfiguration() != null )
214 {
215 ((Xpp3Dom) phase.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
216 }
217 serializer.endTag( NAMESPACE, tagName );
218 }
219
220 }