1
2
3
4
5 package org.apache.maven.plugin.lifecycle.io.xpp3;
6
7
8
9
10
11 import java.io.Writer;
12 import java.text.DateFormat;
13 import java.util.Iterator;
14 import java.util.Locale;
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 public class LifecycleMappingsXpp3Writer {
29
30
31
32
33
34
35
36
37
38 private String NAMESPACE;
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public void write( Writer writer, LifecycleConfiguration lifecycleConfiguration )
53 throws java.io.IOException
54 {
55 XmlSerializer serializer = new MXSerializer();
56 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
57 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
58 serializer.setOutput( writer );
59 serializer.startDocument( lifecycleConfiguration.getModelEncoding(), null );
60 writeLifecycleConfiguration( lifecycleConfiguration, "lifecycles", serializer );
61 serializer.endDocument();
62 }
63
64
65
66
67
68
69
70
71
72 private void writeExecution( Execution execution, String tagName, XmlSerializer serializer )
73 throws java.io.IOException
74 {
75 if ( execution != null )
76 {
77 serializer.startTag( NAMESPACE, tagName );
78 if ( execution.getConfiguration() != null )
79 {
80 ((Xpp3Dom) execution.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
81 }
82 if ( execution.getGoals() != null && execution.getGoals().size() > 0 )
83 {
84 serializer.startTag( NAMESPACE, "goals" );
85 for ( Iterator iter = execution.getGoals().iterator(); iter.hasNext(); )
86 {
87 String goal = (String) iter.next();
88 serializer.startTag( NAMESPACE, "goal" ).text( goal ).endTag( NAMESPACE, "goal" );
89 }
90 serializer.endTag( NAMESPACE, "goals" );
91 }
92 serializer.endTag( NAMESPACE, tagName );
93 }
94 }
95
96
97
98
99
100
101
102
103
104 private void writeLifecycle( Lifecycle lifecycle, String tagName, XmlSerializer serializer )
105 throws java.io.IOException
106 {
107 if ( lifecycle != null )
108 {
109 serializer.startTag( NAMESPACE, tagName );
110 if ( lifecycle.getId() != null )
111 {
112 serializer.startTag( NAMESPACE, "id" ).text( lifecycle.getId() ).endTag( NAMESPACE, "id" );
113 }
114 if ( lifecycle.getPhases() != null && lifecycle.getPhases().size() > 0 )
115 {
116 serializer.startTag( NAMESPACE, "phases" );
117 for ( Iterator iter = lifecycle.getPhases().iterator(); iter.hasNext(); )
118 {
119 Phase o = (Phase) iter.next();
120 writePhase( o, "phase", serializer );
121 }
122 serializer.endTag( NAMESPACE, "phases" );
123 }
124 serializer.endTag( NAMESPACE, tagName );
125 }
126 }
127
128
129
130
131
132
133
134
135
136 private void writeLifecycleConfiguration( LifecycleConfiguration lifecycleConfiguration, String tagName, XmlSerializer serializer )
137 throws java.io.IOException
138 {
139 if ( lifecycleConfiguration != null )
140 {
141 serializer.startTag( NAMESPACE, tagName );
142 if ( lifecycleConfiguration.getLifecycles() != null && lifecycleConfiguration.getLifecycles().size() > 0 )
143 {
144 for ( Iterator iter = lifecycleConfiguration.getLifecycles().iterator(); iter.hasNext(); )
145 {
146 Lifecycle o = (Lifecycle) iter.next();
147 writeLifecycle( o, "lifecycle", serializer );
148 }
149 }
150 serializer.endTag( NAMESPACE, tagName );
151 }
152 }
153
154
155
156
157
158
159
160
161
162 private void writePhase( Phase phase, String tagName, XmlSerializer serializer )
163 throws java.io.IOException
164 {
165 if ( phase != null )
166 {
167 serializer.startTag( NAMESPACE, tagName );
168 if ( phase.getId() != null )
169 {
170 serializer.startTag( NAMESPACE, "id" ).text( phase.getId() ).endTag( NAMESPACE, "id" );
171 }
172 if ( phase.getExecutions() != null && phase.getExecutions().size() > 0 )
173 {
174 serializer.startTag( NAMESPACE, "executions" );
175 for ( Iterator iter = phase.getExecutions().iterator(); iter.hasNext(); )
176 {
177 Execution o = (Execution) iter.next();
178 writeExecution( o, "execution", serializer );
179 }
180 serializer.endTag( NAMESPACE, "executions" );
181 }
182 if ( phase.getConfiguration() != null )
183 {
184 ((Xpp3Dom) phase.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
185 }
186 serializer.endTag( NAMESPACE, tagName );
187 }
188 }
189
190
191 }