You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2009/05/30 12:59:11 UTC

svn commit: r780233 - in /maven/plugins/trunk/maven-pdf-plugin: ./ src/main/java/org/apache/maven/plugins/pdf/ src/test/java/org/apache/maven/plugins/pdf/stubs/ src/test/resources/unit/pdf/

Author: vsiveton
Date: Sat May 30 10:59:10 2009
New Revision: 780233

URL: http://svn.apache.org/viewvc?rev=780233&view=rev
Log:
MPDF-13: Copy resources from skin artifact

o added site renderer dependency to copy resources from skin jar
o updated test cases

Added:
    maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/FilteringMavenProjectStub.java   (with props)
    maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/ITextMavenProjectStub.java   (with props)
Modified:
    maven/plugins/trunk/maven-pdf-plugin/pom.xml
    maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java
    maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/DefaultMavenProjectStub.java
    maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/iText_pom.xml
    maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom.xml
    maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom_filtering.xml

Modified: maven/plugins/trunk/maven-pdf-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/pom.xml?rev=780233&r1=780232&r2=780233&view=diff
==============================================================================
--- maven/plugins/trunk/maven-pdf-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-pdf-plugin/pom.xml Sat May 30 10:59:10 2009
@@ -114,7 +114,37 @@
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>
       <artifactId>doxia-doc-renderer</artifactId>
-      <version>${doxia.version}</version>
+      <version>${doxiaSitetoolsVersion}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-container-default</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.doxia</groupId>
+      <artifactId>doxia-decoration-model</artifactId>
+      <version>${doxiaSitetoolsVersion}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-container-default</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.doxia</groupId>
+      <artifactId>doxia-site-renderer</artifactId>
+      <version>${doxiaSitetoolsVersion}</version>
       <exclusions>
         <exclusion>
           <groupId>org.codehaus.plexus</groupId>
@@ -179,6 +209,7 @@
 
   <properties>
     <doxia.version>1.1.1-SNAPSHOT</doxia.version>
+    <doxiaSitetoolsVersion>1.1.1-SNAPSHOT</doxiaSitetoolsVersion>
     <maven.version>2.0.6</maven.version>
   </properties>
 

Modified: maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java?rev=780233&r1=780232&r2=780233&view=diff
==============================================================================
--- maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java (original)
+++ maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java Sat May 30 10:59:10 2009
@@ -35,6 +35,7 @@
 import java.util.Properties;
 import java.util.TimeZone;
 
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.doxia.docrenderer.DocumentRenderer;
 import org.apache.maven.doxia.docrenderer.DocumentRendererException;
 import org.apache.maven.doxia.docrenderer.pdf.PdfRenderer;
@@ -49,6 +50,8 @@
 import org.apache.maven.doxia.site.decoration.Menu;
 import org.apache.maven.doxia.site.decoration.MenuItem;
 import org.apache.maven.doxia.site.decoration.io.xpp3.DecorationXpp3Reader;
+import org.apache.maven.doxia.siterenderer.Renderer;
+import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
 import org.apache.maven.doxia.tools.SiteToolException;
 
 import org.apache.maven.plugin.MojoExecutionException;
@@ -126,6 +129,13 @@
      */
     private String implementation;
 
+    /**
+     * The local repository.
+     *
+     * @parameter expression="${localRepository}"
+     */
+    private ArtifactRepository localRepository;
+
     // ----------------------------------------------------------------------
     // Mojo components
     // ----------------------------------------------------------------------
@@ -145,6 +155,13 @@
     private PdfRenderer itextRenderer;
 
     /**
+     * Site renderer.
+     *
+     * @component
+     */
+    private Renderer siteRenderer;
+
+    /**
      * Document Renderer.
      */
     private DocumentRenderer docRenderer;
@@ -186,7 +203,6 @@
 
             // Default is first in the list
             Locale defaultLocale = (Locale) localesList.get( 0 );
-
             Locale.setDefault( defaultLocale );
 
             for ( Iterator iterator = localesList.iterator(); iterator.hasNext(); )
@@ -196,12 +212,14 @@
                 File outputDir = getOutputDirectory( locale, defaultLocale );
 
                 File siteDirectoryFile = siteDirectory;
-
                 if ( !locale.getLanguage().equals( defaultLocale.getLanguage() ) )
                 {
                     siteDirectoryFile = new File( siteDirectory, locale.getLanguage() );
                 }
 
+                // Copy extra-resources
+                copyResources( locale );
+
                 docRenderer.render( siteDirectoryFile, outputDir, getDocumentModel() );
             }
         }
@@ -441,6 +459,61 @@
     }
 
     /**
+     * Parse the decoration model to find the skin artifact and copy its resources to the output dir.
+     *
+     * @param locale not null
+     * @throws MojoExecutionException if any
+     * @see #getDefaultDecorationModel()
+     */
+    private void copyResources( Locale locale )
+        throws MojoExecutionException
+    {
+        DecorationModel decorationModel = getDefaultDecorationModel();
+
+        File skinFile;
+        try
+        {
+            skinFile =
+                getSiteTool().getSkinArtifactFromRepository( localRepository,
+                                                             project.getRemoteArtifactRepositories(),
+                                                             decorationModel ).getFile();
+        }
+        catch ( SiteToolException e )
+        {
+            throw new MojoExecutionException( "SiteToolException: " + e.getMessage(), e );
+        }
+
+        if ( skinFile == null )
+        {
+            return;
+        }
+
+        if ( getLog().isDebugEnabled() )
+        {
+            getLog().debug( "Copy resources from skin artifact: '" + skinFile + "'..." );
+        }
+
+        try
+        {
+            SiteRenderingContext context =
+                siteRenderer.createContextForSkin( skinFile, new HashMap(), decorationModel, project.getName(),
+                                                   locale );
+            context.addSiteDirectory( new File( siteDirectory, locale.getLanguage() ) );
+
+            for ( Iterator i = context.getSiteDirectories().iterator(); i.hasNext(); )
+            {
+                File siteDirectoryFile = (File) i.next();
+
+                siteRenderer.copyResources( context, new File( siteDirectoryFile, "resources" ), outputDirectory );
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "IOException: " + e.getMessage(), e );
+        }
+    }
+
+    /**
      * Read and filter the <code>docDescriptor</code> file.
      *
      * @param project not null

Modified: maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/DefaultMavenProjectStub.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/DefaultMavenProjectStub.java?rev=780233&r1=780232&r2=780233&view=diff
==============================================================================
--- maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/DefaultMavenProjectStub.java (original)
+++ maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/DefaultMavenProjectStub.java Sat May 30 10:59:10 2009
@@ -21,9 +21,12 @@
 
 import java.io.File;
 import java.io.FileReader;
+import java.util.Collections;
 import java.util.List;
-import java.util.Properties;
 
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
@@ -40,7 +43,7 @@
         MavenXpp3Reader pomReader = new MavenXpp3Reader();
         try
         {
-            Model model = pomReader.read( new FileReader( new File( getBasedir() + "/pom_filtering.xml" ) ) );
+            Model model = pomReader.read( new FileReader( new File( getBasedir() + "/pom.xml" ) ) );
             setModel( model );
         }
         catch ( Exception e )
@@ -56,26 +59,18 @@
     }
 
     /** {@inheritDoc} */
-    public String getVersion()
-    {
-        return getModel().getVersion();
-    }
-
-    /** {@inheritDoc} */
     public File getBasedir()
     {
         return new File( super.getBasedir() + "/target/test-classes/unit/pdf/" );
     }
 
     /** {@inheritDoc} */
-    public List getDevelopers()
+    public List getRemoteArtifactRepositories()
     {
-        return getModel().getDevelopers();
-    }
+        ArtifactRepository repository =
+            new DefaultArtifactRepository( "central", "http://repo1.maven.org/maven2",
+                                           new DefaultRepositoryLayout() );
 
-    /** {@inheritDoc} */
-    public Properties getProperties()
-    {
-        return getModel().getProperties();
+        return Collections.singletonList( repository );
     }
 }

Added: maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/FilteringMavenProjectStub.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/FilteringMavenProjectStub.java?rev=780233&view=auto
==============================================================================
--- maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/FilteringMavenProjectStub.java (added)
+++ maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/FilteringMavenProjectStub.java Sat May 30 10:59:10 2009
@@ -0,0 +1,95 @@
+package org.apache.maven.plugins.pdf.stubs;
+
+/*
+ * 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 java.io.File;
+import java.io.FileReader;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
+
+/**
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public class FilteringMavenProjectStub
+    extends MavenProjectStub
+{
+    public FilteringMavenProjectStub()
+    {
+        MavenXpp3Reader pomReader = new MavenXpp3Reader();
+        try
+        {
+            Model model = pomReader.read( new FileReader( new File( getBasedir() + "/pom_filtering.xml" ) ) );
+            setModel( model );
+        }
+        catch ( Exception e )
+        {
+            throw new RuntimeException( e );
+        }
+    }
+
+    /** {@inheritDoc} */
+    public String getName()
+    {
+        return getModel().getName();
+    }
+
+    /** {@inheritDoc} */
+    public String getVersion()
+    {
+        return getModel().getVersion();
+    }
+
+    /** {@inheritDoc} */
+    public File getBasedir()
+    {
+        return new File( super.getBasedir() + "/target/test-classes/unit/pdf/" );
+    }
+
+    /** {@inheritDoc} */
+    public List getDevelopers()
+    {
+        return getModel().getDevelopers();
+    }
+
+    /** {@inheritDoc} */
+    public Properties getProperties()
+    {
+        return getModel().getProperties();
+    }
+
+    /** {@inheritDoc} */
+    public List getRemoteArtifactRepositories()
+    {
+        ArtifactRepository repository =
+            new DefaultArtifactRepository( "central", "http://repo1.maven.org/maven2",
+                                           new DefaultRepositoryLayout() );
+
+        return Collections.singletonList( repository );
+    }
+}

Propchange: maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/FilteringMavenProjectStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/FilteringMavenProjectStub.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/ITextMavenProjectStub.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/ITextMavenProjectStub.java?rev=780233&view=auto
==============================================================================
--- maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/ITextMavenProjectStub.java (added)
+++ maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/ITextMavenProjectStub.java Sat May 30 10:59:10 2009
@@ -0,0 +1,70 @@
+package org.apache.maven.plugins.pdf.stubs;
+
+/*
+ * 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 java.io.File;
+import java.io.FileReader;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
+
+/**
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public class ITextMavenProjectStub
+    extends MavenProjectStub
+{
+    public ITextMavenProjectStub()
+    {
+        MavenXpp3Reader pomReader = new MavenXpp3Reader();
+        try
+        {
+            Model model = pomReader.read( new FileReader( new File( getBasedir() + "/iText_pom.xml" ) ) );
+            setModel( model );
+        }
+        catch ( Exception e )
+        {
+            throw new RuntimeException( e );
+        }
+    }
+
+    /** {@inheritDoc} */
+    public File getBasedir()
+    {
+        return new File( super.getBasedir() + "/target/test-classes/unit/pdf/" );
+    }
+
+    /** {@inheritDoc} */
+    public List getRemoteArtifactRepositories()
+    {
+        ArtifactRepository repository =
+            new DefaultArtifactRepository( "central", "http://repo1.maven.org/maven2",
+                                           new DefaultRepositoryLayout() );
+
+        return Collections.singletonList( repository );
+    }
+}

Propchange: maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/ITextMavenProjectStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/stubs/ITextMavenProjectStub.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/iText_pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/iText_pom.xml?rev=780233&r1=780232&r2=780233&view=diff
==============================================================================
--- maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/iText_pom.xml (original)
+++ maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/iText_pom.xml Sat May 30 10:59:10 2009
@@ -27,6 +27,8 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-pdf-plugin</artifactId>
         <configuration>
+          <project implementation="org.apache.maven.plugins.pdf.stubs.ITextMavenProjectStub"/>
+          <localRepository>${localRepository}</localRepository>
           <docDescriptor>${basedir}/target/test-classes/unit/pdf/src/site/pdf.xml</docDescriptor>
           <siteDirectory>${basedir}/target/test-classes/unit/pdf/src/site/</siteDirectory>
           <outputDirectory>${basedir}/target/test-output/pdf</outputDirectory>

Modified: maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom.xml?rev=780233&r1=780232&r2=780233&view=diff
==============================================================================
--- maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom.xml (original)
+++ maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom.xml Sat May 30 10:59:10 2009
@@ -27,6 +27,8 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-pdf-plugin</artifactId>
         <configuration>
+          <project implementation="org.apache.maven.plugins.pdf.stubs.DefaultMavenProjectStub"/>
+          <localRepository>${localRepository}</localRepository>
           <docDescriptor>${basedir}/target/test-classes/unit/pdf/src/site/pdf.xml</docDescriptor>
           <siteDirectory>${basedir}/target/test-classes/unit/pdf/src/site/</siteDirectory>
           <outputDirectory>${basedir}/target/test-output/pdf</outputDirectory>

Modified: maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom_filtering.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom_filtering.xml?rev=780233&r1=780232&r2=780233&view=diff
==============================================================================
--- maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom_filtering.xml (original)
+++ maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/pom_filtering.xml Sat May 30 10:59:10 2009
@@ -54,7 +54,8 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-pdf-plugin</artifactId>
         <configuration>
-          <project implementation="org.apache.maven.plugins.pdf.stubs.DefaultMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.pdf.stubs.FilteringMavenProjectStub"/>
+          <localRepository>${localRepository}</localRepository>
           <docDescriptor>${basedir}/target/test-classes/unit/pdf/src/site/pdf_filtering.xml</docDescriptor>
           <siteDirectory>${basedir}/target/test-classes/unit/pdf/src/site/</siteDirectory>
           <outputDirectory>${basedir}/target/test-output/pdf</outputDirectory>