Browse Source

Created a new overloaded method Driver.render(InputHandler), simplifies internal calls to the Driver class by centralizing parser initialization and InputSource extraction.


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196746 13f79535-47bb-0310-9956-ffa450edef68
pull/30/head
Glen Mazza 21 years ago
parent
commit
ed4a40351c

+ 1
- 10
src/java/org/apache/fop/apps/AWTStarter.java View File

import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import java.util.Locale; import java.util.Locale;


// SAX
import org.xml.sax.XMLReader;

/** /**
* AWT Viewer starter. * AWT Viewer starter.
* Originally contributed by: * Originally contributed by:
private PreviewDialog frame; private PreviewDialog frame;
private Translator translator; private Translator translator;
private Driver driver; private Driver driver;
private XMLReader parser;


/** /**
* Construct an AWTStarter * Construct an AWTStarter
renderer.setComponent(frame); renderer.setComponent(frame);
driver = new Driver(); driver = new Driver();
driver.setRenderer(renderer); driver.setRenderer(renderer);
parser = inputHandler.getParser();
if (parser == null) {
throw new FOPException("Unable to create SAX parser");
}
setParserFeatures(parser);
} }


/** /**
driver.reset(); driver.reset();
try { try {
frame.setStatus(translator.getString("Status.Build.FO.tree")); frame.setStatus(translator.getString("Status.Build.FO.tree"));
driver.render(parser, inputHandler.getInputSource());
driver.render(inputHandler);
frame.setStatus(translator.getString("Status.Show")); frame.setStatus(translator.getString("Status.Show"));
frame.showPage(); frame.showPage();
} catch (Exception e) { } catch (Exception e) {

+ 1
- 1
src/java/org/apache/fop/apps/CommandLineOptions.java View File

+ " see options with \"-print help\" \n\n" + " see options with \"-print help\" \n\n"
+ " [Examples]\n" + " Fop foo.fo foo.pdf \n" + " [Examples]\n" + " Fop foo.fo foo.pdf \n"
+ " Fop -fo foo.fo -pdf foo.pdf (does the same as the previous line)\n" + " Fop -fo foo.fo -pdf foo.pdf (does the same as the previous line)\n"
+ " Fop -xsl foo.xsl -xml foo.xml -pdf foo.pdf\n"
+ " Fop -xml foo.xml -xsl foo.xsl -pdf foo.pdf\n"
+ " Fop foo.fo -mif foo.mif\n" + " Fop foo.fo -mif foo.mif\n"
+ " Fop foo.fo -rtf foo.rtf\n" + " Fop foo.fo -rtf foo.rtf\n"
+ " Fop foo.fo -print or Fop -print foo.fo \n" + " Fop foo.fo -print or Fop -print foo.fo \n"

+ 1
- 10
src/java/org/apache/fop/apps/CommandLineStarter.java View File

*/ */
package org.apache.fop.apps; package org.apache.fop.apps;


// SAX
import org.xml.sax.XMLReader;

// Java // Java
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
*/ */
public void run() throws FOPException { public void run() throws FOPException {
String version = Version.getVersion(); String version = Version.getVersion();

getLogger().info(version); getLogger().info(version);

XMLReader parser = inputHandler.getParser();
setParserFeatures(parser);

Driver driver = new Driver(); Driver driver = new Driver();
setupLogger(driver); setupLogger(driver);
driver.initialize();


try { try {
driver.setRenderer(commandLineOptions.getRenderer()); driver.setRenderer(commandLineOptions.getRenderer());
driver.getRenderer().setOptions( driver.getRenderer().setOptions(
commandLineOptions.getRendererOptions()); commandLineOptions.getRendererOptions());
} }
driver.render(parser, inputHandler.getInputSource());
driver.render(inputHandler);
} finally { } finally {
bos.close(); bos.close();
} }

+ 13
- 0
src/java/org/apache/fop/apps/Driver.java View File

return treeBuilder; return treeBuilder;
} }


/**
* Render the FO document read by a SAX Parser from an InputHandler
* @param InputHandler the input handler containing the source and
* parser information.
* @throws FOPException if anything goes wrong.
*/
public synchronized void render(InputHandler inputHandler)
throws FOPException {
XMLReader parser = inputHandler.getParser();
inputHandler.setParserFeatures(parser);
render(parser, inputHandler.getInputSource());
}

/** /**
* Render the FO document read by a SAX Parser from an InputSource. * Render the FO document read by a SAX Parser from an InputSource.
* @param parser the SAX parser. * @param parser the SAX parser.

+ 17
- 1
src/java/org/apache/fop/apps/InputHandler.java View File

* @throws FOPException if processing this InputHandler fails * @throws FOPException if processing this InputHandler fails
*/ */
public abstract void run(Driver driver) throws FOPException; public abstract void run(Driver driver) throws FOPException;

/**
* Sets the parser features on an XMLReader
* @param parser XMLReader to set features on
* @throws FOPException if the XMLReader doesn't support the feature that
* need to be set
*/
public static void setParserFeatures(XMLReader parser) throws FOPException {
try {
parser.setFeature("http://xml.org/sax/features/namespace-prefixes",
true);
} catch (SAXException e) {
throw new FOPException("Error: You need a parser which allows the"
+ " http://xml.org/sax/features/namespace-prefixes"
+ " feature to be set to true to support namespaces", e);
}
}
} }



+ 1
- 9
src/java/org/apache/fop/apps/PrintStarter.java View File

* (apparently) redundant copies code, generally cleaned up, and * (apparently) redundant copies code, generally cleaned up, and
* added interfaces to the new Render API. * added interfaces to the new Render API.
*/ */
import org.xml.sax.XMLReader;
import java.awt.print.PrinterJob; import java.awt.print.PrinterJob;
import org.apache.fop.render.awt.AWTPrintRenderer; import org.apache.fop.render.awt.AWTPrintRenderer;


public void run() throws FOPException { public void run() throws FOPException {
Driver driver = new Driver(); Driver driver = new Driver();


String version = Version.getVersion();
//log.debug(version);

XMLReader parser = inputHandler.getParser();

setParserFeatures(parser);

PrinterJob pj = PrinterJob.getPrinterJob(); PrinterJob pj = PrinterJob.getPrinterJob();
if (System.getProperty("dialog") != null) { if (System.getProperty("dialog") != null) {
if (!pj.printDialog()) { if (!pj.printDialog()) {


try { try {
driver.setRenderer(renderer); driver.setRenderer(renderer);
driver.render(parser, inputHandler.getInputSource());
driver.render(inputHandler);
} catch (Exception e) { } catch (Exception e) {
if (e instanceof FOPException) { if (e instanceof FOPException) {
throw (FOPException)e; throw (FOPException)e;

+ 0
- 21
src/java/org/apache/fop/apps/Starter.java View File

// Avalon // Avalon
import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.logger.AbstractLogEnabled;


// SAX
import org.xml.sax.XMLReader;
import org.xml.sax.SAXException;

/** /**
* Abstract super class. * Abstract super class.
* Creates a SAX Parser (defaulting to Xerces). * Creates a SAX Parser (defaulting to Xerces).
*/ */
public abstract void run() throws FOPException; public abstract void run() throws FOPException;


/**
* Sets the parser features on an XMLReader
* @param parser XMLReader to set features on
* @throws FOPException if the XMLReader doesn't support the feature that
* need to be set
*/
public void setParserFeatures(XMLReader parser) throws FOPException {
try {
parser.setFeature("http://xml.org/sax/features/namespace-prefixes",
true);
} catch (SAXException e) {
throw new FOPException("Error: You need a parser which allows the"
+ " http://xml.org/sax/features/namespace-prefixes"
+ " feature to be set to true to support namespaces", e);
}
}

} }

+ 1
- 17
src/java/org/apache/fop/tools/TestConverter.java View File

import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import org.xml.sax.XMLReader;
import org.xml.sax.SAXException;


/** /**
* TestConverter is used to process a set of tests specified in * TestConverter is used to process a set of tests specified in
+ xsl)); + xsl));
} }


XMLReader parser = inputHandler.getParser();
setParserFeatures(parser);

Driver driver = new Driver(); Driver driver = new Driver();
setupLogger(driver, "fop"); setupLogger(driver, "fop");
driver.initialize();
FOUserAgent userAgent = new FOUserAgent(); FOUserAgent userAgent = new FOUserAgent();
userAgent.setBaseURL(baseURL); userAgent.setBaseURL(baseURL);
driver.setUserAgent(userAgent); driver.setUserAgent(userAgent);
new java.io.FileOutputStream(new File(destdir, new java.io.FileOutputStream(new File(destdir,
outname + (outputPDF ? ".pdf" : ".at.xml"))))); outname + (outputPDF ? ".pdf" : ".at.xml")))));
getLogger().debug("ddir:" + destdir + " on:" + outname + ".pdf"); getLogger().debug("ddir:" + destdir + " on:" + outname + ".pdf");
driver.render(parser, inputHandler.getInputSource());
driver.render(inputHandler);


// check difference // check difference
if (compare != null) { if (compare != null) {
return false; return false;
} }


private void setParserFeatures(XMLReader parser) throws FOPException {
try {
parser.setFeature("http://xml.org/sax/features/namespace-prefixes",
true);
} catch (SAXException e) {
throw new FOPException("Error in setting up parser feature namespace-prefixes\n"
+ "You need a parser which supports SAX version 2", e);
}
}

private Node locateResult(Node testcase, String id) { private Node locateResult(Node testcase, String id) {
NodeList cases = testcase.getChildNodes(); NodeList cases = testcase.getChildNodes();
for (int count = 0; count < cases.getLength(); count++) { for (int count = 0; count < cases.getLength(); count++) {

+ 1
- 7
src/java/org/apache/fop/tools/anttasks/Fop.java View File

import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.util.GlobPatternMapper; import org.apache.tools.ant.util.GlobPatternMapper;


// SAX
import org.xml.sax.XMLReader;

// Java // Java
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
private void render(File foFile, File outFile, private void render(File foFile, File outFile,
int renderer) throws FOPException { int renderer) throws FOPException {
InputHandler inputHandler = new FOInputHandler(foFile); InputHandler inputHandler = new FOInputHandler(foFile);
XMLReader parser = inputHandler.getParser();
setParserFeatures(parser);


OutputStream out = null; OutputStream out = null;
try { try {
try { try {
Driver driver = new Driver(); Driver driver = new Driver();
setupLogger(driver); setupLogger(driver);
driver.initialize();
FOUserAgent userAgent = new FOUserAgent(); FOUserAgent userAgent = new FOUserAgent();
userAgent.setBaseURL(this.baseURL); userAgent.setBaseURL(this.baseURL);
userAgent.enableLogging(getLogger()); userAgent.enableLogging(getLogger());
driver.setUserAgent(userAgent); driver.setUserAgent(userAgent);
driver.setRenderer(renderer); driver.setRenderer(renderer);
driver.setOutputStream(out); driver.setOutputStream(out);
driver.render(parser, inputHandler.getInputSource());
driver.render(inputHandler);
} catch (Exception ex) { } catch (Exception ex) {
throw new BuildException(ex); throw new BuildException(ex);
} finally { } finally {

Loading…
Cancel
Save