Author: dennisl
Date: Sun Feb 10 05:28:36 2008
New Revision: 620284

URL: http://svn.apache.org/viewvc?rev=620284&view=rev
Log:
[MCHANGES-88] NoSuchMethodError with maven 2.0.8 when generating changes-report
Submitted by: Niall Pemberton
Reviewed by: Dennis Lundberg

Added:
    
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
   (with props)
Modified:
    
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
    
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java

Added: 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java?rev=620284&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
 (added)
+++ 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
 Sun Feb 10 05:28:36 2008
@@ -0,0 +1,221 @@
+package org.apache.maven.plugin.changes;
+
+/*
+ * 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.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
+import org.apache.maven.doxia.site.decoration.Body;
+import org.apache.maven.doxia.site.decoration.DecorationModel;
+import org.apache.maven.doxia.site.decoration.Skin;
+import org.apache.maven.doxia.siterenderer.Renderer;
+import org.apache.maven.doxia.siterenderer.RendererException;
+import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
+import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.reporting.AbstractMavenReport;
+import org.apache.maven.reporting.MavenReportException;
+import org.codehaus.plexus.i18n.I18N;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Base class with the things that should be in AbstractMavenReport anyway.
+ *
+ * Note: this file was copied from maven-project-info-reports.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ *
+ */
+public abstract class AbstractChangesReport
+    extends AbstractMavenReport
+{
+    /**
+     * Report output directory.
+     *
+     * @parameter expression="${project.reporting.outputDirectory}"
+     * @required
+     */
+    protected File outputDirectory;
+
+    /**
+     * Doxia Site Renderer.
+     *
+     * @component
+     */
+    protected Renderer siteRenderer;
+
+    /**
+     * The Maven Project.
+     *
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    protected MavenProject project;
+
+    /**
+     * Local Repository.
+     *
+     * @parameter expression="${localRepository}"
+     * @required
+     * @readonly
+     */
+    protected ArtifactRepository localRepository;
+
+    /**
+     * @component
+     */
+    protected ArtifactResolver resolver;
+
+    /**
+     * @component
+     */
+    protected ArtifactFactory factory;
+
+    /**
+     * Internationalization.
+     *
+     * @component
+     */
+    protected I18N i18n;
+
+    private File getSkinArtifactFile()
+        throws MojoExecutionException
+    {
+        Skin skin = Skin.getDefaultSkin();
+
+        String version = skin.getVersion();
+        Artifact artifact;
+        try
+        {
+            if ( version == null )
+            {
+                version = Artifact.RELEASE_VERSION;
+            }
+            VersionRange versionSpec = VersionRange.createFromVersionSpec( 
version );
+            artifact = factory.createDependencyArtifact( skin.getGroupId(), 
skin.getArtifactId(), versionSpec, "jar",
+                                                         null, null );
+
+            resolver.resolve( artifact, 
project.getRemoteArtifactRepositories(), localRepository );
+        }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            throw new MojoExecutionException( "The skin version '" + version + 
"' is not valid: " + e.getMessage() );
+        }
+        catch ( ArtifactResolutionException e )
+        {
+            throw new MojoExecutionException( "Unable to find skin", e );
+        }
+        catch ( ArtifactNotFoundException e )
+        {
+            throw new MojoExecutionException( "The skin does not exist: " + 
e.getMessage() );
+        }
+
+        return artifact.getFile();
+    }
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        if ( !canGenerateReport() )
+        {
+            return;
+        }
+
+        // TODO: push to a helper? Could still be improved by taking more of 
the site information from the site plugin
+        try
+        {
+            DecorationModel model = new DecorationModel();
+            model.setBody( new Body() );
+            Map attributes = new HashMap();
+            attributes.put( "outputEncoding", "UTF-8" );
+            Locale locale = Locale.getDefault();
+            SiteRenderingContext siteContext = 
siteRenderer.createContextForSkin( getSkinArtifactFile(), attributes,
+                                                                               
   model, getName( locale ), locale );
+
+            RenderingContext context = new RenderingContext( outputDirectory, 
getOutputName() + ".html" );
+
+            SiteRendererSink sink = new SiteRendererSink( context );
+            generate( sink, locale );
+
+            outputDirectory.mkdirs();
+
+            Writer writer = new FileWriter( new File( outputDirectory, 
getOutputName() + ".html" ) );
+
+            siteRenderer.generateDocument( writer, sink, siteContext );
+
+            siteRenderer.copyResources( siteContext, new File( 
project.getBasedir(), "src/site/resources" ),
+                                        outputDirectory );
+        }
+        catch ( RendererException e )
+        {
+            throw new MojoExecutionException(
+                "An error has occurred in " + getName( Locale.ENGLISH ) + " 
report generation.", e );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException(
+                "An error has occurred in " + getName( Locale.ENGLISH ) + " 
report generation.", e );
+        }
+        catch ( MavenReportException e )
+        {
+            throw new MojoExecutionException(
+                "An error has occurred in " + getName( Locale.ENGLISH ) + " 
report generation.", e );
+        }
+    }
+
+    /**
+     * @see org.apache.maven.reporting.AbstractMavenReport#getOutputDirectory()
+     */
+    protected String getOutputDirectory()
+    {
+        return outputDirectory.getAbsolutePath();
+    }
+
+    /**
+     * @see org.apache.maven.reporting.AbstractMavenReport#getProject()
+     */
+    protected MavenProject getProject()
+    {
+        return project;
+    }
+
+    /**
+     * @see org.apache.maven.reporting.AbstractMavenReport#getSiteRenderer()
+     */
+    protected Renderer getSiteRenderer()
+    {
+        return siteRenderer;
+    }
+}

Propchange: 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
------------------------------------------------------------------------------
    svn:keywords = Date Id

Modified: 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java?rev=620284&r1=620283&r2=620284&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
 Sun Feb 10 05:28:36 2008
@@ -21,7 +21,6 @@
 
 import org.apache.maven.doxia.siterenderer.Renderer;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.reporting.AbstractMavenReport;
 import org.apache.maven.reporting.MavenReportException;
 import org.codehaus.plexus.util.FileUtils;
 
@@ -39,32 +38,9 @@
  * @version $Id$
  */
 public class ChangesMojo
-    extends AbstractMavenReport
+    extends AbstractChangesReport
 {
     /**
-     * Directory where reports will go.
-     *
-     * @parameter expression="${project.reporting.outputDirectory}"
-     * @required
-     * @readonly
-     */
-    private File outputDirectory;
-
-    /**
-     * @parameter 
expression="${component.org.apache.maven.doxia.siterenderer.Renderer}"
-     * @required
-     * @readonly
-     */
-    private Renderer siteRenderer;
-
-    /**
-     * @parameter expression="${project}"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-    /**
      * The path of the changes.xml file that will be converted into an html 
report.
      *
      * @parameter expression="${basedir}/src/changes/changes.xml"
@@ -153,24 +129,9 @@
         return getBundle( locale ).getString( "report.changes.description" );
     }
 
-    protected Renderer getSiteRenderer()
-    {
-        return siteRenderer;
-    }
-
-    protected MavenProject getProject()
-    {
-        return project;
-    }
-
     public String getOutputName()
     {
         return "changes-report";
-    }
-
-    protected String getOutputDirectory()
-    {
-        return outputDirectory.getAbsolutePath();
     }
 
     private ResourceBundle getBundle( Locale locale )

Modified: 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java?rev=620284&r1=620283&r2=620284&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
 Sun Feb 10 05:28:36 2008
@@ -20,8 +20,8 @@
  */
 
 import org.apache.maven.doxia.siterenderer.Renderer;
+import org.apache.maven.plugin.changes.AbstractChangesReport;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.reporting.AbstractMavenReport;
 import org.apache.maven.reporting.MavenReportException;
 import org.apache.maven.settings.Settings;
 
@@ -37,18 +37,9 @@
  * @version $Id$
  */
 public class JiraMojo
-    extends AbstractMavenReport
+    extends AbstractChangesReport
 {
     /**
-     * Output directory where the report will be placed.
-     *
-     * @parameter expression="${project.reporting.outputDirectory}"
-     * @required
-     * @readonly
-     */
-    private File outputDirectory;
-
-    /**
      * Path to the JIRA XML file, which will be parsed.
      *
      * @parameter expression="${project.build.directory}/jira-results.xml "
@@ -58,24 +49,6 @@
     private File jiraXmlPath;
 
     /**
-     * Doxia Site Renderer.
-     *
-     * @parameter 
expression="${component.org.apache.maven.doxia.siterenderer.Renderer}"
-     * @required
-     * @readonly
-     */
-    private Renderer siteRenderer;
-
-    /**
-     * The Maven Project.
-     *
-     * @parameter expression="${project}"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-    /**
      * Settings XML configuration.
      *
      * @parameter expression="${settings}"
@@ -307,24 +280,9 @@
         return getBundle( locale ).getString( "report.jira.description" );
     }
 
-    protected Renderer getSiteRenderer()
-    {
-        return siteRenderer;
-    }
-
-    protected MavenProject getProject()
-    {
-        return project;
-    }
-
     public String getOutputName()
     {
         return "jira-report";
-    }
-
-    protected String getOutputDirectory()
-    {
-        return outputDirectory.getAbsolutePath();
     }
 
     private ResourceBundle getBundle( Locale locale )


Reply via email to