View Javadoc

1   /*
2    * $Id$
3    */
4   
5   package org.apache.maven.plugin.lifecycle.io.xpp3;
6   
7     //---------------------------------/
8    //- Imported classes and packages -/
9   //---------------------------------/
10  
11  import java.io.Writer;
12  import java.text.DateFormat;
13  import java.util.Iterator;
14  import java.util.Locale;
15  import org.apache.maven.plugin.lifecycle.Execution;
16  import org.apache.maven.plugin.lifecycle.Lifecycle;
17  import org.apache.maven.plugin.lifecycle.LifecycleConfiguration;
18  import org.apache.maven.plugin.lifecycle.Phase;
19  import org.codehaus.plexus.util.xml.Xpp3Dom;
20  import org.codehaus.plexus.util.xml.pull.MXSerializer;
21  import org.codehaus.plexus.util.xml.pull.XmlSerializer;
22  
23  /**
24   * Class LifecycleMappingsXpp3Writer.
25   * 
26   * @version $Revision$ $Date$
27   */
28  public class LifecycleMappingsXpp3Writer {
29  
30  
31        //--------------------------/
32       //- Class/Member Variables -/
33      //--------------------------/
34  
35      /**
36       * Field NAMESPACE.
37       */
38      private String NAMESPACE;
39  
40  
41        //-----------/
42       //- Methods -/
43      //-----------/
44  
45      /**
46       * Method write.
47       * 
48       * @param writer
49       * @param lifecycleConfiguration
50       * @throws java.io.IOException
51       */
52      public void write( Writer writer, LifecycleConfiguration lifecycleConfiguration )
53          throws java.io.IOException
54      {
55          XmlSerializer serializer = new MXSerializer();
56          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "  " );
57          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
58          serializer.setOutput( writer );
59          serializer.startDocument( lifecycleConfiguration.getModelEncoding(), null );
60          writeLifecycleConfiguration( lifecycleConfiguration, "lifecycles", serializer );
61          serializer.endDocument();
62      } //-- void write( Writer, LifecycleConfiguration ) 
63  
64      /**
65       * Method writeExecution.
66       * 
67       * @param execution
68       * @param serializer
69       * @param tagName
70       * @throws java.io.IOException
71       */
72      private void writeExecution( Execution execution, String tagName, XmlSerializer serializer )
73          throws java.io.IOException
74      {
75          if ( execution != null )
76          {
77              serializer.startTag( NAMESPACE, tagName );
78              if ( execution.getConfiguration() != null )
79              {
80                  ((Xpp3Dom) execution.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
81              }
82              if ( execution.getGoals() != null && execution.getGoals().size() > 0 )
83              {
84                  serializer.startTag( NAMESPACE, "goals" );
85                  for ( Iterator iter = execution.getGoals().iterator(); iter.hasNext(); )
86                  {
87                      String goal = (String) iter.next();
88                      serializer.startTag( NAMESPACE, "goal" ).text( goal ).endTag( NAMESPACE, "goal" );
89                  }
90                  serializer.endTag( NAMESPACE, "goals" );
91              }
92              serializer.endTag( NAMESPACE, tagName );
93          }
94      } //-- void writeExecution( Execution, String, XmlSerializer ) 
95  
96      /**
97       * Method writeLifecycle.
98       * 
99       * @param lifecycle
100      * @param serializer
101      * @param tagName
102      * @throws java.io.IOException
103      */
104     private void writeLifecycle( Lifecycle lifecycle, String tagName, XmlSerializer serializer )
105         throws java.io.IOException
106     {
107         if ( lifecycle != null )
108         {
109             serializer.startTag( NAMESPACE, tagName );
110             if ( lifecycle.getId() != null )
111             {
112                 serializer.startTag( NAMESPACE, "id" ).text( lifecycle.getId() ).endTag( NAMESPACE, "id" );
113             }
114             if ( lifecycle.getPhases() != null && lifecycle.getPhases().size() > 0 )
115             {
116                 serializer.startTag( NAMESPACE, "phases" );
117                 for ( Iterator iter = lifecycle.getPhases().iterator(); iter.hasNext(); )
118                 {
119                     Phase o = (Phase) iter.next();
120                     writePhase( o, "phase", serializer );
121                 }
122                 serializer.endTag( NAMESPACE, "phases" );
123             }
124             serializer.endTag( NAMESPACE, tagName );
125         }
126     } //-- void writeLifecycle( Lifecycle, String, XmlSerializer ) 
127 
128     /**
129      * Method writeLifecycleConfiguration.
130      * 
131      * @param lifecycleConfiguration
132      * @param serializer
133      * @param tagName
134      * @throws java.io.IOException
135      */
136     private void writeLifecycleConfiguration( LifecycleConfiguration lifecycleConfiguration, String tagName, XmlSerializer serializer )
137         throws java.io.IOException
138     {
139         if ( lifecycleConfiguration != null )
140         {
141             serializer.startTag( NAMESPACE, tagName );
142             if ( lifecycleConfiguration.getLifecycles() != null && lifecycleConfiguration.getLifecycles().size() > 0 )
143             {
144                 for ( Iterator iter = lifecycleConfiguration.getLifecycles().iterator(); iter.hasNext(); )
145                 {
146                     Lifecycle o = (Lifecycle) iter.next();
147                     writeLifecycle( o, "lifecycle", serializer );
148                 }
149             }
150             serializer.endTag( NAMESPACE, tagName );
151         }
152     } //-- void writeLifecycleConfiguration( LifecycleConfiguration, String, XmlSerializer ) 
153 
154     /**
155      * Method writePhase.
156      * 
157      * @param phase
158      * @param serializer
159      * @param tagName
160      * @throws java.io.IOException
161      */
162     private void writePhase( Phase phase, String tagName, XmlSerializer serializer )
163         throws java.io.IOException
164     {
165         if ( phase != null )
166         {
167             serializer.startTag( NAMESPACE, tagName );
168             if ( phase.getId() != null )
169             {
170                 serializer.startTag( NAMESPACE, "id" ).text( phase.getId() ).endTag( NAMESPACE, "id" );
171             }
172             if ( phase.getExecutions() != null && phase.getExecutions().size() > 0 )
173             {
174                 serializer.startTag( NAMESPACE, "executions" );
175                 for ( Iterator iter = phase.getExecutions().iterator(); iter.hasNext(); )
176                 {
177                     Execution o = (Execution) iter.next();
178                     writeExecution( o, "execution", serializer );
179                 }
180                 serializer.endTag( NAMESPACE, "executions" );
181             }
182             if ( phase.getConfiguration() != null )
183             {
184                 ((Xpp3Dom) phase.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
185             }
186             serializer.endTag( NAMESPACE, tagName );
187         }
188     } //-- void writePhase( Phase, String, XmlSerializer ) 
189 
190 
191 }