You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by pi...@apache.org on 2002/09/18 00:01:08 UTC

cvs commit: xml-fop/src/org/apache/fop/apps CommandLineOptions.java FOInputHandler.java InputHandler.java Options.java TraxInputHandler.java XSLTInputHandler.java

pietsch     2002/09/17 15:01:07

  Modified:    src/org/apache/fop/apps Tag: fop-0_20_2-maintain
                        CommandLineOptions.java FOInputHandler.java
                        InputHandler.java Options.java
                        TraxInputHandler.java XSLTInputHandler.java
  Log:
  Preliminarily added additional constructors to Options
  and InputHandlers to provide more flexibility for
  data and XSLT input sources.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.14.2.7  +3 -2      xml-fop/src/org/apache/fop/apps/CommandLineOptions.java
  
  Index: CommandLineOptions.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/CommandLineOptions.java,v
  retrieving revision 1.14.2.6
  retrieving revision 1.14.2.7
  diff -u -r1.14.2.6 -r1.14.2.7
  --- CommandLineOptions.java	2 Aug 2002 20:28:46 -0000	1.14.2.6
  +++ CommandLineOptions.java	17 Sep 2002 22:01:04 -0000	1.14.2.7
  @@ -370,7 +370,8 @@
       /**
        *
        */
  -    public InputHandler getInputHandler() {
  +    public InputHandler getInputHandler()
  +      throws FOPException {
           switch (inputmode) {
           case FO_INPUT:
               return new FOInputHandler(fofile);
  
  
  
  1.6.2.1   +5 -1      xml-fop/src/org/apache/fop/apps/FOInputHandler.java
  
  Index: FOInputHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/FOInputHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -u -r1.6 -r1.6.2.1
  --- FOInputHandler.java	21 Aug 2001 06:18:54 -0000	1.6
  +++ FOInputHandler.java	17 Sep 2002 22:01:05 -0000	1.6.2.1
  @@ -40,5 +40,9 @@
           return super.createParser();
       }
   
  +    public void run(Driver driver) throws FOPException {
  +        throw new FOPException("not implemented: FOInputHandler.run(Driver)");
  +    }
  +
   }
   
  
  
  
  1.5.2.2   +2 -1      xml-fop/src/org/apache/fop/apps/InputHandler.java
  
  Index: InputHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/InputHandler.java,v
  retrieving revision 1.5.2.1
  retrieving revision 1.5.2.2
  diff -u -r1.5.2.1 -r1.5.2.2
  --- InputHandler.java	25 Mar 2002 18:08:27 -0000	1.5.2.1
  +++ InputHandler.java	17 Sep 2002 22:01:05 -0000	1.5.2.2
  @@ -26,6 +26,7 @@
   
       abstract public InputSource getInputSource();
       abstract public XMLReader getParser() throws FOPException;
  +    abstract public void run(Driver driver) throws FOPException;
   
   
       static public InputSource urlInputSource(URL url) {
  
  
  
  1.9.2.1   +34 -17    xml-fop/src/org/apache/fop/apps/Attic/Options.java
  
  Index: Options.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/Attic/Options.java,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- Options.java	10 Aug 2001 08:18:43 -0000	1.9
  +++ Options.java	17 Sep 2002 22:01:06 -0000	1.9.2.1
  @@ -31,6 +31,16 @@
           initOptions();
       }
   
  +    public Options(InputStream userConfig) throws FOPException {
  +        this();
  +        this.loadUserconfiguration(userConfig);
  +    }
  +
  +    public Options(InputSource userConfig) throws FOPException {
  +        this();
  +        this.loadUserconfiguration(userConfig);
  +    }
  +
       public Options(File userConfigFile) throws FOPException {
           this();
           this.loadUserconfiguration(userConfigFile);
  @@ -147,24 +157,31 @@
       }
   
       public void loadUserconfiguration(File userConfigFile) {
  -        // read user configuration file
           if (userConfigFile != null) {
  -            MessageHandler.logln("reading user configuration file");
  -            ConfigurationReader reader =
  -                new ConfigurationReader(InputHandler.fileInputSource(userConfigFile));
  +            loadUserconfiguration(InputHandler.fileInputSource(userConfigFile));
  +        }
  +    }
  +
  +    public void loadUserconfiguration(InputStream userConfig) {
  +        loadUserconfiguration(new InputSource(userConfig));
  +    }
  +
  +    public void loadUserconfiguration(InputSource userConfigSource) {
  +        // read user configuration
  +        ConfigurationReader reader =
  +            new ConfigurationReader(userConfigSource);
  +        if (errorDump) {
  +            reader.setDumpError(true);
  +        }
  +        try {
  +            reader.start();
  +        } catch (org.apache.fop.apps.FOPException error) {
  +            MessageHandler.errorln("Could not load user configuration "
  +                                   + userConfigSource.getSystemId() + " - error: "
  +                                   + error.getMessage());
  +            MessageHandler.errorln("using default values");
               if (errorDump) {
  -                reader.setDumpError(true);
  -            }
  -            try {
  -                reader.start();
  -            } catch (org.apache.fop.apps.FOPException error) {
  -                MessageHandler.errorln("Could not load user configuration file "
  -                                       + userConfigFile + " - error: "
  -                                       + error.getMessage());
  -                MessageHandler.errorln("using default values");
  -                if (errorDump) {
  -                    reader.dumpError(error);
  -                }
  +                reader.dumpError(error);
               }
           }
       }
  
  
  
  1.5.2.1   +57 -5     xml-fop/src/org/apache/fop/apps/TraxInputHandler.java
  
  Index: TraxInputHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/TraxInputHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- TraxInputHandler.java	21 Aug 2001 06:18:54 -0000	1.5
  +++ TraxInputHandler.java	17 Sep 2002 22:01:06 -0000	1.5.2.1
  @@ -10,6 +10,8 @@
   
   // Imported TraX classes
   import javax.xml.transform.TransformerFactory;
  +import javax.xml.transform.Transformer;
  +import javax.xml.transform.Source;
   import javax.xml.transform.stream.StreamSource;
   import javax.xml.transform.sax.SAXResult;
   import javax.xml.transform.sax.SAXSource;
  @@ -36,14 +38,51 @@
   public class TraxInputHandler extends InputHandler {
   
       File xmlfile, xsltfile;
  +    private Transformer transformer;
  +    private Source xmlSource;
   
  -    public TraxInputHandler(File xmlfile, File xsltfile) {
  +    public TraxInputHandler(File xmlfile, File xsltfile)
  +      throws FOPException {
           this.xmlfile = xmlfile;
           this.xsltfile = xsltfile;
  +        try {
  +            transformer = TransformerFactory.newInstance().newTransformer(
  +              new StreamSource(xsltfile));
  +        }
  +        catch( Exception ex) {
  +            throw new FOPException(ex);
  +        }
  +    }
  +
  +    public TraxInputHandler(String xmlURL, String xsltURL)
  +      throws FOPException {
  +        this.xmlSource = new StreamSource(xmlURL);
  +        try {
  +            transformer = TransformerFactory.newInstance().newTransformer(
  +              new StreamSource(xsltURL));
  +        }
  +        catch( Exception ex) {
  +            throw new FOPException(ex);
  +        }
  +    }
  +
  +    public TraxInputHandler(InputSource xmlSource, InputSource xsltSource) 
  +      throws FOPException {
  +        this.xmlSource = new StreamSource(xmlSource.getByteStream(),
  +                                          xmlSource.getSystemId());
  +        try {
  +            transformer = TransformerFactory.newInstance().newTransformer(
  +              new StreamSource(xsltSource.getByteStream(),
  +                               xsltSource.getSystemId()));
  +        }
  +        catch( Exception ex) {
  +            throw new FOPException(ex);
  +        }
       }
   
       /**
        * overwrites the method of the super class to return the xmlfile
  +     * @deprecated
        */
       public InputSource getInputSource() {
           return fileInputSource(xmlfile);
  @@ -52,6 +91,7 @@
       /**
        * overwrites this method of the super class and returns an XMLFilter instead of a
        * simple XMLReader which allows chaining of transformations
  +     * @deprecated
        *
        */
       public XMLReader getParser() throws FOPException {
  @@ -96,12 +136,24 @@
                   throw new FOPException("Your parser doesn't support the features SAXSource and SAXResult."
                                          + "\nMake sure you are using a xsl parser which supports TrAX");
               }
  +        } catch (FOPException fex) {
  +            throw fex;
  +        } catch (Exception ex) {
  +            throw new FOPException(ex);
  +        }
  +    }
  +
  +    public void run(Driver driver) throws FOPException {
  +        try {
  +            transformer.transform(xmlSource,
  +                                  new SAXResult(driver.getContentHandler()));
           } catch (Exception ex) {
  -            if (ex instanceof FOPException) {
  -                throw (FOPException)ex;
  -            }
               throw new FOPException(ex);
           }
  +    }
  +
  +    public void setParameter(String name, Object value) {
  +        transformer.setParameter(name, value);
       }
   
   }
  
  
  
  1.7.2.1   +29 -89    xml-fop/src/org/apache/fop/apps/XSLTInputHandler.java
  
  Index: XSLTInputHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/XSLTInputHandler.java,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- XSLTInputHandler.java	21 Aug 2001 06:18:54 -0000	1.7
  +++ XSLTInputHandler.java	17 Sep 2002 22:01:06 -0000	1.7.2.1
  @@ -7,9 +7,6 @@
   
   package org.apache.fop.apps;
   
  -import java.lang.reflect.*;
  -
  -
   // Imported SAX classes
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
  @@ -18,108 +15,51 @@
   // Imported java.io classes
   import java.io.*;
   
  -// FOP
  -import org.apache.fop.tools.xslt.XSLTransform;
  -
   /**
  - * XSLTInputHandler basically takes an xmlfile and transforms it with an xsltfile
  - * and the resulting xsl:fo document is input for Fop.
  + * XSLTInputHandler takes an XML input, transforms it with XSLT
  + * and provides the resulting xsl:fo document as input for the
  + * FOP driver.
    */
   public class XSLTInputHandler extends InputHandler {
  +    private TraxInputHandler traxInputHandler;
   
  -    File xmlfile, xsltfile;
  -    boolean useOldTransform = false;
  +    public XSLTInputHandler(File xmlfile, File xsltfile)
  +      throws FOPException {
  +        traxInputHandler = new TraxInputHandler(xmlfile, xsltfile);
  +    }
   
  -    public XSLTInputHandler(File xmlfile, File xsltfile) {
  -        this.xmlfile = xmlfile;
  -        this.xsltfile = xsltfile;
  +    public XSLTInputHandler(String xmlURL, String xsltURL)
  +      throws FOPException {
  +        traxInputHandler = new TraxInputHandler(xmlURL, xsltURL);
  +    }
  +
  +    public XSLTInputHandler(InputSource xmlSource, String xsltSource)
  +      throws FOPException {
  +        traxInputHandler = new TraxInputHandler(xmlSource, xsltSource);
       }
   
       /**
  -     * overwrites the method of the super class to return the xmlfile
  +     * Get the InputSource.
  +     * @deprecated
        */
       public InputSource getInputSource() {
  -        if (useOldTransform) {
  -            try {
  -                java.io.Writer writer;
  -                java.io.Reader reader;
  -                File tmpFile = null;
  -
  -                // create a Writer
  -                // the following is an ugly hack to allow processing of larger files
  -                // if xml file size is larger than 500 kb write the fo:file to disk
  -                if ((xmlfile.length()) > 500000) {
  -                    tmpFile = new File(xmlfile.getName() + ".fo.tmp");
  -                    writer = new FileWriter(tmpFile);
  -                } else {
  -                    writer = new StringWriter();
  -                }
  -
  -                XSLTransform.transform(xmlfile.getCanonicalPath(),
  -                                       xsltfile.getCanonicalPath(), writer);
  -
  -                writer.flush();
  -                writer.close();
  -
  -                if (tmpFile != null) {
  -                    reader = new FileReader(tmpFile);
  -                } else {
  -                    // create a input source containing the xsl:fo file which can be fed to Fop
  -                    reader = new StringReader(writer.toString());
  -                }
  -                return new InputSource(reader);
  -            } catch (Exception ex) {
  -                ex.printStackTrace();
  -                return null;
  -            }
  -        } else {
  -            return fileInputSource(xmlfile);
  -        }
  -
  +        return traxInputHandler.getInputSource();
       }
   
       /**
  -     * This looks to see if the Trax api is supported and uses that to
  -     * get an XMLFilter. Otherwise, it falls back to using DOM documents
  -     *
  +     * Get the parser, actually an XML filter.
  +     * @deprecated
        */
       public XMLReader getParser() throws FOPException {
  -        XMLReader result = null;
  -        try {
  -            // try trax first
  -            Class transformer =
  -                Class.forName("javax.xml.transform.Transformer");
  -            transformer =
  -                Class.forName("org.apache.fop.apps.TraxInputHandler");
  -            Class[] argTypes = {
  -                File.class, File.class
  -            };
  -            Method getFilterMethod = transformer.getMethod("getXMLFilter",
  -                    argTypes);
  -            File[] args = {
  -                xmlfile, xsltfile
  -            };
  -            Object obj = getFilterMethod.invoke(null, args);
  -            if (obj instanceof XMLReader) {
  -                result = (XMLReader)obj;
  -            }
  -        } catch (ClassNotFoundException ex) {
  -            throw new FOPException(ex);
  -        } catch (InvocationTargetException ex) {
  -            throw new FOPException(ex);
  -        } catch (IllegalAccessException ex) {
  -            throw new FOPException(ex);
  -        } catch (NoSuchMethodException ex) {
  -            throw new FOPException(ex);
  -        }
  -        // otherwise, use DOM documents via our XSLTransform tool class old style
  -        if (result == null) {
  -            useOldTransform = true;
  -            result = createParser();
  -        }
  -        return result;
  +        return traxInputHandler.getParser();
  +    }
   
  +    public void run(Driver driver) throws FOPException {
  +        traxInputHandler.run(driver);
       }
   
  +    public void setParameter(String name, Object value) {
  +        traxInputHandler.setParameter(name, value);
  +    }
   }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org