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.archetype.catalog.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.archetype.catalog.Archetype;
34 import org.apache.maven.archetype.catalog.ArchetypeCatalog;
35 import org.codehaus.plexus.util.xml.pull.MXSerializer;
36 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
37
38
39
40
41
42
43 @SuppressWarnings( "all" )
44 public class ArchetypeCatalogXpp3Writer
45 {
46
47
48
49
50
51
52
53
54 private static final String NAMESPACE = null;
55
56
57
58
59 private String fileComment = null;
60
61
62
63
64
65
66
67
68
69
70
71 public void setFileComment( String fileComment )
72 {
73 this.fileComment = fileComment;
74 }
75
76
77
78
79
80
81
82
83 public void write( Writer writer, ArchetypeCatalog archetypeCatalog )
84 throws java.io.IOException
85 {
86 XmlSerializer serializer = new MXSerializer();
87 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
88 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
89 serializer.setOutput( writer );
90 serializer.startDocument( archetypeCatalog.getModelEncoding(), null );
91 writeArchetypeCatalog( archetypeCatalog, "archetype-catalog", serializer );
92 serializer.endDocument();
93 }
94
95
96
97
98
99
100
101
102 public void write( OutputStream stream, ArchetypeCatalog archetypeCatalog )
103 throws java.io.IOException
104 {
105 XmlSerializer serializer = new MXSerializer();
106 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
107 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
108 serializer.setOutput( stream, archetypeCatalog.getModelEncoding() );
109 serializer.startDocument( archetypeCatalog.getModelEncoding(), null );
110 writeArchetypeCatalog( archetypeCatalog, "archetype-catalog", serializer );
111 serializer.endDocument();
112 }
113
114
115
116
117
118
119
120
121
122 private void writeArchetype( Archetype archetype, String tagName, XmlSerializer serializer )
123 throws java.io.IOException
124 {
125 serializer.startTag( NAMESPACE, tagName );
126 if ( archetype.getGroupId() != null )
127 {
128 serializer.startTag( NAMESPACE, "groupId" ).text( archetype.getGroupId() ).endTag( NAMESPACE, "groupId" );
129 }
130 if ( archetype.getArtifactId() != null )
131 {
132 serializer.startTag( NAMESPACE, "artifactId" ).text( archetype.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
133 }
134 if ( archetype.getVersion() != null )
135 {
136 serializer.startTag( NAMESPACE, "version" ).text( archetype.getVersion() ).endTag( NAMESPACE, "version" );
137 }
138 if ( archetype.getRepository() != null )
139 {
140 serializer.startTag( NAMESPACE, "repository" ).text( archetype.getRepository() ).endTag( NAMESPACE, "repository" );
141 }
142 if ( archetype.getDescription() != null )
143 {
144 serializer.startTag( NAMESPACE, "description" ).text( archetype.getDescription() ).endTag( NAMESPACE, "description" );
145 }
146 serializer.endTag( NAMESPACE, tagName );
147 }
148
149
150
151
152
153
154
155
156
157 private void writeArchetypeCatalog( ArchetypeCatalog archetypeCatalog, String tagName, XmlSerializer serializer )
158 throws java.io.IOException
159 {
160 if ( this.fileComment != null )
161 {
162 serializer.comment(this.fileComment);
163 }
164 serializer.setPrefix( "", "https://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0" );
165 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
166 serializer.startTag( NAMESPACE, tagName );
167 serializer.attribute( "", "xsi:schemaLocation", "https://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 https://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd" );
168 if ( ( archetypeCatalog.getArchetypes() != null ) && ( archetypeCatalog.getArchetypes().size() > 0 ) )
169 {
170 serializer.startTag( NAMESPACE, "archetypes" );
171 for ( Iterator iter = archetypeCatalog.getArchetypes().iterator(); iter.hasNext(); )
172 {
173 Archetype o = (Archetype) iter.next();
174 writeArchetype( o, "archetype", serializer );
175 }
176 serializer.endTag( NAMESPACE, "archetypes" );
177 }
178 serializer.endTag( NAMESPACE, tagName );
179 }
180
181 }