Coverage Report - org.codehaus.plexus.configuration.io.XmlPlexusConfigurationWriter
 
Classes in this File Line Coverage Branch Coverage Complexity
XmlPlexusConfigurationWriter
96 %
56/58
100 %
10/10
1,833
 
 1  
 package org.codehaus.plexus.configuration.io;
 2  
 
 3  
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 4  
 
 5  
 import java.io.IOException;
 6  
 import java.io.OutputStream;
 7  
 import java.io.OutputStreamWriter;
 8  
 import java.io.Writer;
 9  
 
 10  4
 public class XmlPlexusConfigurationWriter
 11  
     implements PlexusConfigurationWriter
 12  
 {
 13  
 
 14  
     public void write( OutputStream outputStream, PlexusConfiguration configuration )
 15  
         throws IOException
 16  
     {
 17  0
         write( new OutputStreamWriter( outputStream ), configuration );
 18  0
     }
 19  
 
 20  
     public void write( Writer writer, PlexusConfiguration configuration )
 21  
         throws IOException
 22  
     {
 23  4
         int depth = 0;
 24  
 
 25  4
         display( configuration, writer, depth );
 26  4
     }
 27  
 
 28  
     private void display( PlexusConfiguration c, Writer w, int depth )
 29  
         throws IOException
 30  
     {
 31  12
         int count = c.getChildCount();
 32  
 
 33  12
         if ( count == 0 )
 34  
         {
 35  11
             displayTag( c, w, depth );
 36  
         }
 37  
         else
 38  
         {
 39  1
             indent( depth, w );
 40  1
             w.write( '<' );
 41  1
             w.write( c.getName() );
 42  
 
 43  1
             attributes( c, w );
 44  
 
 45  1
             w.write( '>' );
 46  1
             w.write( '\n' );
 47  
 
 48  9
             for ( int i = 0; i < count; i++ )
 49  
             {
 50  8
                 PlexusConfiguration child = c.getChild( i );
 51  
 
 52  8
                 display( child, w, depth + 1 );
 53  
             }
 54  
 
 55  1
             indent( depth, w );
 56  1
             w.write( '<' );
 57  1
             w.write( '/' );
 58  1
             w.write( c.getName() );
 59  1
             w.write( '>' );
 60  1
             w.write( '\n' );
 61  
         }
 62  12
     }
 63  
 
 64  
     private void displayTag( PlexusConfiguration c, Writer w, int depth )
 65  
         throws IOException
 66  
     {
 67  11
         String value = c.getValue( null );
 68  
 
 69  11
         if ( value != null )
 70  
         {
 71  9
             indent( depth, w );
 72  9
             w.write( '<' );
 73  9
             w.write( c.getName() );
 74  
 
 75  9
             attributes( c, w );
 76  
 
 77  9
             w.write( '>' );
 78  9
             w.write( c.getValue( null ) );
 79  9
             w.write( '<' );
 80  9
             w.write( '/' );
 81  9
             w.write( c.getName() );
 82  9
             w.write( '>' );
 83  9
             w.write( '\n' );
 84  
         }
 85  
         else
 86  
         {
 87  2
             indent( depth, w );
 88  2
             w.write( '<' );
 89  2
             w.write( c.getName() );
 90  
 
 91  2
             attributes( c, w );
 92  
 
 93  2
             w.write( '/' );
 94  2
             w.write( '>' );
 95  2
             w.write( "\n" );
 96  
         }
 97  11
     }
 98  
 
 99  
     private void attributes( PlexusConfiguration c, Writer w )
 100  
         throws IOException
 101  
     {
 102  12
         String[] names = c.getAttributeNames();
 103  
 
 104  21
         for (String name : names) {
 105  9
             w.write(' ');
 106  9
             w.write(name);
 107  9
             w.write('=');
 108  9
             w.write('"');
 109  9
             w.write(c.getAttribute(name, null));
 110  9
             w.write('"');
 111  
         }
 112  12
     }
 113  
 
 114  
     private void indent( int depth, Writer w )
 115  
         throws IOException
 116  
     {
 117  21
         for ( int i = 0; i < depth; i++ )
 118  
         {
 119  8
             w.write( ' ' );
 120  
         }
 121  13
     }
 122  
 
 123  
 }