1
2
3
4
5
6 package org.apache.maven.toolchain.model.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.toolchain.model.PersistedToolchains;
16 import org.apache.maven.toolchain.model.ToolchainModel;
17 import org.apache.maven.toolchain.model.TrackableBase;
18 import org.codehaus.plexus.util.xml.Xpp3Dom;
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 @SuppressWarnings( "all" )
28 public class MavenToolchainsXpp3Writer
29 {
30
31
32
33
34
35
36
37
38 private static final String NAMESPACE = null;
39
40
41
42
43 private String fileComment = null;
44
45
46
47
48
49
50
51
52
53
54
55 public void setFileComment( String fileComment )
56 {
57 this.fileComment = fileComment;
58 }
59
60
61
62
63
64
65
66
67 public void write( Writer writer, PersistedToolchains persistedToolchains )
68 throws java.io.IOException
69 {
70 XmlSerializer serializer = new MXSerializer();
71 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
72 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
73 serializer.setOutput( writer );
74 serializer.startDocument( persistedToolchains.getModelEncoding(), null );
75 writePersistedToolchains( persistedToolchains, "toolchains", serializer );
76 serializer.endDocument();
77 }
78
79
80
81
82
83
84
85
86 public void write( OutputStream stream, PersistedToolchains persistedToolchains )
87 throws java.io.IOException
88 {
89 XmlSerializer serializer = new MXSerializer();
90 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
91 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
92 serializer.setOutput( stream, persistedToolchains.getModelEncoding() );
93 serializer.startDocument( persistedToolchains.getModelEncoding(), null );
94 writePersistedToolchains( persistedToolchains, "toolchains", serializer );
95 serializer.endDocument();
96 }
97
98
99
100
101
102
103
104
105
106 private void writePersistedToolchains( PersistedToolchains persistedToolchains, String tagName, XmlSerializer serializer )
107 throws java.io.IOException
108 {
109 if ( this.fileComment != null )
110 {
111 serializer.comment(this.fileComment);
112 }
113 serializer.setPrefix( "", "http://maven.apache.org/TOOLCHAINS/1.1.0" );
114 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
115 serializer.startTag( NAMESPACE, tagName );
116 serializer.attribute( "", "xsi:schemaLocation", "http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd" );
117 if ( ( persistedToolchains.getToolchains() != null ) && ( persistedToolchains.getToolchains().size() > 0 ) )
118 {
119 for ( Iterator iter = persistedToolchains.getToolchains().iterator(); iter.hasNext(); )
120 {
121 ToolchainModel o = (ToolchainModel) iter.next();
122 writeToolchainModel( o, "toolchain", serializer );
123 }
124 }
125 serializer.endTag( NAMESPACE, tagName );
126 }
127
128
129
130
131
132
133
134
135
136 private void writeToolchainModel( ToolchainModel toolchainModel, String tagName, XmlSerializer serializer )
137 throws java.io.IOException
138 {
139 serializer.startTag( NAMESPACE, tagName );
140 if ( toolchainModel.getType() != null )
141 {
142 serializer.startTag( NAMESPACE, "type" ).text( toolchainModel.getType() ).endTag( NAMESPACE, "type" );
143 }
144 if ( ( toolchainModel.getProvides() != null ) && ( toolchainModel.getProvides().size() > 0 ) )
145 {
146 serializer.startTag( NAMESPACE, "provides" );
147 for ( Iterator iter = toolchainModel.getProvides().keySet().iterator(); iter.hasNext(); )
148 {
149 String key = (String) iter.next();
150 String value = (String) toolchainModel.getProvides().get( key );
151 serializer.startTag( NAMESPACE, "" + key + "" ).text( value ).endTag( NAMESPACE, "" + key + "" );
152 }
153 serializer.endTag( NAMESPACE, "provides" );
154 }
155 if ( toolchainModel.getConfiguration() != null )
156 {
157 ((Xpp3Dom) toolchainModel.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
158 }
159 serializer.endTag( NAMESPACE, tagName );
160 }
161
162
163
164
165
166
167
168
169
170 private void writeTrackableBase( TrackableBase trackableBase, String tagName, XmlSerializer serializer )
171 throws java.io.IOException
172 {
173 serializer.startTag( NAMESPACE, tagName );
174 serializer.endTag( NAMESPACE, tagName );
175 }
176
177 }