1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.apache.maven.artifact.repository.metadata.io.xpp3;
25
26
27
28
29
30 import java.io.OutputStream;
31 import java.io.Writer;
32 import java.util.Iterator;
33 import org.apache.maven.artifact.repository.metadata.Metadata;
34 import org.apache.maven.artifact.repository.metadata.Plugin;
35 import org.apache.maven.artifact.repository.metadata.Snapshot;
36 import org.apache.maven.artifact.repository.metadata.SnapshotVersion;
37 import org.apache.maven.artifact.repository.metadata.Versioning;
38 import org.codehaus.plexus.util.xml.pull.MXSerializer;
39 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
40
41
42
43
44
45
46 @SuppressWarnings( "all" )
47 public class MetadataXpp3Writer
48 {
49
50
51
52
53
54
55
56
57 private static final String NAMESPACE = null;
58
59
60
61
62 private String fileComment = null;
63
64
65
66
67
68
69
70
71
72
73
74 public void setFileComment( String fileComment )
75 {
76 this.fileComment = fileComment;
77 }
78
79
80
81
82
83
84
85
86 public void write( Writer writer, Metadata metadata )
87 throws java.io.IOException
88 {
89 XmlSerializer serializer = new MXSerializer();
90 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
91 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
92 serializer.setOutput( writer );
93 serializer.startDocument( metadata.getModelEncoding(), null );
94 writeMetadata( metadata, "metadata", serializer );
95 serializer.endDocument();
96 }
97
98
99
100
101
102
103
104
105 public void write( OutputStream stream, Metadata metadata )
106 throws java.io.IOException
107 {
108 XmlSerializer serializer = new MXSerializer();
109 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
110 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
111 serializer.setOutput( stream, metadata.getModelEncoding() );
112 serializer.startDocument( metadata.getModelEncoding(), null );
113 writeMetadata( metadata, "metadata", serializer );
114 serializer.endDocument();
115 }
116
117
118
119
120
121
122
123
124
125 private void writeMetadata( Metadata metadata, String tagName, XmlSerializer serializer )
126 throws java.io.IOException
127 {
128 serializer.startTag( NAMESPACE, tagName );
129 if ( metadata.getModelVersion() != null )
130 {
131 serializer.attribute( NAMESPACE, "modelVersion", metadata.getModelVersion() );
132 }
133 if ( metadata.getGroupId() != null )
134 {
135 serializer.startTag( NAMESPACE, "groupId" ).text( metadata.getGroupId() ).endTag( NAMESPACE, "groupId" );
136 }
137 if ( metadata.getArtifactId() != null )
138 {
139 serializer.startTag( NAMESPACE, "artifactId" ).text( metadata.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
140 }
141 if ( metadata.getVersioning() != null )
142 {
143 writeVersioning( (Versioning) metadata.getVersioning(), "versioning", serializer );
144 }
145 if ( metadata.getVersion() != null )
146 {
147 serializer.startTag( NAMESPACE, "version" ).text( metadata.getVersion() ).endTag( NAMESPACE, "version" );
148 }
149 if ( ( metadata.getPlugins() != null ) && ( metadata.getPlugins().size() > 0 ) )
150 {
151 serializer.startTag( NAMESPACE, "plugins" );
152 for ( Iterator iter = metadata.getPlugins().iterator(); iter.hasNext(); )
153 {
154 Plugin o = (Plugin) iter.next();
155 writePlugin( o, "plugin", serializer );
156 }
157 serializer.endTag( NAMESPACE, "plugins" );
158 }
159 serializer.endTag( NAMESPACE, tagName );
160 }
161
162
163
164
165
166
167
168
169
170 private void writePlugin( Plugin plugin, String tagName, XmlSerializer serializer )
171 throws java.io.IOException
172 {
173 serializer.startTag( NAMESPACE, tagName );
174 if ( plugin.getName() != null )
175 {
176 serializer.startTag( NAMESPACE, "name" ).text( plugin.getName() ).endTag( NAMESPACE, "name" );
177 }
178 if ( plugin.getPrefix() != null )
179 {
180 serializer.startTag( NAMESPACE, "prefix" ).text( plugin.getPrefix() ).endTag( NAMESPACE, "prefix" );
181 }
182 if ( plugin.getArtifactId() != null )
183 {
184 serializer.startTag( NAMESPACE, "artifactId" ).text( plugin.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
185 }
186 serializer.endTag( NAMESPACE, tagName );
187 }
188
189
190
191
192
193
194
195
196
197 private void writeSnapshot( Snapshot snapshot, String tagName, XmlSerializer serializer )
198 throws java.io.IOException
199 {
200 serializer.startTag( NAMESPACE, tagName );
201 if ( snapshot.getTimestamp() != null )
202 {
203 serializer.startTag( NAMESPACE, "timestamp" ).text( snapshot.getTimestamp() ).endTag( NAMESPACE, "timestamp" );
204 }
205 if ( snapshot.getBuildNumber() != 0 )
206 {
207 serializer.startTag( NAMESPACE, "buildNumber" ).text( String.valueOf( snapshot.getBuildNumber() ) ).endTag( NAMESPACE, "buildNumber" );
208 }
209 if ( snapshot.isLocalCopy() != false )
210 {
211 serializer.startTag( NAMESPACE, "localCopy" ).text( String.valueOf( snapshot.isLocalCopy() ) ).endTag( NAMESPACE, "localCopy" );
212 }
213 serializer.endTag( NAMESPACE, tagName );
214 }
215
216
217
218
219
220
221
222
223
224 private void writeSnapshotVersion( SnapshotVersion snapshotVersion, String tagName, XmlSerializer serializer )
225 throws java.io.IOException
226 {
227 serializer.startTag( NAMESPACE, tagName );
228 if ( ( snapshotVersion.getClassifier() != null ) && !snapshotVersion.getClassifier().equals( "" ) )
229 {
230 serializer.startTag( NAMESPACE, "classifier" ).text( snapshotVersion.getClassifier() ).endTag( NAMESPACE, "classifier" );
231 }
232 if ( snapshotVersion.getExtension() != null )
233 {
234 serializer.startTag( NAMESPACE, "extension" ).text( snapshotVersion.getExtension() ).endTag( NAMESPACE, "extension" );
235 }
236 if ( snapshotVersion.getVersion() != null )
237 {
238 serializer.startTag( NAMESPACE, "value" ).text( snapshotVersion.getVersion() ).endTag( NAMESPACE, "value" );
239 }
240 if ( snapshotVersion.getUpdated() != null )
241 {
242 serializer.startTag( NAMESPACE, "updated" ).text( snapshotVersion.getUpdated() ).endTag( NAMESPACE, "updated" );
243 }
244 serializer.endTag( NAMESPACE, tagName );
245 }
246
247
248
249
250
251
252
253
254
255 private void writeVersioning( Versioning versioning, String tagName, XmlSerializer serializer )
256 throws java.io.IOException
257 {
258 serializer.startTag( NAMESPACE, tagName );
259 if ( versioning.getLatest() != null )
260 {
261 serializer.startTag( NAMESPACE, "latest" ).text( versioning.getLatest() ).endTag( NAMESPACE, "latest" );
262 }
263 if ( versioning.getRelease() != null )
264 {
265 serializer.startTag( NAMESPACE, "release" ).text( versioning.getRelease() ).endTag( NAMESPACE, "release" );
266 }
267 if ( ( versioning.getVersions() != null ) && ( versioning.getVersions().size() > 0 ) )
268 {
269 serializer.startTag( NAMESPACE, "versions" );
270 for ( Iterator iter = versioning.getVersions().iterator(); iter.hasNext(); )
271 {
272 String version = (String) iter.next();
273 serializer.startTag( NAMESPACE, "version" ).text( version ).endTag( NAMESPACE, "version" );
274 }
275 serializer.endTag( NAMESPACE, "versions" );
276 }
277 if ( versioning.getLastUpdated() != null )
278 {
279 serializer.startTag( NAMESPACE, "lastUpdated" ).text( versioning.getLastUpdated() ).endTag( NAMESPACE, "lastUpdated" );
280 }
281 if ( versioning.getSnapshot() != null )
282 {
283 writeSnapshot( (Snapshot) versioning.getSnapshot(), "snapshot", serializer );
284 }
285 if ( ( versioning.getSnapshotVersions() != null ) && ( versioning.getSnapshotVersions().size() > 0 ) )
286 {
287 serializer.startTag( NAMESPACE, "snapshotVersions" );
288 for ( Iterator iter = versioning.getSnapshotVersions().iterator(); iter.hasNext(); )
289 {
290 SnapshotVersion o = (SnapshotVersion) iter.next();
291 writeSnapshotVersion( o, "snapshotVersion", serializer );
292 }
293 serializer.endTag( NAMESPACE, "snapshotVersions" );
294 }
295 serializer.endTag( NAMESPACE, tagName );
296 }
297
298 }