gmazza      2004/07/12 22:25:26

  Modified:    src/java/org/apache/fop/apps Driver.java
               src/java/org/apache/fop/fo FOTreeBuilder.java
  Log:
  1. Removed Driver.setXMLReader(), this can be done via JAXP.
  
  2. Moved the business logic for creating FOTreeBuilder's FOInputHandler
  object from Driver to FOTreeBuilder.
  
  Revision  Changes    Path
  1.83      +18 -67    xml-fop/src/java/org/apache/fop/apps/Driver.java
  
  Index: Driver.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/Driver.java,v
  retrieving revision 1.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- Driver.java       13 Jul 2004 00:16:22 -0000      1.82
  +++ Driver.java       13 Jul 2004 05:25:26 -0000      1.83
  @@ -27,17 +27,12 @@
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   import org.xml.sax.XMLReader;
  -import org.w3c.dom.Document;
   
   // FOP
   import org.apache.fop.fo.Constants;
   import org.apache.fop.fo.ElementMapping;
   import org.apache.fop.fo.FOTreeBuilder;
  -import org.apache.fop.fo.FOInputHandler;
  -import org.apache.fop.area.AreaTreeHandler;
   import org.apache.fop.render.awt.AWTRenderer;
  -import org.apache.fop.render.mif.MIFHandler;
  -import org.apache.fop.render.rtf.RTFHandler;
   
   /**
    * Primary class that drives overall FOP process.
  @@ -94,14 +89,9 @@
       private FOTreeBuilder treeBuilder;
   
       /**
  -     * the renderer type code given by setRenderer
  +     * the render type code given by setRender
        */
  -    private int rendererType = NOT_SET;
  -
  -    /**
  -     * the SAX ContentHandler
  -     */
  -    private FOInputHandler foInputHandler;
  +    private int renderType = NOT_SET;
   
       /**
        * the source of the FO file
  @@ -114,11 +104,6 @@
       private OutputStream stream;
   
       /**
  -     * The XML parser to use when building the FO tree
  -     */
  -    private XMLReader reader;
  -
  -    /**
        * The system resources that FOP will use
        */
       private FOUserAgent foUserAgent = null;
  @@ -134,10 +119,10 @@
        * Constructor for AWTRenderer, which reuses the
        * same renderer instance for document reloading
        */
  -    public Driver(AWTRenderer renderer) {
  +    public Driver(AWTRenderer render) {
           this();
  -        rendererType = RENDER_AWT;
  -        foUserAgent = renderer.getUserAgent();
  +        renderType = RENDER_AWT;
  +        foUserAgent = render.getUserAgent();
       }
   
       /**
  @@ -176,7 +161,6 @@
       public synchronized void reset() {
           source = null;
           stream = null;
  -        reader = null;
           if (treeBuilder != null) {
               treeBuilder.reset();
           }
  @@ -207,7 +191,7 @@
       }
   
       /**
  -     * Set the OutputStream to use to output the result of the Renderer
  +     * Set the OutputStream to use to output the result of the Render
        * (if applicable)
        * @param stream the stream to output the result of rendering to
        */
  @@ -231,15 +215,6 @@
       }
   
       /**
  -     * Sets the reader used when reading in the source. If not set,
  -     * this defaults to a basic SAX parser.
  -     * @param reader the reader to use.
  -     */
  -    public void setXMLReader(XMLReader reader) {
  -        this.reader = reader;
  -    }
  -
  -    /**
        * Method to set the rendering type desired. Must be one of
        * <ul>
        * <li>Driver.RENDER_PDF</li>
  @@ -258,12 +233,12 @@
        */
       public void setRenderer(int renderType) throws IllegalArgumentException {
           if (renderType < RENDER_MIN_CONST || renderType > RENDER_MAX_CONST) {
  -            rendererType = NOT_SET;
  +            renderType = NOT_SET;
               throw new IllegalArgumentException(
  -                "Invalid renderer ID#" + renderType);
  +                "Invalid render ID#" + renderType);
           }
   
  -        this.rendererType = renderType;
  +        this.renderType = renderType;
       }
   
       /**
  @@ -285,7 +260,7 @@
       }
   
       /**
  -     * Determines which SAX ContentHandler is appropriate for the rendererType.
  +     * Determines which SAX ContentHandler is appropriate for the renderType.
        * Structure renderers (e.g. MIF & RTF) each have a specialized
        * ContentHandler that directly place data into the output stream. Layout
        * renderers (e.g. PDF & PostScript) use a ContentHandler that builds an FO
  @@ -298,27 +273,11 @@
               initialize();
           }
   
  -        if (rendererType != RENDER_PRINT && rendererType != RENDER_AWT) {
  +        if (renderType != RENDER_PRINT && renderType != RENDER_AWT) {
              validateOutputStream();
           }
   
  -        // TODO: - do this stuff in a better way
  -        // PIJ: I guess the structure handler should be created by the renderer.
  -        if (rendererType == RENDER_MIF) {
  -            foInputHandler = new MIFHandler(foUserAgent, stream);
  -        } else if (rendererType == RENDER_RTF) {
  -            foInputHandler = new RTFHandler(foUserAgent, stream);
  -        } else {
  -            if (rendererType == NOT_SET) {
  -                throw new IllegalStateException(
  -                        "Renderer must be set using setRenderer(int renderType)");
  -            }
  -
  -            foInputHandler = new AreaTreeHandler(foUserAgent, rendererType, 
  -                stream);
  -        }
  -
  -        treeBuilder.setFOInputHandler(foInputHandler);
  +        treeBuilder.initialize(renderType, foUserAgent, stream);
           return treeBuilder;
       }
   
  @@ -357,11 +316,7 @@
                to look in those objects to see where FOP picks up control of
                processing again. For Structure Renderers (e.g. MIF & RTF), the SAX
                events are handled directly. For Layout Renderers (e.g. PDF &
  -             PostScript), an FO Tree is built by the FOTreeHandler, which in
  -             turn fires events when a PageSequence object is complete. This
  -             allows higher-level control objects (such as this class) to work
  -             directly with PageSequence objects. See foPageSequenceComplete()
  -             where this level of control is implemented.
  +             PostScript), an Area Tree is managed by the AreaTreeHandler.
                */
               parser.parse(source);
           } catch (SAXException e) {
  @@ -377,7 +332,7 @@
       }
   
       /**
  -     * Runs the formatting and renderering process using the previously set
  +     * 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.
  @@ -388,18 +343,14 @@
               initialize();
           }
   
  -        if (rendererType == NOT_SET) {
  -            rendererType = RENDER_PDF;
  +        if (renderType == NOT_SET) {
  +            renderType = RENDER_PDF;
           }
   
           if (source == null) {
               throw new FOPException("InputSource is not set.");
           }
   
  -        if (reader == null) {
  -            reader = FOFileHandler.createParser();
  -        }
  -
  -        render(reader, source);
  +        render(FOFileHandler.createParser(), source);
       }
   }
  
  
  
  1.36      +22 -4     xml-fop/src/java/org/apache/fop/fo/FOTreeBuilder.java
  
  Index: FOTreeBuilder.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOTreeBuilder.java,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- FOTreeBuilder.java        26 Jun 2004 19:37:13 -0000      1.35
  +++ FOTreeBuilder.java        13 Jul 2004 05:25:26 -0000      1.36
  @@ -22,6 +22,7 @@
   import java.io.IOException;
   import java.io.InputStream;
   import java.io.InputStreamReader;
  +import java.io.OutputStream;
   import java.io.Reader;
   import java.util.Enumeration;
   import java.util.Iterator;
  @@ -32,6 +33,10 @@
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import org.apache.fop.apps.FOPException;
  +import org.apache.fop.apps.FOUserAgent;
  +import org.apache.fop.area.AreaTreeHandler;
  +import org.apache.fop.render.mif.MIFHandler;
  +import org.apache.fop.render.rtf.RTFHandler;
   import org.apache.fop.fo.ElementMapping.Maker;
   import org.apache.fop.fo.pagination.Root;
   import org.xml.sax.Attributes;
  @@ -90,11 +95,24 @@
       }
   
       /**
  -     * Sets the structure handler to receive events.
  -     * @param foih FOInputHandler instance
  +     * Creates the FOInputHandler object based on passed-in render type
  +     * @param render type
        */
  -    public void setFOInputHandler(FOInputHandler foih) {
  -        this.foInputHandler = foih;
  +    public void initialize(int renderType, FOUserAgent foUserAgent, 
  +        OutputStream stream) throws FOPException {
  +        if (renderType == Constants.RENDER_MIF) {
  +            foInputHandler = new MIFHandler(foUserAgent, stream);
  +        } else if (renderType == Constants.RENDER_RTF) {
  +            foInputHandler = new RTFHandler(foUserAgent, stream);
  +        } else {
  +            if (renderType == Constants.NOT_SET) {
  +                throw new IllegalStateException(
  +                        "Render must be set using setRender(int renderType)");
  +            }
  +
  +            foInputHandler = new AreaTreeHandler(foUserAgent, renderType, 
  +                stream);
  +        }
       }
   
       /**
  
  
  

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

Reply via email to