This project has retired. For details please refer to its
Attic page.
RbacJdoModelStaxWriter xref
1
2
3
4
5
6 package org.apache.archiva.redback.rbac.jdo.io.stax;
7
8
9
10
11
12 import java.io.IOException;
13 import java.io.OutputStream;
14 import java.io.StringWriter;
15 import java.io.Writer;
16 import java.text.DateFormat;
17 import java.util.Iterator;
18 import java.util.Locale;
19 import java.util.jar.Manifest;
20 import javax.xml.stream.*;
21 import org.apache.archiva.redback.rbac.jdo.JdoOperation;
22 import org.apache.archiva.redback.rbac.jdo.JdoPermission;
23 import org.apache.archiva.redback.rbac.jdo.JdoResource;
24 import org.apache.archiva.redback.rbac.jdo.JdoRole;
25 import org.apache.archiva.redback.rbac.jdo.JdoUserAssignment;
26 import org.apache.archiva.redback.rbac.jdo.RbacDatabase;
27
28
29
30
31
32
33 public class RbacJdoModelStaxWriter
34 {
35
36
37
38
39
40
41
42
43 private int curId;
44
45
46
47
48 private java.util.Map idMap;
49
50
51
52
53
54
55 public RbacJdoModelStaxWriter()
56 {
57 idMap = new java.util.HashMap();
58 }
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 public void write( Writer writer, RbacDatabase rbacDatabase )
74 throws java.io.IOException, XMLStreamException
75 {
76 XMLOutputFactory factory = XMLOutputFactory.newInstance();
77 boolean supportWindowsLineEndings = false;
78 if ( factory.isPropertySupported( "com.ctc.wstx.outputEscapeCr" ) )
79 {
80 factory.setProperty( "com.ctc.wstx.outputEscapeCr", Boolean.FALSE );
81 supportWindowsLineEndings = true;
82 }
83 if ( factory.isPropertySupported( "org.codehaus.stax2.automaticEmptyElements" ) )
84 {
85 factory.setProperty( "org.codehaus.stax2.automaticEmptyElements", Boolean.FALSE );
86 }
87 IndentingXMLStreamWriter serializer = new IndentingXMLStreamWriter( factory.createXMLStreamWriter( writer ) );
88 if ( supportWindowsLineEndings )
89 {
90 serializer.setNewLine( serializer.getLineSeparator() );
91 }
92 serializer.writeStartDocument( rbacDatabase.getModelEncoding(), "1.0" );
93 writeRbacDatabase( rbacDatabase, "rbacDatabase", serializer );
94 serializer.writeEndDocument();
95 }
96
97
98
99
100
101
102
103
104
105 public void write( OutputStream stream, RbacDatabase rbacDatabase )
106 throws java.io.IOException, XMLStreamException
107 {
108 XMLOutputFactory factory = XMLOutputFactory.newInstance();
109 boolean supportWindowsLineEndings = false;
110 if ( factory.isPropertySupported( "com.ctc.wstx.outputEscapeCr" ) )
111 {
112 factory.setProperty( "com.ctc.wstx.outputEscapeCr", Boolean.FALSE );
113 supportWindowsLineEndings = true;
114 }
115 if ( factory.isPropertySupported( "org.codehaus.stax2.automaticEmptyElements" ) )
116 {
117 factory.setProperty( "org.codehaus.stax2.automaticEmptyElements", Boolean.FALSE );
118 }
119 IndentingXMLStreamWriter serializer = new IndentingXMLStreamWriter( factory.createXMLStreamWriter( stream, rbacDatabase.getModelEncoding() ) );
120 if ( supportWindowsLineEndings )
121 {
122 serializer.setNewLine( serializer.getLineSeparator() );
123 }
124 serializer.writeStartDocument( rbacDatabase.getModelEncoding(), "1.0" );
125 writeRbacDatabase( rbacDatabase, "rbacDatabase", serializer );
126 serializer.writeEndDocument();
127 }
128
129
130
131
132
133
134
135
136
137
138 private void writeJdoOperation( JdoOperation jdoOperation, String tagName, XMLStreamWriter serializer )
139 throws java.io.IOException, XMLStreamException
140 {
141 if ( jdoOperation != null )
142 {
143 serializer.writeStartElement( tagName );
144 if ( jdoOperation.getName() != null )
145 {
146 serializer.writeStartElement( "name" );
147 serializer.writeCharacters( jdoOperation.getName() );
148 serializer.writeEndElement();
149 }
150 if ( jdoOperation.getDescription() != null )
151 {
152 serializer.writeStartElement( "description" );
153 serializer.writeCharacters( jdoOperation.getDescription() );
154 serializer.writeEndElement();
155 }
156 if ( jdoOperation.isPermanent() != false )
157 {
158 serializer.writeStartElement( "permanent" );
159 serializer.writeCharacters( String.valueOf( jdoOperation.isPermanent() ) );
160 serializer.writeEndElement();
161 }
162 if ( jdoOperation.isResourceRequired() != false )
163 {
164 serializer.writeStartElement( "resourceRequired" );
165 serializer.writeCharacters( String.valueOf( jdoOperation.isResourceRequired() ) );
166 serializer.writeEndElement();
167 }
168 serializer.writeEndElement();
169 }
170 }
171
172
173
174
175
176
177
178
179
180
181 private void writeJdoPermission( JdoPermission jdoPermission, String tagName, XMLStreamWriter serializer )
182 throws java.io.IOException, XMLStreamException
183 {
184 if ( jdoPermission != null )
185 {
186 serializer.writeStartElement( tagName );
187 if ( jdoPermission.getName() != null )
188 {
189 serializer.writeStartElement( "name" );
190 serializer.writeCharacters( jdoPermission.getName() );
191 serializer.writeEndElement();
192 }
193 if ( jdoPermission.getDescription() != null )
194 {
195 serializer.writeStartElement( "description" );
196 serializer.writeCharacters( jdoPermission.getDescription() );
197 serializer.writeEndElement();
198 }
199 if ( jdoPermission.isPermanent() != false )
200 {
201 serializer.writeStartElement( "permanent" );
202 serializer.writeCharacters( String.valueOf( jdoPermission.isPermanent() ) );
203 serializer.writeEndElement();
204 }
205 if ( jdoPermission.getOperation() != null )
206 {
207 serializer.writeStartElement( "operation" );
208 serializer.writeAttribute( "name", jdoPermission.getOperation().getName() );
209 serializer.writeEndElement();
210 }
211 if ( jdoPermission.getResource() != null )
212 {
213 serializer.writeStartElement( "resource" );
214 serializer.writeAttribute( "identifier", jdoPermission.getResource().getIdentifier() );
215 serializer.writeEndElement();
216 }
217 serializer.writeEndElement();
218 }
219 }
220
221
222
223
224
225
226
227
228
229
230 private void writeJdoResource( JdoResource jdoResource, String tagName, XMLStreamWriter serializer )
231 throws java.io.IOException, XMLStreamException
232 {
233 if ( jdoResource != null )
234 {
235 serializer.writeStartElement( tagName );
236 if ( jdoResource.getIdentifier() != null )
237 {
238 serializer.writeStartElement( "identifier" );
239 serializer.writeCharacters( jdoResource.getIdentifier() );
240 serializer.writeEndElement();
241 }
242 if ( jdoResource.isPattern() != false )
243 {
244 serializer.writeStartElement( "pattern" );
245 serializer.writeCharacters( String.valueOf( jdoResource.isPattern() ) );
246 serializer.writeEndElement();
247 }
248 if ( jdoResource.isPermanent() != false )
249 {
250 serializer.writeStartElement( "permanent" );
251 serializer.writeCharacters( String.valueOf( jdoResource.isPermanent() ) );
252 serializer.writeEndElement();
253 }
254 serializer.writeEndElement();
255 }
256 }
257
258
259
260
261
262
263
264
265
266
267 private void writeJdoRole( JdoRole jdoRole, String tagName, XMLStreamWriter serializer )
268 throws java.io.IOException, XMLStreamException
269 {
270 if ( jdoRole != null )
271 {
272 serializer.writeStartElement( tagName );
273 if ( jdoRole.getName() != null )
274 {
275 serializer.writeStartElement( "name" );
276 serializer.writeCharacters( jdoRole.getName() );
277 serializer.writeEndElement();
278 }
279 if ( jdoRole.getDescription() != null )
280 {
281 serializer.writeStartElement( "description" );
282 serializer.writeCharacters( jdoRole.getDescription() );
283 serializer.writeEndElement();
284 }
285 if ( jdoRole.isAssignable() != false )
286 {
287 serializer.writeStartElement( "assignable" );
288 serializer.writeCharacters( String.valueOf( jdoRole.isAssignable() ) );
289 serializer.writeEndElement();
290 }
291 if ( jdoRole.isPermanent() != false )
292 {
293 serializer.writeStartElement( "permanent" );
294 serializer.writeCharacters( String.valueOf( jdoRole.isPermanent() ) );
295 serializer.writeEndElement();
296 }
297 if ( ( jdoRole.getChildRoleNames() != null ) && ( jdoRole.getChildRoleNames().size() > 0 ) )
298 {
299 serializer.writeStartElement( "childRoleNames" );
300 for ( Iterator iter = jdoRole.getChildRoleNames().iterator(); iter.hasNext(); )
301 {
302 String childRoleName = (String) iter.next();
303 serializer.writeStartElement( "childRoleName" );
304 serializer.writeCharacters( childRoleName );
305 serializer.writeEndElement();
306 }
307 serializer.writeEndElement();
308 }
309 if ( ( jdoRole.getPermissions() != null ) && ( jdoRole.getPermissions().size() > 0 ) )
310 {
311 serializer.writeStartElement( "permissions" );
312 for ( Iterator iter = jdoRole.getPermissions().iterator(); iter.hasNext(); )
313 {
314 JdoPermission o = (JdoPermission) iter.next();
315 serializer.writeStartElement( "permission" );
316 serializer.writeAttribute( "name", o.getName() );
317 serializer.writeEndElement();
318 }
319 serializer.writeEndElement();
320 }
321 serializer.writeEndElement();
322 }
323 }
324
325
326
327
328
329
330
331
332
333
334 private void writeJdoUserAssignment( JdoUserAssignment jdoUserAssignment, String tagName, XMLStreamWriter serializer )
335 throws java.io.IOException, XMLStreamException
336 {
337 if ( jdoUserAssignment != null )
338 {
339 serializer.writeStartElement( tagName );
340 if ( jdoUserAssignment.getPrincipal() != null )
341 {
342 serializer.writeStartElement( "principal" );
343 serializer.writeCharacters( jdoUserAssignment.getPrincipal() );
344 serializer.writeEndElement();
345 }
346 if ( jdoUserAssignment.getTimestamp() != null )
347 {
348 serializer.writeStartElement( "timestamp" );
349 serializer.writeCharacters( String.valueOf( jdoUserAssignment.getTimestamp().getTime() ) );
350 serializer.writeEndElement();
351 }
352 if ( jdoUserAssignment.isPermanent() != false )
353 {
354 serializer.writeStartElement( "permanent" );
355 serializer.writeCharacters( String.valueOf( jdoUserAssignment.isPermanent() ) );
356 serializer.writeEndElement();
357 }
358 if ( ( jdoUserAssignment.getRoleNames() != null ) && ( jdoUserAssignment.getRoleNames().size() > 0 ) )
359 {
360 serializer.writeStartElement( "roleNames" );
361 for ( Iterator iter = jdoUserAssignment.getRoleNames().iterator(); iter.hasNext(); )
362 {
363 String roleName = (String) iter.next();
364 serializer.writeStartElement( "roleName" );
365 serializer.writeCharacters( roleName );
366 serializer.writeEndElement();
367 }
368 serializer.writeEndElement();
369 }
370 serializer.writeEndElement();
371 }
372 }
373
374
375
376
377
378
379
380
381
382
383 private void writeRbacDatabase( RbacDatabase rbacDatabase, String tagName, XMLStreamWriter serializer )
384 throws java.io.IOException, XMLStreamException
385 {
386 if ( rbacDatabase != null )
387 {
388 serializer.writeStartElement( tagName );
389 if ( ( rbacDatabase.getRoles() != null ) && ( rbacDatabase.getRoles().size() > 0 ) )
390 {
391 serializer.writeStartElement( "roles" );
392 for ( Iterator iter = rbacDatabase.getRoles().iterator(); iter.hasNext(); )
393 {
394 JdoRole o = (JdoRole) iter.next();
395 writeJdoRole( o, "role", serializer );
396 }
397 serializer.writeEndElement();
398 }
399 if ( ( rbacDatabase.getPermissions() != null ) && ( rbacDatabase.getPermissions().size() > 0 ) )
400 {
401 serializer.writeStartElement( "permissions" );
402 for ( Iterator iter = rbacDatabase.getPermissions().iterator(); iter.hasNext(); )
403 {
404 JdoPermission o = (JdoPermission) iter.next();
405 writeJdoPermission( o, "permission", serializer );
406 }
407 serializer.writeEndElement();
408 }
409 if ( ( rbacDatabase.getOperations() != null ) && ( rbacDatabase.getOperations().size() > 0 ) )
410 {
411 serializer.writeStartElement( "operations" );
412 for ( Iterator iter = rbacDatabase.getOperations().iterator(); iter.hasNext(); )
413 {
414 JdoOperation o = (JdoOperation) iter.next();
415 writeJdoOperation( o, "operation", serializer );
416 }
417 serializer.writeEndElement();
418 }
419 if ( ( rbacDatabase.getResources() != null ) && ( rbacDatabase.getResources().size() > 0 ) )
420 {
421 serializer.writeStartElement( "resources" );
422 for ( Iterator iter = rbacDatabase.getResources().iterator(); iter.hasNext(); )
423 {
424 JdoResource o = (JdoResource) iter.next();
425 writeJdoResource( o, "resource", serializer );
426 }
427 serializer.writeEndElement();
428 }
429 if ( ( rbacDatabase.getUserAssignments() != null ) && ( rbacDatabase.getUserAssignments().size() > 0 ) )
430 {
431 serializer.writeStartElement( "userAssignments" );
432 for ( Iterator iter = rbacDatabase.getUserAssignments().iterator(); iter.hasNext(); )
433 {
434 JdoUserAssignment o = (JdoUserAssignment) iter.next();
435 writeJdoUserAssignment( o, "userAssignment", serializer );
436 }
437 serializer.writeEndElement();
438 }
439 serializer.writeEndElement();
440 }
441 }
442
443 }