View Javadoc

1   /*
2    * $Id$
3    */
4   
5   package org.apache.maven.plugin.registry.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.registry.Plugin;
16  import org.apache.maven.plugin.registry.PluginRegistry;
17  import org.apache.maven.plugin.registry.TrackableBase;
18  import org.codehaus.plexus.util.xml.pull.MXSerializer;
19  import org.codehaus.plexus.util.xml.pull.XmlSerializer;
20  
21  /**
22   * Class PluginRegistryXpp3Writer.
23   * 
24   * @version $Revision$ $Date$
25   */
26  public class PluginRegistryXpp3Writer {
27  
28  
29        //--------------------------/
30       //- Class/Member Variables -/
31      //--------------------------/
32  
33      /**
34       * Field NAMESPACE.
35       */
36      private String NAMESPACE;
37  
38  
39        //-----------/
40       //- Methods -/
41      //-----------/
42  
43      /**
44       * Method write.
45       * 
46       * @param writer
47       * @param pluginRegistry
48       * @throws java.io.IOException
49       */
50      public void write( Writer writer, PluginRegistry pluginRegistry )
51          throws java.io.IOException
52      {
53          XmlSerializer serializer = new MXSerializer();
54          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "  " );
55          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
56          serializer.setOutput( writer );
57          serializer.startDocument( pluginRegistry.getModelEncoding(), null );
58          writePluginRegistry( pluginRegistry, "pluginRegistry", serializer );
59          serializer.endDocument();
60      } //-- void write( Writer, PluginRegistry ) 
61  
62      /**
63       * Method writePlugin.
64       * 
65       * @param plugin
66       * @param serializer
67       * @param tagName
68       * @throws java.io.IOException
69       */
70      private void writePlugin( Plugin plugin, String tagName, XmlSerializer serializer )
71          throws java.io.IOException
72      {
73          if ( plugin != null )
74          {
75              serializer.startTag( NAMESPACE, tagName );
76              if ( plugin.getGroupId() != null )
77              {
78                  serializer.startTag( NAMESPACE, "groupId" ).text( plugin.getGroupId() ).endTag( NAMESPACE, "groupId" );
79              }
80              if ( plugin.getArtifactId() != null )
81              {
82                  serializer.startTag( NAMESPACE, "artifactId" ).text( plugin.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
83              }
84              if ( plugin.getLastChecked() != null )
85              {
86                  serializer.startTag( NAMESPACE, "lastChecked" ).text( plugin.getLastChecked() ).endTag( NAMESPACE, "lastChecked" );
87              }
88              if ( plugin.getUseVersion() != null )
89              {
90                  serializer.startTag( NAMESPACE, "useVersion" ).text( plugin.getUseVersion() ).endTag( NAMESPACE, "useVersion" );
91              }
92              if ( plugin.getRejectedVersions() != null && plugin.getRejectedVersions().size() > 0 )
93              {
94                  serializer.startTag( NAMESPACE, "rejectedVersions" );
95                  for ( Iterator iter = plugin.getRejectedVersions().iterator(); iter.hasNext(); )
96                  {
97                      String rejectedVersion = (String) iter.next();
98                      serializer.startTag( NAMESPACE, "rejectedVersion" ).text( rejectedVersion ).endTag( NAMESPACE, "rejectedVersion" );
99                  }
100                 serializer.endTag( NAMESPACE, "rejectedVersions" );
101             }
102             serializer.endTag( NAMESPACE, tagName );
103         }
104     } //-- void writePlugin( Plugin, String, XmlSerializer ) 
105 
106     /**
107      * Method writePluginRegistry.
108      * 
109      * @param pluginRegistry
110      * @param serializer
111      * @param tagName
112      * @throws java.io.IOException
113      */
114     private void writePluginRegistry( PluginRegistry pluginRegistry, String tagName, XmlSerializer serializer )
115         throws java.io.IOException
116     {
117         if ( pluginRegistry != null )
118         {
119             serializer.startTag( NAMESPACE, tagName );
120             if ( pluginRegistry.getUpdateInterval() != null && !pluginRegistry.getUpdateInterval().equals( "never" ) )
121             {
122                 serializer.startTag( NAMESPACE, "updateInterval" ).text( pluginRegistry.getUpdateInterval() ).endTag( NAMESPACE, "updateInterval" );
123             }
124             if ( pluginRegistry.getAutoUpdate() != null )
125             {
126                 serializer.startTag( NAMESPACE, "autoUpdate" ).text( pluginRegistry.getAutoUpdate() ).endTag( NAMESPACE, "autoUpdate" );
127             }
128             if ( pluginRegistry.getCheckLatest() != null )
129             {
130                 serializer.startTag( NAMESPACE, "checkLatest" ).text( pluginRegistry.getCheckLatest() ).endTag( NAMESPACE, "checkLatest" );
131             }
132             if ( pluginRegistry.getPlugins() != null && pluginRegistry.getPlugins().size() > 0 )
133             {
134                 serializer.startTag( NAMESPACE, "plugins" );
135                 for ( Iterator iter = pluginRegistry.getPlugins().iterator(); iter.hasNext(); )
136                 {
137                     Plugin o = (Plugin) iter.next();
138                     writePlugin( o, "plugin", serializer );
139                 }
140                 serializer.endTag( NAMESPACE, "plugins" );
141             }
142             serializer.endTag( NAMESPACE, tagName );
143         }
144     } //-- void writePluginRegistry( PluginRegistry, String, XmlSerializer ) 
145 
146     /**
147      * Method writeTrackableBase.
148      * 
149      * @param trackableBase
150      * @param serializer
151      * @param tagName
152      * @throws java.io.IOException
153      */
154     private void writeTrackableBase( TrackableBase trackableBase, String tagName, XmlSerializer serializer )
155         throws java.io.IOException
156     {
157         if ( trackableBase != null )
158         {
159             serializer.startTag( NAMESPACE, tagName );
160             serializer.endTag( NAMESPACE, tagName );
161         }
162     } //-- void writeTrackableBase( TrackableBase, String, XmlSerializer ) 
163 
164 
165 }