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