]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Removed the Driver.run() method in favor of JAXP.
authorGlen Mazza <gmazza@apache.org>
Wed, 14 Jul 2004 23:01:56 +0000 (23:01 +0000)
committerGlen Mazza <gmazza@apache.org>
Wed, 14 Jul 2004 23:01:56 +0000 (23:01 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197790 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/apps/Driver.java
src/java/org/apache/fop/servlet/FopPrintServlet.java
test/java/org/apache/fop/BasicDriverTestCase.java

index 2a765c74e50755893c5d6e31fb3580a6d9711787..97715b25a34eb66b5456f97c7808d6f6069a7cd2 100644 (file)
@@ -37,18 +37,11 @@ import org.apache.fop.render.awt.AWTRenderer;
 /**
  * Primary class that drives overall FOP process.
  * <P>
- * The simplest way to use this is to instantiate it with the
- * InputSource and OutputStream, then set the renderer desired, and
- * calling run();
+ * JAXP is the standard method of embedding FOP in Java programs.
+ * Please check our embedding page (http://xml.apache.org/fop/embedding.html)
+ * for samples (these are also available within the distribution in 
+ * FOP_DIR\examples\embedding)
  * <P>
- * Here is an example use of Driver which outputs PDF:
- *
- * <PRE>
- * Driver driver = new Driver(new InputSource (args[0]),
- * new FileOutputStream(args[1]));
- * driver.setRenderer(RENDER_PDF);
- * driver.run();
- * </PRE>
  * If necessary, calling classes can call into the lower level
  * methods to setup and
  * render. Methods within FOUserAgent can be called to set the
@@ -64,15 +57,6 @@ import org.apache.fop.render.awt.AWTRenderer;
  * is called. The invocation of the method is 
  * render(Parser, InputSource).
  * <P>
- * A third possibility may be used to build the FO Tree, namely
- * calling getContentHandler() and firing the SAX events yourself.
- * This will work either for DOM Tree input or SAX.  See the embed
- * examples on the FOP web page for more details or in the 
- * examples\embedding directory of the main distribution for more details.
- * <P>
- * Once the FO Tree is built, the format() and render() methods may be
- * called in that order.
- * <P>
  * Here is an example use of Driver which outputs to AWT:
  *
  * <PRE>
@@ -93,11 +77,6 @@ public class Driver implements Constants {
      */
     private int renderType = NOT_SET;
 
-    /**
-     * the source of the FO file
-     */
-    private InputSource source;
-
     /**
      * the stream to use to output the results of the renderer
      */
@@ -130,9 +109,8 @@ public class Driver implements Constants {
      * @param source InputSource to take the XSL-FO input from
      * @param stream Target output stream
      */
-    public Driver(InputSource source, OutputStream stream) {
+    public Driver(OutputStream stream) {
         this();
-        this.source = source;
         this.stream = stream;
     }
 
@@ -159,7 +137,6 @@ public class Driver implements Constants {
      * The output stream is cleared. The renderer is cleared.
      */
     public synchronized void reset() {
-        source = null;
         stream = null;
         if (treeBuilder != null) {
             treeBuilder.reset();
@@ -205,15 +182,6 @@ public class Driver implements Constants {
         }
     }
 
-    /**
-     * Set the source for the FO document. This can be a normal SAX
-     * InputSource, or an DocumentInputSource containing a DOM document.
-     * @see DocumentInputSource
-     */
-    public void setInputSource(InputSource source) {
-        this.source = source;
-    }
-
     /**
      * Method to set the rendering type desired. Must be one of
      * <ul>
@@ -330,27 +298,4 @@ public class Driver implements Constants {
             throw new FOPException(e);
         }
     }
-
-    /**
-     * Runs the formatting and rendering process using the previously set
-     * parser, input source, renderer and output stream.
-     * If no parser was set, get a default SAX parser.
-     * @throws IOException in case of IO errors.
-     * @throws FOPException if anything else goes wrong.
-     */
-    public synchronized void run() throws IOException, FOPException {
-        if (!isInitialized()) {
-            initialize();
-        }
-
-        if (renderType == NOT_SET) {
-            renderType = RENDER_PDF;
-        }
-
-        if (source == null) {
-            throw new FOPException("InputSource is not set.");
-        }
-
-        render(FOFileHandler.createParser(), source);
-    }
 }
index 301a70242a42338466e33678f03b806158f486ff..e83ce85c68bbd6e90ff1f514b07c5383123095b9 100644 (file)
@@ -110,7 +110,7 @@ public class FopPrintServlet extends HttpServlet {
 
             if (foParam != null) {
                 InputStream file = new java.io.FileInputStream(foParam);
-                renderFO(new InputSource(file), response);
+                renderFO(file, response);
             } else if ((xmlParam != null) && (xsltParam != null)) {
                 renderXML(new File(xmlParam), new File(xsltParam), response);
             } else {
@@ -135,13 +135,25 @@ public class FopPrintServlet extends HttpServlet {
      * @param response Response to write to
      * @throws ServletException In case of a problem
      */
-    public void renderFO(InputSource foFile,
+    public void renderFO(InputStream foFile,
                          HttpServletResponse response) throws ServletException {
         try {
-            Driver driver = new Driver(foFile, null);
+            Driver driver = new Driver();
             driver.setRenderer(Driver.RENDER_PRINT);
-            driver.run();
 
+            // Setup JAXP
+            TransformerFactory factory = TransformerFactory.newInstance();
+            Transformer transformer = factory.newTransformer(); //identity transformer
+            
+            // Setup input for XSLT transformation
+            Source src = new StreamSource(foFile);
+            
+            // Resulting SAX events (the generated FO) must be piped through to FOP
+            Result res = new SAXResult(driver.getContentHandler());
+            
+            // Start XSLT transformation and FOP processing
+            transformer.transform(src, res);
+            
             reportOK (response);
         } catch (Exception ex) {
             throw new ServletException(ex);
index d591d66025cbbd07c93d1ad8c918a916f19d3f55..5f722fbc11426483d25a8d186c6c5f807786d8cf 100644 (file)
@@ -54,38 +54,6 @@ public class BasicDriverTestCase extends AbstractFOPTestCase {
         super(name);
     }
 
-    /**
-     * Tests Driver with its special constructor for FO-->PDF conversion.
-     * @throws Exception if anything fails
-     */
-    public void testFO2PDFWithConstructorSetup() throws Exception {
-        File foFile = new File(getBaseDir(), "test/xml/bugtests/block.fo");
-        ByteArrayOutputStream baout = new ByteArrayOutputStream();
-        Driver driver = new Driver(
-            new InputSource(foFile.toURL().toExternalForm()),
-            baout);
-
-        driver.setRenderer(Driver.RENDER_PDF);
-        driver.run();
-        assertTrue("Generated PDF has zero length", baout.size() > 0);
-    }
-
-    /**
-     * Tests Driver with InputSource and OutputStream.
-     * @throws Exception if anything fails
-     */
-    public void testFO2PDFWithInputSource() throws Exception {
-        File foFile = new File(getBaseDir(), "test/xml/bugtests/block.fo");
-        ByteArrayOutputStream baout = new ByteArrayOutputStream();
-        Driver driver = new Driver();
-
-        driver.setInputSource(new InputSource(foFile.toURL().toExternalForm()));
-        driver.setOutputStream(baout);
-        driver.setRenderer(Driver.RENDER_PDF);
-        driver.run();
-        assertTrue("Generated PDF has zero length", baout.size() > 0);
-    }
-
     private Document loadDocument(File foFile) 
                 throws TransformerException {
         TransformerFactory factory = TransformerFactory.newInstance();