gmazza      2004/07/11 15:55:09

  Modified:    src/java/org/apache/fop/servlet FopPrintServlet.java
  Log:
  Moved FOPPrintServlet from using XSLTInputHandler to JAXP.
  
  Revision  Changes    Path
  1.14      +31 -10    xml-fop/src/java/org/apache/fop/servlet/FopPrintServlet.java
  
  Index: FopPrintServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/servlet/FopPrintServlet.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FopPrintServlet.java      25 Jun 2004 23:35:00 -0000      1.13
  +++ FopPrintServlet.java      11 Jul 2004 22:55:08 -0000      1.14
  @@ -22,18 +22,30 @@
   import java.io.InputStream;
   import java.io.PrintWriter;
   
  +// JAXP
   import javax.servlet.ServletException;
   import javax.servlet.http.HttpServlet;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  +import javax.xml.transform.Transformer;
   import javax.xml.transform.TransformerFactory;
  +import javax.xml.transform.Result;
  +import javax.xml.transform.Source;
  +import javax.xml.transform.sax.SAXResult;
  +import javax.xml.transform.stream.StreamSource;
   
  +// XML
   import org.apache.commons.logging.impl.SimpleLog;
   import org.apache.commons.logging.Log;
   import org.apache.fop.apps.Driver;
  -import org.apache.fop.apps.XSLTInputHandler;
   import org.xml.sax.InputSource;
   
  +//Java
  +import java.io.File;
  +import java.io.IOException;
  +import java.io.OutputStream;
  +
  +
   /**
    * Example servlet to generate a fop printout from a servlet.
    * Printing goes to the default printer on host where the servlet executes.
  @@ -55,7 +67,6 @@
    * @version $Id$
    * (todo) Doesn't work since there's no AWTRenderer at the moment. Revisit when
    * available.
  - * (todo) Don't use XSLTInputHandler anymore
    * (todo) Ev. add caching mechanism for Templates objects
    */
   public class FopPrintServlet extends HttpServlet {
  @@ -101,10 +112,7 @@
                   InputStream file = new java.io.FileInputStream(foParam);
                   renderFO(new InputSource(file), response);
               } else if ((xmlParam != null) && (xsltParam != null)) {
  -                XSLTInputHandler input =
  -                  new XSLTInputHandler(new File(xmlParam),
  -                                       new File(xsltParam), null);
  -                renderXML(input, response);
  +                renderXML(new File(xmlParam), new File(xsltParam), response);
               } else {
                   response.setContentType("text/html");
   
  @@ -142,16 +150,29 @@
   
       /**
        * Renders an FO generated using an XML and a stylesheet to the default printer.
  -     * @param input XSLTInputHandler to use
  -     * @param response Response to write to
  +     * @param xmlfile XML file object
  +     * @param xsltfile XSLT stylesheet 
  +     * @param response HTTP response object
        * @throws ServletException In case of a problem
        */
  -    public void renderXML(XSLTInputHandler input,
  +    public void renderXML(File xmlfile, File xsltfile,
                             HttpServletResponse response) throws ServletException {
           try {
               Driver driver = new Driver();
               driver.setRenderer(Driver.RENDER_PRINT);
  -            driver.render(input.getParser(), input.getInputSource());
  +
  +            // Setup XSLT
  +            TransformerFactory factory = TransformerFactory.newInstance();
  +            Transformer transformer = factory.newTransformer(new 
StreamSource(xsltfile));
  +            
  +            // Setup input for XSLT transformation
  +            Source src = new StreamSource(xmlfile);
  +        
  +            // 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) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to