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