1
2
3
4
5
6
7
8 package org.apache.continuum.release.model.io.stax;
9
10
11
12
13
14 import java.io.IOException;
15 import java.io.InputStream;
16 import java.io.StringWriter;
17 import java.io.Writer;
18 import java.text.DateFormat;
19 import java.util.Iterator;
20 import java.util.Locale;
21 import java.util.jar.Manifest;
22 import javanet.staxutils.IndentingXMLStreamWriter;
23 import javax.xml.stream.*;
24 import org.apache.continuum.release.model.PreparedRelease;
25 import org.apache.continuum.release.model.PreparedReleaseModel;
26 import org.codehaus.plexus.util.xml.Xpp3Dom;
27
28
29
30
31
32
33 @SuppressWarnings( "all" )
34 public class ContinuumPrepareReleasesModelStaxWriter
35 {
36
37
38
39
40
41
42
43
44 private int curId;
45
46
47
48
49 private java.util.Map idMap;
50
51
52
53
54
55
56 public ContinuumPrepareReleasesModelStaxWriter()
57 {
58 idMap = new java.util.HashMap();
59 }
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 public void write( Writer writer, PreparedReleaseModel preparedReleaseModel )
75 throws java.io.IOException, XMLStreamException
76 {
77 XMLOutputFactory factory = XMLOutputFactory.newInstance();
78 boolean supportWindowsLineEndings = false;
79 if ( factory.isPropertySupported( "com.ctc.wstx.outputEscapeCr" ) )
80 {
81 factory.setProperty( "com.ctc.wstx.outputEscapeCr", Boolean.FALSE );
82 supportWindowsLineEndings = true;
83 }
84 if ( factory.isPropertySupported( "org.codehaus.stax2.automaticEmptyElements" ) )
85 {
86 factory.setProperty( "org.codehaus.stax2.automaticEmptyElements", Boolean.FALSE );
87 }
88 IndentingXMLStreamWriter serializer = new IndentingXMLStreamWriter( factory.createXMLStreamWriter( writer ) );
89 if ( supportWindowsLineEndings )
90 {
91 serializer.setNewLine( serializer.getLineSeparator() );
92 }
93 serializer.writeStartDocument( preparedReleaseModel.getModelEncoding(), "1.0" );
94 writePreparedReleaseModel( preparedReleaseModel, "prepared-releases", serializer );
95 serializer.writeEndDocument();
96 }
97
98
99
100
101
102
103
104
105 private void writeDom( Xpp3Dom dom, XMLStreamWriter serializer )
106 throws XMLStreamException
107 {
108 serializer.writeStartElement( dom.getName() );
109 String[] attributeNames = dom.getAttributeNames();
110 for ( int i = 0; i < attributeNames.length; i++ )
111 {
112 String attributeName = attributeNames[i];
113 serializer.writeAttribute( attributeName, dom.getAttribute( attributeName ) );
114 }
115 Xpp3Dom[] children = dom.getChildren();
116 for ( int i = 0; i < children.length; i++ )
117 {
118 writeDom( children[i], serializer );
119 }
120 String value = dom.getValue();
121 if ( value != null )
122 {
123 serializer.writeCharacters( value );
124 }
125 serializer.writeEndElement();
126 }
127
128
129
130
131
132
133
134
135
136
137 private void writePreparedRelease( PreparedRelease preparedRelease, String tagName, XMLStreamWriter serializer )
138 throws java.io.IOException, XMLStreamException
139 {
140 if ( preparedRelease != null )
141 {
142 serializer.writeStartElement( tagName );
143 if ( preparedRelease.getReleaseId() != null )
144 {
145 serializer.writeStartElement( "releaseId" );
146 serializer.writeCharacters( preparedRelease.getReleaseId() );
147 serializer.writeEndElement();
148 }
149 if ( preparedRelease.getReleaseName() != null )
150 {
151 serializer.writeStartElement( "releaseName" );
152 serializer.writeCharacters( preparedRelease.getReleaseName() );
153 serializer.writeEndElement();
154 }
155 if ( preparedRelease.getBuildAgentUrl() != null )
156 {
157 serializer.writeStartElement( "buildAgentUrl" );
158 serializer.writeCharacters( preparedRelease.getBuildAgentUrl() );
159 serializer.writeEndElement();
160 }
161 if ( preparedRelease.getReleaseType() != null )
162 {
163 serializer.writeStartElement( "releaseType" );
164 serializer.writeCharacters( preparedRelease.getReleaseType() );
165 serializer.writeEndElement();
166 }
167 if ( preparedRelease.getReleaseGoals() != null )
168 {
169 serializer.writeStartElement( "releaseGoals" );
170 serializer.writeCharacters( preparedRelease.getReleaseGoals() );
171 serializer.writeEndElement();
172 }
173 if ( preparedRelease.getReleaseBy() != null )
174 {
175 serializer.writeStartElement( "releaseBy" );
176 serializer.writeCharacters( preparedRelease.getReleaseBy() );
177 serializer.writeEndElement();
178 }
179 serializer.writeEndElement();
180 }
181 }
182
183
184
185
186
187
188
189
190
191
192 private void writePreparedReleaseModel( PreparedReleaseModel preparedReleaseModel, String tagName, XMLStreamWriter serializer )
193 throws java.io.IOException, XMLStreamException
194 {
195 if ( preparedReleaseModel != null )
196 {
197 serializer.writeStartElement( tagName );
198 if ( ( preparedReleaseModel.getPreparedReleases() != null ) && ( preparedReleaseModel.getPreparedReleases().size() > 0 ) )
199 {
200 serializer.writeStartElement( "preparedReleases" );
201 for ( Iterator iter = preparedReleaseModel.getPreparedReleases().iterator(); iter.hasNext(); )
202 {
203 PreparedRelease o = (PreparedRelease) iter.next();
204 writePreparedRelease( o, "preparedRelease", serializer );
205 }
206 serializer.writeEndElement();
207 }
208 serializer.writeEndElement();
209 }
210 }
211
212 }