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