[GitHub] hboutemy closed pull request #7: [DOXIA-409] Upgrade to FOP 2.2

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[GitHub] hboutemy closed pull request #7: [DOXIA-409] Upgrade to FOP 2.2

GitBox
hboutemy closed pull request #7: [DOXIA-409] Upgrade to FOP 2.2
URL: https://github.com/apache/maven-doxia/pull/7
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/doxia-modules/doxia-module-fo/pom.xml b/doxia-modules/doxia-module-fo/pom.xml
index 74e3bb2d..428753ac 100644
--- a/doxia-modules/doxia-module-fo/pom.xml
+++ b/doxia-modules/doxia-module-fo/pom.xml
@@ -85,7 +85,7 @@ under the License.
     <dependency>
       <groupId>org.apache.xmlgraphics</groupId>
       <artifactId>fop</artifactId>
-      <version>0.95</version>
+      <version>2.2</version>
     </dependency>
     <dependency>
       <groupId>log4j</groupId>
diff --git a/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoUtils.java b/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoUtils.java
index a1e3efae..41a76c18 100644
--- a/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoUtils.java
+++ b/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoUtils.java
@@ -24,6 +24,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.net.URI;
 import java.util.Date;
 
 import javax.xml.transform.Result;
@@ -38,6 +39,7 @@
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.apps.Fop;
 import org.apache.fop.apps.FopFactory;
+import org.apache.fop.apps.FopFactoryBuilder;
 import org.apache.fop.apps.MimeConstants;
 import org.apache.maven.doxia.document.DocumentModel;
 import org.codehaus.plexus.util.IOUtil;
@@ -52,28 +54,11 @@
  */
 public class FoUtils
 {
-    /** To reuse the FopFactory **/
-    private static final FopFactory FOP_FACTORY = FopFactory.newInstance();
-
     /** To reuse the TransformerFactory **/
     private static final TransformerFactory TRANSFORMER_FACTORY = TransformerFactory.newInstance();
 
-    /**
-     * Converts an FO file to a PDF file using FOP.
-     *
-     * @param fo the FO file, not null.
-     * @param pdf the target PDF file, not null.
-     * @param resourceDir The base directory for relative path resolution, could be null.
-     * If null, defaults to the parent directory of fo.
-     * @param documentModel the document model to add PDF metadatas like author, title and keywords, could be null.
-     * @throws javax.xml.transform.TransformerException In case of a conversion problem.
-     * @since 1.1.1
-     */
-    public static void convertFO2PDF( File fo, File pdf, String resourceDir, DocumentModel documentModel )
-        throws TransformerException
-    {
-        FOUserAgent foUserAgent = getDefaultUserAgent( fo, resourceDir );
 
+    private static void prepareUserAgent( FOUserAgent foUserAgent, DocumentModel documentModel ) {
         if ( documentModel != null && documentModel.getMeta() != null )
         {
             // http://xmlgraphics.apache.org/fop/embedding.html#user-agent
@@ -113,8 +98,6 @@ public static void convertFO2PDF( File fo, File pdf, String resourceDir, Documen
         {
             foUserAgent.setCreationDate( new Date() );
         }
-
-        convertFO2PDF( fo, pdf, resourceDir, foUserAgent );
     }
 
     /**
@@ -124,16 +107,13 @@ public static void convertFO2PDF( File fo, File pdf, String resourceDir, Documen
      * @param pdf the target PDF file, not null.
      * @param resourceDir The base directory for relative path resolution, could be null.
      * If null, defaults to the parent directory of fo.
-     * @param foUserAgent the FOUserAgent to use.
-     *      May be null, in which case a default user agent will be used.
+     * @param documentModel the document model to add PDF metadatas like author, title and keywords, could be null.
      * @throws javax.xml.transform.TransformerException In case of a conversion problem.
      * @since 1.1.1
      */
-    public static void convertFO2PDF( File fo, File pdf, String resourceDir, FOUserAgent foUserAgent )
+    public static void convertFO2PDF( File fo, File pdf, String resourceDir, DocumentModel documentModel )
         throws TransformerException
     {
-        FOUserAgent userAgent = ( foUserAgent == null ? getDefaultUserAgent( fo, resourceDir ) : foUserAgent );
-
         OutputStream out = null;
         try
         {
@@ -149,7 +129,11 @@ public static void convertFO2PDF( File fo, File pdf, String resourceDir, FOUserA
             Result res = null;
             try
             {
-                Fop fop = FOP_FACTORY.newFop( MimeConstants.MIME_PDF, userAgent, out );
+                URI baseURI = getBaseURI( fo, resourceDir );
+                FopFactory fopFactory = new FopFactoryBuilder( baseURI ).build();
+                FOUserAgent userAgent = fopFactory.newFOUserAgent();
+                prepareUserAgent( userAgent, documentModel );
+                Fop fop = fopFactory.newFop( MimeConstants.MIME_PDF, userAgent, out );
                 res = new SAXResult( fop.getDefaultHandler() );
             }
             catch ( FOPException e )
@@ -193,34 +177,22 @@ public static void convertFO2PDF( File fo, File pdf, String resourceDir )
     }
 
     /**
-     * Returns a base URL to be used by the FOUserAgent.
+     * Returns a base URI.
      *
      * @param fo the FO file.
      * @param resourceDir the resource directory.
-     * @return String.
+     * @return URI.
      */
-    private static String getBaseURL( File fo, String resourceDir )
+    private static URI getBaseURI( File fo, String resourceDir )
     {
-        String url = null;
-
         if ( resourceDir == null )
         {
-            url = "file:///" + fo.getParent() + "/";
+            return fo.getParentFile().toURI();
         }
         else
         {
-            url = "file:///" + resourceDir + "/";
+            return new File( resourceDir + "/" ).toURI();
         }
-
-        return url;
-    }
-
-    private static FOUserAgent getDefaultUserAgent( File fo, String resourceDir )
-    {
-        FOUserAgent foUserAgent = FOP_FACTORY.newFOUserAgent();
-        foUserAgent.setBaseURL( getBaseURL( fo, resourceDir ) );
-
-        return foUserAgent;
     }
 
     private FoUtils()


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[hidden email]


With regards,
Apache Git Services

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