1
2
3
4
5
6
7
8 package org.apache.maven.artifact.repository.metadata.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.artifact.repository.metadata.Metadata;
20 import org.apache.maven.artifact.repository.metadata.Plugin;
21 import org.apache.maven.artifact.repository.metadata.Snapshot;
22 import org.apache.maven.artifact.repository.metadata.SnapshotVersion;
23 import org.apache.maven.artifact.repository.metadata.Versioning;
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 MetadataXpp3Writer
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, Metadata metadata )
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( metadata.getModelEncoding(), null );
65 writeMetadata( metadata, "metadata", serializer );
66 serializer.endDocument();
67 }
68
69
70
71
72
73
74
75
76 public void write( OutputStream stream, Metadata metadata )
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, metadata.getModelEncoding() );
83 serializer.startDocument( metadata.getModelEncoding(), null );
84 writeMetadata( metadata, "metadata", serializer );
85 serializer.endDocument();
86 }
87
88
89
90
91
92
93
94
95
96 private void writeMetadata( Metadata metadata, String tagName, XmlSerializer serializer )
97 throws java.io.IOException
98 {
99 serializer.startTag( NAMESPACE, tagName );
100 if ( metadata.getModelVersion() != null )
101 {
102 serializer.attribute( NAMESPACE, "modelVersion", metadata.getModelVersion() );
103 }
104 if ( metadata.getGroupId() != null )
105 {
106 serializer.startTag( NAMESPACE, "groupId" ).text( metadata.getGroupId() ).endTag( NAMESPACE, "groupId" );
107 }
108 if ( metadata.getArtifactId() != null )
109 {
110 serializer.startTag( NAMESPACE, "artifactId" ).text( metadata.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
111 }
112 if ( metadata.getVersion() != null )
113 {
114 serializer.startTag( NAMESPACE, "version" ).text( metadata.getVersion() ).endTag( NAMESPACE, "version" );
115 }
116 if ( metadata.getVersioning() != null )
117 {
118 writeVersioning( (Versioning) metadata.getVersioning(), "versioning", serializer );
119 }
120 if ( ( metadata.getPlugins() != null ) && ( metadata.getPlugins().size() > 0 ) )
121 {
122 serializer.startTag( NAMESPACE, "plugins" );
123 for ( Iterator iter = metadata.getPlugins().iterator(); iter.hasNext(); )
124 {
125 Plugin o = (Plugin) iter.next();
126 writePlugin( o, "plugin", serializer );
127 }
128 serializer.endTag( NAMESPACE, "plugins" );
129 }
130 serializer.endTag( NAMESPACE, tagName );
131 }
132
133
134
135
136
137
138
139
140
141 private void writePlugin( Plugin plugin, String tagName, XmlSerializer serializer )
142 throws java.io.IOException
143 {
144 serializer.startTag( NAMESPACE, tagName );
145 if ( plugin.getName() != null )
146 {
147 serializer.startTag( NAMESPACE, "name" ).text( plugin.getName() ).endTag( NAMESPACE, "name" );
148 }
149 if ( plugin.getPrefix() != null )
150 {
151 serializer.startTag( NAMESPACE, "prefix" ).text( plugin.getPrefix() ).endTag( NAMESPACE, "prefix" );
152 }
153 if ( plugin.getArtifactId() != null )
154 {
155 serializer.startTag( NAMESPACE, "artifactId" ).text( plugin.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
156 }
157 serializer.endTag( NAMESPACE, tagName );
158 }
159
160
161
162
163
164
165
166
167
168 private void writeSnapshot( Snapshot snapshot, String tagName, XmlSerializer serializer )
169 throws java.io.IOException
170 {
171 serializer.startTag( NAMESPACE, tagName );
172 if ( snapshot.getTimestamp() != null )
173 {
174 serializer.startTag( NAMESPACE, "timestamp" ).text( snapshot.getTimestamp() ).endTag( NAMESPACE, "timestamp" );
175 }
176 if ( snapshot.getBuildNumber() != 0 )
177 {
178 serializer.startTag( NAMESPACE, "buildNumber" ).text( String.valueOf( snapshot.getBuildNumber() ) ).endTag( NAMESPACE, "buildNumber" );
179 }
180 if ( snapshot.isLocalCopy() != false )
181 {
182 serializer.startTag( NAMESPACE, "localCopy" ).text( String.valueOf( snapshot.isLocalCopy() ) ).endTag( NAMESPACE, "localCopy" );
183 }
184 serializer.endTag( NAMESPACE, tagName );
185 }
186
187
188
189
190
191
192
193
194
195 private void writeSnapshotVersion( SnapshotVersion snapshotVersion, String tagName, XmlSerializer serializer )
196 throws java.io.IOException
197 {
198 serializer.startTag( NAMESPACE, tagName );
199 if ( ( snapshotVersion.getClassifier() != null ) && !snapshotVersion.getClassifier().equals( "" ) )
200 {
201 serializer.startTag( NAMESPACE, "classifier" ).text( snapshotVersion.getClassifier() ).endTag( NAMESPACE, "classifier" );
202 }
203 if ( snapshotVersion.getExtension() != null )
204 {
205 serializer.startTag( NAMESPACE, "extension" ).text( snapshotVersion.getExtension() ).endTag( NAMESPACE, "extension" );
206 }
207 if ( snapshotVersion.getVersion() != null )
208 {
209 serializer.startTag( NAMESPACE, "value" ).text( snapshotVersion.getVersion() ).endTag( NAMESPACE, "value" );
210 }
211 if ( snapshotVersion.getUpdated() != null )
212 {
213 serializer.startTag( NAMESPACE, "updated" ).text( snapshotVersion.getUpdated() ).endTag( NAMESPACE, "updated" );
214 }
215 serializer.endTag( NAMESPACE, tagName );
216 }
217
218
219
220
221
222
223
224
225
226 private void writeVersioning( Versioning versioning, String tagName, XmlSerializer serializer )
227 throws java.io.IOException
228 {
229 serializer.startTag( NAMESPACE, tagName );
230 if ( versioning.getLatest() != null )
231 {
232 serializer.startTag( NAMESPACE, "latest" ).text( versioning.getLatest() ).endTag( NAMESPACE, "latest" );
233 }
234 if ( versioning.getRelease() != null )
235 {
236 serializer.startTag( NAMESPACE, "release" ).text( versioning.getRelease() ).endTag( NAMESPACE, "release" );
237 }
238 if ( versioning.getSnapshot() != null )
239 {
240 writeSnapshot( (Snapshot) versioning.getSnapshot(), "snapshot", serializer );
241 }
242 if ( ( versioning.getVersions() != null ) && ( versioning.getVersions().size() > 0 ) )
243 {
244 serializer.startTag( NAMESPACE, "versions" );
245 for ( Iterator iter = versioning.getVersions().iterator(); iter.hasNext(); )
246 {
247 String version = (String) iter.next();
248 serializer.startTag( NAMESPACE, "version" ).text( version ).endTag( NAMESPACE, "version" );
249 }
250 serializer.endTag( NAMESPACE, "versions" );
251 }
252 if ( versioning.getLastUpdated() != null )
253 {
254 serializer.startTag( NAMESPACE, "lastUpdated" ).text( versioning.getLastUpdated() ).endTag( NAMESPACE, "lastUpdated" );
255 }
256 if ( ( versioning.getSnapshotVersions() != null ) && ( versioning.getSnapshotVersions().size() > 0 ) )
257 {
258 serializer.startTag( NAMESPACE, "snapshotVersions" );
259 for ( Iterator iter = versioning.getSnapshotVersions().iterator(); iter.hasNext(); )
260 {
261 SnapshotVersion o = (SnapshotVersion) iter.next();
262 writeSnapshotVersion( o, "snapshotVersion", serializer );
263 }
264 serializer.endTag( NAMESPACE, "snapshotVersions" );
265 }
266 serializer.endTag( NAMESPACE, tagName );
267 }
268
269 }