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 fo...@locus.apache.org on 2000/07/15 22:41:07 UTC

cvs commit: xml-fop/lib Fop.class Fop.java

fotis       00/07/15 13:41:07

  Modified:    lib      Fop.class Fop.java
  Log:
  update to SAX 2 parser
  
  Revision  Changes    Path
  1.2       +48 -47    xml-fop/lib/Fop.class
  
  	<<Binary file>>
  
  
  1.2       +108 -25   xml-fop/lib/Fop.java
  
  Index: Fop.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/lib/Fop.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Fop.java	2000/03/14 09:43:09	1.1
  +++ Fop.java	2000/07/15 20:41:07	1.2
  @@ -1,10 +1,61 @@
  +/*
  +
  + ============================================================================
  +                   The Apache Software License, Version 1.1
  + ============================================================================
  + 
  +    Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
  + 
  + Redistribution and use in source and binary forms, with or without modifica-
  + tion, are permitted provided that the following conditions are met:
  + 
  + 1. Redistributions of  source code must  retain the above copyright  notice,
  +    this list of conditions and the following disclaimer.
  + 
  + 2. Redistributions in binary form must reproduce the above copyright notice,
  +    this list of conditions and the following disclaimer in the documentation
  +    and/or other materials provided with the distribution.
  + 
  + 3. The end-user documentation included with the redistribution, if any, must
  +    include  the following  acknowledgment:  "This product includes  software
  +    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
  +    Alternately, this  acknowledgment may  appear in the software itself,  if
  +    and wherever such third-party acknowledgments normally appear.
  + 
  + 4. The names "Fop" and  "Apache Software Foundation"  must not be used to
  +    endorse  or promote  products derived  from this  software without  prior
  +    written permission. For written permission, please contact
  +    apache@apache.org.
  + 
  + 5. Products  derived from this software may not  be called "Apache", nor may
  +    "Apache" appear  in their name,  without prior written permission  of the
  +    Apache Software Foundation.
  + 
  + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
  + APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
  + INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
  + DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
  + OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
  + ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
  + (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
  + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  + 
  + This software  consists of voluntary contributions made  by many individuals
  + on  behalf of the Apache Software  Foundation and was  originally created by
  + James Tauber <jt...@jtauber.com>. For more  information on the Apache 
  + Software Foundation, please see <http://www.apache.org/>.
  + 
  + */
  +
   // Ant
   import org.apache.tools.ant.Task;
   import org.apache.tools.ant.BuildException;
   import org.apache.fop.apps.*;
   
   // SAX
  -import org.xml.sax.Parser;
  +import org.xml.sax.XMLReader;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   import org.xml.sax.SAXParseException;
  @@ -17,15 +68,31 @@
   import java.io.IOException;
   import java.io.FileNotFoundException;
   import java.net.URL;
  +
  +
  +/**
  + * extension to Ant which allows usage of Fop in the 
  + * same way as org.apache.fop.apps.CommandLine (the code is adapted from this class)
  + * Gets input and output filenames from the script file <br/>
  + * needed libraries: Sax 2 parser (defaults to Xerces-J), Jimi for images, w3c.jar 
  + * containing org.w3c.dom.svg etc. for svg support
  + */
   
  -/* the code is adapted from Fops CommandLine class */
   public class Fop {
     String fofile, pdffile;
     
  +  /**
  +   * sets the name of the input file
  +   * @param String name of the input fo file 
  +   */
     public void setFofile(String fofile) {
       this.fofile = fofile;
     }
     
  +  /**
  +   * sets the name of the output file
  +   * @param String name of the output pdf file 
  +   */
     public void setPdffile(String pdffile) {
       this.pdffile = pdffile;
     }
  @@ -37,26 +104,29 @@
      *
      * @return the created SAX parser
      */
  -  static Parser createParser() {
  -    String parserClassName = System.getProperty("org.xml.sax.parser");
  +  static XMLReader createParser() {
  +    String parserClassName =
  +        System.getProperty("org.xml.sax.parser");
       if (parserClassName == null) {
  -      parserClassName = "org.apache.xerces.parsers.SAXParser";
  +        parserClassName = "org.apache.xerces.parsers.SAXParser";
       }
  -    System.err.println("using SAX parser " + parserClassName);
  +    System.out.println("using SAX parser " + parserClassName);
   
       try {
  -      return (Parser) Class.forName(parserClassName).newInstance();
  +        return (XMLReader)
  +          Class.forName(parserClassName).newInstance();
       } catch (ClassNotFoundException e) {
  -      System.err.println("Could not find " + parserClassName);
  +        System.err.println("Could not find " + parserClassName);
       } catch (InstantiationException e) {
  -      System.err.println("Could not instantiate " + parserClassName);
  +        System.err.println("Could not instantiate "
  +                       + parserClassName);
       } catch (IllegalAccessException e) {
  -      System.err.println("Could not access " + parserClassName);
  +        System.err.println("Could not access " + parserClassName);
       } catch (ClassCastException e) {
  -      System.err.println(parserClassName + " is not a SAX driver"); 
  +        System.err.println(parserClassName + " is not a SAX driver"); 
       }
       return null;
  -  }
  +  }  // end: createParser
   
     /**
      * create an InputSource from a file name
  @@ -81,8 +151,12 @@
       catch (java.net.MalformedURLException e) {
           throw new Error("unexpected MalformedURLException");
       }
  -  }
  +  }  // end: fileInputSource
   
  +  /**
  +   * main method, starts execution of this task
  +   * 
  +   */
     public void execute () throws BuildException {
       boolean errors = false;
       String version = Version.getVersion();
  @@ -94,29 +168,38 @@
         System.err.println("Task Fop - ERROR: Formatting objects file " + fofile + " missing.");
       }
     
  -    Parser parser = createParser();
  +    XMLReader parser = createParser();
     
       if (parser == null) {
           System.err.println("Task Fop - ERROR: Unable to create SAX parser");
           errors = true;
       }
   
  +    // setting the parser features
  +    try {
  +      parser.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
  +    } catch (SAXException e) {
  +      System.err.println("Error in setting up parser feature namespace-prefixes");
  +      System.err.println("You need a parser which supports SAX version 2");  
  +      System.exit(1);  
  +    }
  +
       if (!errors) {
         try {
  -          Driver driver = new Driver();
  -          driver.setRenderer("org.apache.fop.render.pdf.PDFRenderer", version);
  -          driver.addElementMapping("org.apache.fop.fo.StandardElementMapping");
  -          driver.addElementMapping("org.apache.fop.svg.SVGElementMapping");
  -          driver.setWriter(new PrintWriter(new FileWriter(pdffile)));
  -          driver.buildFOTree(parser, fileInputSource(fofile));
  -          driver.format();
  -          driver.render();
  +        Driver driver = new Driver();
  +        driver.setRenderer("org.apache.fop.render.pdf.PDFRenderer", version);
  +        driver.addElementMapping("org.apache.fop.fo.StandardElementMapping");
  +        driver.addElementMapping("org.apache.fop.svg.SVGElementMapping");
  +        driver.setWriter(new PrintWriter(new FileWriter(pdffile)));
  +        driver.buildFOTree(parser, fileInputSource(fofile));
  +        driver.format();
  +        driver.render();
         } catch (Exception e) {
  -          System.err.println("Task Fop - FATAL ERROR: " + e.getMessage());
  -          System.exit(1);
  +        System.err.println("Task Fop - FATAL ERROR: " + e.getMessage());
  +        System.exit(1);
         }
       }
       System.out.println("=======================\n");  
  -  }
  +  } // end: execute
   }