thanks benjamin :-)

2009/9/29  <[email protected]>:
> Author: bentmann
> Date: Tue Sep 29 14:51:28 2009
> New Revision: 819974
>
> URL: http://svn.apache.org/viewvc?rev=819974&view=rev
> Log:
> [MNG-4162] Removal of all reporting logic from the core of Maven
>
> o Started converter to populate new site plugin configuration from legacy 
> reporting section
>
> Added:
>    
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
>    (with props)
>    
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/ReportingConverter.java
>    (with props)
> Modified:
>    
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
>
> Modified: 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
> URL: 
> http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=819974&r1=819973&r2=819974&view=diff
> ==============================================================================
> --- 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
>  (original)
> +++ 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
>  Tue Sep 29 14:51:28 2009
> @@ -46,6 +46,7 @@
>  import org.apache.maven.model.path.ModelPathTranslator;
>  import org.apache.maven.model.plugin.LifecycleBindingsInjector;
>  import org.apache.maven.model.plugin.PluginConfigurationExpander;
> +import org.apache.maven.model.plugin.ReportingConverter;
>  import org.apache.maven.model.profile.DefaultProfileActivationContext;
>  import org.apache.maven.model.profile.ProfileActivationContext;
>  import org.apache.maven.model.profile.ProfileInjector;
> @@ -108,6 +109,9 @@
>     @Requirement
>     private PluginConfigurationExpander pluginConfigurationExpander;
>
> +   �...@requirement
> +    private ReportingConverter reportingConverter;
> +
>     public ModelBuildingResult build( ModelBuildingRequest request )
>         throws ModelBuildingException
>     {
> @@ -254,6 +258,8 @@
>         if ( request.isProcessPlugins() )
>         {
>             pluginConfigurationExpander.expandPluginConfiguration( 
> resultModel, request, problems );
> +
> +            reportingConverter.convertReporting( resultModel, request, 
> problems );
>         }
>
>         modelValidator.validateEffectiveModel( resultModel, request, problems 
> );
>
> Added: 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
> URL: 
> http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java?rev=819974&view=auto
> ==============================================================================
> --- 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
>  (added)
> +++ 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
>  Tue Sep 29 14:51:28 2009
> @@ -0,0 +1,193 @@
> +package org.apache.maven.model.plugin;
> +
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +import org.apache.maven.model.Build;
> +import org.apache.maven.model.Model;
> +import org.apache.maven.model.Plugin;
> +import org.apache.maven.model.PluginManagement;
> +import org.apache.maven.model.ReportPlugin;
> +import org.apache.maven.model.ReportSet;
> +import org.apache.maven.model.Reporting;
> +import org.apache.maven.model.building.ModelBuildingRequest;
> +import org.apache.maven.model.building.ModelProblemCollector;
> +import org.codehaus.plexus.component.annotations.Component;
> +import org.codehaus.plexus.util.StringUtils;
> +import org.codehaus.plexus.util.xml.Xpp3Dom;
> +
> +/**
> + * Handles conversion of the legacy reporting section into the configuration 
> of the new Maven Site Plugin.
> + *
> + * @author Benjamin Bentmann
> + */
> +...@component( role = ReportingConverter.class )
> +public class DefaultReportingConverter
> +    implements ReportingConverter
> +{
> +
> +    public void convertReporting( Model model, ModelBuildingRequest request, 
> ModelProblemCollector problems )
> +    {
> +        Reporting reporting = model.getReporting();
> +
> +        if ( reporting == null )
> +        {
> +            return;
> +        }
> +
> +        Build build = model.getBuild();
> +
> +        if ( build == null )
> +        {
> +            build = new Build();
> +            model.setBuild( build );
> +        }
> +
> +        Plugin sitePlugin = findSitePlugin( build );
> +
> +        if ( sitePlugin == null )
> +        {
> +            sitePlugin = new Plugin();
> +            sitePlugin.setArtifactId( "maven-site-plugin" );
> +            build.addPlugin( sitePlugin );
> +        }
> +
> +        Xpp3Dom configuration = (Xpp3Dom) sitePlugin.getConfiguration();
> +
> +        if ( configuration == null )
> +        {
> +            configuration = new Xpp3Dom( "configuration" );
> +            sitePlugin.setConfiguration( configuration );
> +        }
> +
> +        Xpp3Dom reportPlugins = configuration.getChild( "reportPlugins" );
> +
> +        if ( reportPlugins != null )
> +        {
> +            // new-style report configuration already present, assume user 
> handled entire conversion
> +            return;
> +        }
> +
> +        problems.addWarning( "The <reporting> section is deprecated"
> +            + ", please move the reports to the <configuration> section of 
> the new Maven Site Plugin." );
> +
> +        if ( configuration.getChild( "outputDirectory" ) == null )
> +        {
> +            addDom( configuration, "outputDirectory", 
> reporting.getOutputDirectory() );
> +        }
> +
> +        reportPlugins = new Xpp3Dom( "reportPlugins" );
> +        configuration.addChild( reportPlugins );
> +
> +        boolean hasMavenProjectInfoReportsPlugin = false;
> +
> +        for ( ReportPlugin plugin : reporting.getPlugins() )
> +        {
> +            Xpp3Dom reportPlugin = convert( plugin );
> +            reportPlugins.addChild( reportPlugin );
> +
> +            if ( !reporting.isExcludeDefaults()
> +                && "org.apache.maven.plugins".equals( reportPlugin.getChild( 
> "groupId" ).getValue() )
> +                && "maven-project-info-reports-plugin".equals( 
> reportPlugin.getChild( "artifactId" ).getValue() ) )
> +            {
> +                hasMavenProjectInfoReportsPlugin = true;
> +            }
> +        }
> +
> +        if ( !reporting.isExcludeDefaults() && 
> !hasMavenProjectInfoReportsPlugin )
> +        {
> +            Xpp3Dom dom = new Xpp3Dom( "plugin" );
> +
> +            addDom( dom, "groupId", "org.apache.maven.plugins" );
> +            addDom( dom, "artifactId", "maven-project-info-reports-plugin" );
> +
> +            reportPlugins.addChild( dom );
> +        }
> +    }
> +
> +    private Plugin findSitePlugin( Build build )
> +    {
> +        for ( Plugin plugin : build.getPlugins() )
> +        {
> +            if ( isSitePlugin( plugin ) )
> +            {
> +                return plugin;
> +            }
> +        }
> +
> +        PluginManagement pluginManagement = build.getPluginManagement();
> +        if ( pluginManagement != null )
> +        {
> +            for ( Plugin plugin : pluginManagement.getPlugins() )
> +            {
> +                if ( isSitePlugin( plugin ) )
> +                {
> +                    return plugin;
> +                }
> +            }
> +        }
> +
> +        return null;
> +    }
> +
> +    private boolean isSitePlugin( Plugin plugin )
> +    {
> +        return "maven-site-plugin".equals( plugin.getArtifactId() )
> +            && "org.apache.maven.plugins".equals( plugin.getGroupId() );
> +    }
> +
> +    private Xpp3Dom convert( ReportPlugin plugin )
> +    {
> +        Xpp3Dom dom = new Xpp3Dom( "plugin" );
> +
> +        addDom( dom, "groupId", plugin.getGroupId() );
> +        addDom( dom, "artifactId", plugin.getArtifactId() );
> +        addDom( dom, "version", plugin.getVersion() );
> +
> +        Xpp3Dom configuration = (Xpp3Dom) plugin.getConfiguration();
> +        if ( configuration != null )
> +        {
> +            configuration = new Xpp3Dom( configuration );
> +            dom.addChild( configuration );
> +        }
> +
> +        // TODO: Clarifiy conversion
> +        for ( ReportSet reportSet : plugin.getReportSets() )
> +        {
> +        }
> +
> +        return dom;
> +    }
> +
> +    private void addDom( Xpp3Dom parent, String childName, String childValue 
> )
> +    {
> +        if ( StringUtils.isNotEmpty( childValue ) )
> +        {
> +            parent.addChild( newDom( childName, childValue ) );
> +        }
> +    }
> +
> +    private Xpp3Dom newDom( String name, String value )
> +    {
> +        Xpp3Dom dom = new Xpp3Dom( name );
> +        dom.setValue( value );
> +        return dom;
> +    }
> +
> +}
>
> Propchange: 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
>
> Propchange: 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
> ------------------------------------------------------------------------------
>    svn:keywords = Author Date Id Revision
>
> Added: 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/ReportingConverter.java
> URL: 
> http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/ReportingConverter.java?rev=819974&view=auto
> ==============================================================================
> --- 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/ReportingConverter.java
>  (added)
> +++ 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/ReportingConverter.java
>  Tue Sep 29 14:51:28 2009
> @@ -0,0 +1,43 @@
> +package org.apache.maven.model.plugin;
> +
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +import org.apache.maven.model.Model;
> +import org.apache.maven.model.building.ModelBuildingRequest;
> +import org.apache.maven.model.building.ModelProblemCollector;
> +
> +/**
> + * Handles conversion of the legacy reporting section into the configuration 
> of the new Maven Site Plugin.
> + *
> + * @author Benjamin Bentmann
> + */
> +public interface ReportingConverter
> +{
> +
> +    /**
> +     * Converts values from model's reporting section into the configuration 
> for the new Maven Site Plugin.
> +     *
> +     * @param model The model whose reporting section should be converted, 
> must not be <code>null</code>.
> +     * @param request The model building request that holds further 
> settings, must not be {...@code null}.
> +     * @param problems The container used to collect problems that were 
> encountered, must not be {...@code null}.
> +     */
> +    void convertReporting( Model model, ModelBuildingRequest request, 
> ModelProblemCollector problems );
> +
> +}
>
> Propchange: 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/ReportingConverter.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
>
> Propchange: 
> maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/ReportingConverter.java
> ------------------------------------------------------------------------------
>    svn:keywords = Author Date Id Revision
>
>
>



-- 
Olivier

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to