Hi all,

When using the latest version of FOP (which is the only version that behaves
really well with my system) I came across some API changes that breaks
FopTransform from maverick-opt-fop.

1. Options are now only supported for command line operations;
2. The Avalon logger now must be set with 'driver.setLogger(log)' instead of
'MessageHandler.setScreenLogger(log)'.

I do not think 'options' is supported in any other way now; I could not find
any docs about it (though I didn't search the mailing list. As it not really
encouraged anyway, imho it's best to just discard it.

I've included a path that works with both the older (4) and the 5rc3a
versions of FOP. I do not set a logger though (but have the 5rc3a version as
a comment), as one of the methods breaks one of the versions. If not set,
the default (screen-) logger will be used.

Eelco
Index: FopTransform.java
===================================================================
RCS file: 
/cvsroot/mav/opt-fop/src/java/org/infohazard/maverick/opt/transform/FopTransform.java,v
retrieving revision 1.11
diff -u -r1.11 FopTransform.java
--- FopTransform.java   7 Aug 2002 18:03:05 -0000       1.11
+++ FopTransform.java   9 Jun 2003 16:35:29 -0000
@@ -2,12 +2,10 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.Reader;
-import java.io.StringReader;
 import java.io.StringWriter;
 
 import javax.servlet.ServletConfig;
@@ -28,9 +26,8 @@
 import org.apache.avalon.framework.logger.Log4JLogger;
 import org.apache.fop.apps.Driver;
 import org.apache.fop.apps.FOPException;
-import org.apache.fop.apps.Options;
-import org.apache.fop.messaging.MessageHandler;
 import org.apache.log4j.Category;
+
 import org.infohazard.maverick.flow.ConfigException;
 import org.infohazard.maverick.flow.Transform;
 import org.infohazard.maverick.flow.TransformContext;
@@ -41,7 +38,9 @@
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 
-
+/**
+ * This Transform runs the input (XSL:FO) through the apache FOP processor
+ */
 public class FopTransform implements Transform
 {
 
@@ -51,7 +50,6 @@
        protected static final String ATTR_OUTPUT = "output";
        protected static final String ATTR_DISPOSITION_TYPE = "disposition-type";
        protected static final String ATTR_FILENAME = "filename";
-       protected static final String ATTR_CONFIG = "config";
        
        protected TransformerFactory tFactory = TransformerFactory.newInstance();
 
@@ -64,23 +62,15 @@
         */
        protected String filename;
 
-       
-       protected String configPath = null;
-
-       public FopTransform(Element transformNode, ServletConfig servletCfg) throws 
ConfigException
-       
+       public FopTransform(Element transformNode, ServletConfig servletCfg) 
+                       throws ConfigException
        {
                this.setOutput(XML.getValue(transformNode, ATTR_OUTPUT));
                this.filename = XML.getValue(transformNode, ATTR_FILENAME);
-
-               String path = XML.getValue(transformNode, ATTR_CONFIG);
-               if (path!=null)
-               {
-                       this.configPath = 
servletCfg.getServletContext().getRealPath(path);
-               }
        }
 
-       public void setOutput(String output) throws ConfigException {
+       public void setOutput(String output) throws ConfigException 
+       {
                if (output != null)
                {
                        if (output.equalsIgnoreCase("pdf"))
@@ -248,24 +238,14 @@
                private void go(InputSource input) throws IOException, ServletException
                {
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                       Log4JLogger dlog = new Log4JLogger(fopDriverLog);
-                       MessageHandler.setScreenLogger(dlog);
-                       
                        try
                        {
-                               Options options = null;
-
-                               //load userconfig file if specified
-                               if (configPath != null)
-                               {
-                                       //load the user config file if specified
-                                       options = new Options(new File(configPath));
-                               } else {
-                                       //try and load the standard options off of the 
classpath
-                                       options = new Options();
-                               }
                                Driver driver = new Driver(input, baos);
-                               driver.setLogger(dlog);
+                               Log4JLogger dlog = new Log4JLogger(fopDriverLog);
+                               
+                               // works with fop-0.20.5rc3a
+                               //driver.enableLogging(dlog);
+                               
                                driver.setRenderer(output);
                                driver.run();
                        }

Reply via email to