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