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.Writer;
15 import java.text.DateFormat;
16 import java.util.Iterator;
17 import java.util.Locale;
18 import org.apache.maven.artifact.repository.metadata.Metadata;
19 import org.apache.maven.artifact.repository.metadata.Plugin;
20 import org.apache.maven.artifact.repository.metadata.Snapshot;
21 import org.apache.maven.artifact.repository.metadata.Versioning;
22 import org.codehaus.plexus.util.xml.pull.MXSerializer;
23 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
24
25
26
27
28
29
30 public class MetadataXpp3Writer
31 {
32
33
34
35
36
37
38
39
40 private static final String NAMESPACE = null;
41
42
43
44
45
46
47
48
49
50
51
52
53
54 public void write( Writer writer, Metadata metadata )
55 throws java.io.IOException
56 {
57 XmlSerializer serializer = new MXSerializer();
58 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
59 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
60 serializer.setOutput( writer );
61 serializer.startDocument( metadata.getModelEncoding(), null );
62 writeMetadata( metadata, "metadata", serializer );
63 serializer.endDocument();
64 }
65
66
67
68
69
70
71
72
73
74 private void writeMetadata( Metadata metadata, String tagName, XmlSerializer serializer )
75 throws java.io.IOException
76 {
77 if ( metadata != null )
78 {
79 serializer.setPrefix( "", "http://maven.apache.org/METADATA/1.0.0" );
80 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
81 serializer.startTag( NAMESPACE, tagName );
82 serializer.attribute( "", "xsi:schemaLocation", "http://maven.apache.org/METADATA/1.0.0 http://maven.apache.org/xsd/metadata-1.0.0.xsd" );
83 if ( metadata.getGroupId() != null )
84 {
85 serializer.startTag( NAMESPACE, "groupId" ).text( metadata.getGroupId() ).endTag( NAMESPACE, "groupId" );
86 }
87 if ( metadata.getArtifactId() != null )
88 {
89 serializer.startTag( NAMESPACE, "artifactId" ).text( metadata.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
90 }
91 if ( metadata.getVersion() != null )
92 {
93 serializer.startTag( NAMESPACE, "version" ).text( metadata.getVersion() ).endTag( NAMESPACE, "version" );
94 }
95 if ( metadata.getVersioning() != null )
96 {
97 writeVersioning( (Versioning) metadata.getVersioning(), "versioning", serializer );
98 }
99 if ( ( metadata.getPlugins() != null ) && ( metadata.getPlugins().size() > 0 ) )
100 {
101 serializer.startTag( NAMESPACE, "plugins" );
102 for ( Iterator iter = metadata.getPlugins().iterator(); iter.hasNext(); )
103 {
104 Plugin o = (Plugin) iter.next();
105 writePlugin( o, "plugin", serializer );
106 }
107 serializer.endTag( NAMESPACE, "plugins" );
108 }
109 serializer.endTag( NAMESPACE, tagName );
110 }
111 }
112
113
114
115
116
117
118
119
120
121 private void writePlugin( Plugin plugin, String tagName, XmlSerializer serializer )
122 throws java.io.IOException
123 {
124 if ( plugin != null )
125 {
126 serializer.startTag( NAMESPACE, tagName );
127 if ( plugin.getName() != null )
128 {
129 serializer.startTag( NAMESPACE, "name" ).text( plugin.getName() ).endTag( NAMESPACE, "name" );
130 }
131 if ( plugin.getPrefix() != null )
132 {
133 serializer.startTag( NAMESPACE, "prefix" ).text( plugin.getPrefix() ).endTag( NAMESPACE, "prefix" );
134 }
135 if ( plugin.getArtifactId() != null )
136 {
137 serializer.startTag( NAMESPACE, "artifactId" ).text( plugin.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
138 }
139 serializer.endTag( NAMESPACE, tagName );
140 }
141 }
142
143
144
145
146
147
148
149
150
151 private void writeSnapshot( Snapshot snapshot, String tagName, XmlSerializer serializer )
152 throws java.io.IOException
153 {
154 if ( snapshot != null )
155 {
156 serializer.startTag( NAMESPACE, tagName );
157 if ( snapshot.getTimestamp() != null )
158 {
159 serializer.startTag( NAMESPACE, "timestamp" ).text( snapshot.getTimestamp() ).endTag( NAMESPACE, "timestamp" );
160 }
161 if ( snapshot.getBuildNumber() != 0 )
162 {
163 serializer.startTag( NAMESPACE, "buildNumber" ).text( String.valueOf( snapshot.getBuildNumber() ) ).endTag( NAMESPACE, "buildNumber" );
164 }
165 if ( snapshot.isLocalCopy() != false )
166 {
167 serializer.startTag( NAMESPACE, "localCopy" ).text( String.valueOf( snapshot.isLocalCopy() ) ).endTag( NAMESPACE, "localCopy" );
168 }
169 serializer.endTag( NAMESPACE, tagName );
170 }
171 }
172
173
174
175
176
177
178
179
180
181 private void writeVersioning( Versioning versioning, String tagName, XmlSerializer serializer )
182 throws java.io.IOException
183 {
184 if ( versioning != null )
185 {
186 serializer.startTag( NAMESPACE, tagName );
187 if ( versioning.getLatest() != null )
188 {
189 serializer.startTag( NAMESPACE, "latest" ).text( versioning.getLatest() ).endTag( NAMESPACE, "latest" );
190 }
191 if ( versioning.getRelease() != null )
192 {
193 serializer.startTag( NAMESPACE, "release" ).text( versioning.getRelease() ).endTag( NAMESPACE, "release" );
194 }
195 if ( versioning.getSnapshot() != null )
196 {
197 writeSnapshot( (Snapshot) versioning.getSnapshot(), "snapshot", serializer );
198 }
199 if ( ( versioning.getVersions() != null ) && ( versioning.getVersions().size() > 0 ) )
200 {
201 serializer.startTag( NAMESPACE, "versions" );
202 for ( Iterator iter = versioning.getVersions().iterator(); iter.hasNext(); )
203 {
204 String version = (String) iter.next();
205 serializer.startTag( NAMESPACE, "version" ).text( version ).endTag( NAMESPACE, "version" );
206 }
207 serializer.endTag( NAMESPACE, "versions" );
208 }
209 if ( versioning.getLastUpdated() != null )
210 {
211 serializer.startTag( NAMESPACE, "lastUpdated" ).text( versioning.getLastUpdated() ).endTag( NAMESPACE, "lastUpdated" );
212 }
213 serializer.endTag( NAMESPACE, tagName );
214 }
215 }
216
217
218 }