View Javadoc

1   package org.apache.maven.model.converter.plugins;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.maven.model.converter.ProjectConverterException;
23  import org.apache.maven.shared.utils.StringUtils;
24  import org.codehaus.plexus.util.xml.Xpp3Dom;
25  
26  import java.util.Iterator;
27  import java.util.Properties;
28  
29  /**
30   * A <code>PluginConfigurationConverter</code> for the maven-site-plugin.
31   *
32   * @author Dennis Lundberg
33   * @version $Id: PCCSite.java 1379502 2012-08-31 16:43:35Z struberg $
34   * @plexus.component role="org.apache.maven.model.converter.plugins.PluginConfigurationConverter" role-hint="site"
35   */
36  public class PCCSite
37      extends AbstractPluginConfigurationConverter
38  {
39      /**
40       * @see AbstractPluginConfigurationConverter#getArtifactId()
41       */
42      public String getArtifactId()
43      {
44          return "maven-site-plugin";
45      }
46  
47      public String getType()
48      {
49          return TYPE_BUILD_PLUGIN;
50      }
51  
52      protected void buildConfiguration( Xpp3Dom configuration, org.apache.maven.model.v3_0_0.Model v3Model,
53                                         Properties projectProperties )
54          throws ProjectConverterException
55      {
56          Xpp3Dom xdocExcludes = getXdocExcludes( configuration );
57  
58          // Always exclude the navigation.xml file
59          appendValue( xdocExcludes, "navigation.xml" );
60  
61          // Exclude the changes.xml file if the Changes report is used
62          if ( hasChangesReport( v3Model ) )
63          {
64              appendValue( xdocExcludes, "changes.xml" );
65          }
66      }
67  
68      private void appendValue( Xpp3Dom xdoc, String value )
69      {
70          String currentValue = xdoc.getValue();
71          if ( StringUtils.isEmpty( currentValue ) )
72          {
73              xdoc.setValue( value );
74          }
75          else
76          {
77              xdoc.setValue( currentValue + "," + value );
78          }
79      }
80  
81      private Xpp3Dom getXdocExcludes( Xpp3Dom configuration )
82      {
83          Xpp3Dom moduleExcludes = configuration.getChild( "moduleExcludes" );
84          if ( moduleExcludes == null )
85          {
86              moduleExcludes = new Xpp3Dom( "moduleExcludes" );
87              configuration.addChild( moduleExcludes );
88          }
89  
90          Xpp3Dom xdoc = moduleExcludes.getChild( "xdoc" );
91          if ( xdoc == null )
92          {
93              xdoc = new Xpp3Dom( "xdoc" );
94              moduleExcludes.addChild( xdoc );
95          }
96          return xdoc;
97      }
98  
99      private boolean hasChangesReport( org.apache.maven.model.v3_0_0.Model v3Model )
100     {
101         boolean hasChangesReport = false;
102 
103         if ( v3Model.getReports() != null && !v3Model.getReports().isEmpty() )
104         {
105             Iterator iterator = v3Model.getReports().iterator();
106             while ( iterator.hasNext() )
107             {
108                 String report = (String) iterator.next();
109                 if ( "maven-changes-plugin".equals( report ) )
110                 {
111                     hasChangesReport = true;
112                 }
113             }
114         }
115 
116         return hasChangesReport;
117     }
118 }