Browse Source

Revert refactoring of Driver to Session. Files affected should be identical to that which is two revisions earlier (e.g. if 1.3 is being checked in here, it should be identical to 1.1).


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196504 13f79535-47bb-0310-9956-ffa450edef68
pull/30/head
William Victor Mote 21 years ago
parent
commit
9abfca1380

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

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.apps;

//FOP
@@ -76,7 +76,7 @@ import org.xml.sax.XMLReader;
public class AWTStarter extends CommandLineStarter {
private PreviewDialog frame;
private Translator translator;
private Session session;
private Driver driver;
private XMLReader parser;

/**
@@ -101,8 +101,8 @@ public class AWTStarter extends CommandLineStarter {
AWTRenderer renderer = new AWTRenderer(translator);
frame = createPreviewDialog(renderer, translator);
renderer.setComponent(frame);
session = new Session();
session.setRenderer(renderer);
driver = new Driver();
driver.setRenderer(renderer);
parser = inputHandler.getParser();
if (parser == null) {
throw new FOPException("Unable to create SAX parser");
@@ -115,10 +115,10 @@ public class AWTStarter extends CommandLineStarter {
* @throws FOPException FIXME should not happen.
*/
public void run() throws FOPException {
session.reset();
driver.reset();
try {
frame.setStatus(translator.getString("Status.Build.FO.tree"));
session.render(parser, inputHandler.getInputSource());
driver.render(parser, inputHandler.getInputSource());
frame.setStatus(translator.getString("Status.Show"));
frame.showPage();
} catch (Exception e) {

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

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.apps;

// java
@@ -154,7 +154,7 @@ public class CommandLineOptions {

/**
* parses the commandline arguments
* @return true if parse was successful and processing can continue, false
* @return true if parse was successful and processing can continue, false
* if processing should stop
* @exception FOPException if there was an error in the format of the options
*/
@@ -392,26 +392,26 @@ public class CommandLineOptions {
case NOT_SET:
throw new FOPException("Renderer has not been set!");
case PDF_OUTPUT:
return Session.RENDER_PDF;
return Driver.RENDER_PDF;
case AWT_OUTPUT:
return Session.RENDER_AWT;
return Driver.RENDER_AWT;
case MIF_OUTPUT:
return Session.RENDER_MIF;
return Driver.RENDER_MIF;
case PRINT_OUTPUT:
return Session.RENDER_PRINT;
return Driver.RENDER_PRINT;
case PCL_OUTPUT:
return Session.RENDER_PCL;
return Driver.RENDER_PCL;
case PS_OUTPUT:
return Session.RENDER_PS;
return Driver.RENDER_PS;
case TXT_OUTPUT:
return Session.RENDER_TXT;
return Driver.RENDER_TXT;
case SVG_OUTPUT:
return Session.RENDER_SVG;
return Driver.RENDER_SVG;
case AREA_OUTPUT:
rendererOptions.put("fineDetail", isCoarseAreaXml());
return Session.RENDER_XML;
return Driver.RENDER_XML;
case RTF_OUTPUT:
return Session.RENDER_RTF;
return Driver.RENDER_RTF;
default:
throw new FOPException("Invalid Renderer setting!");
}
@@ -617,7 +617,7 @@ public class CommandLineOptions {
+ " Fop foo.fo -print or Fop -print foo.fo \n"
+ " Fop foo.fo -awt \n");
}
/**
* shows the options for print output
*/

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

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.apps;

// SAX
@@ -91,21 +91,21 @@ public class CommandLineStarter extends Starter {
XMLReader parser = inputHandler.getParser();
setParserFeatures(parser);

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

try {
session.setRenderer(commandLineOptions.getRenderer());
driver.setRenderer(commandLineOptions.getRenderer());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(
commandLineOptions.getOutputFile()));
try {
session.setOutputStream(bos);
if (session.getRenderer() != null) {
session.getRenderer().setOptions(
driver.setOutputStream(bos);
if (driver.getRenderer() != null) {
driver.getRenderer().setOptions(
commandLineOptions.getRendererOptions());
}
session.render(parser, inputHandler.getInputSource());
driver.render(parser, inputHandler.getInputSource());
} finally {
bos.close();
}

+ 101
- 19
src/java/org/apache/fop/apps/Driver.java View File

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.apps;

// FOP
@@ -133,9 +133,6 @@ import java.util.Map;
* driver.setRenderer(new org.apache.fop.render.awt.AWTRenderer(translator));
* driver.render(parser, fileInputSource(args[0]));
* </PRE>
*
* @deprecated This class is replaced by {@link Session}. See {@link
* CommandLineStarter#run for a usage example.
*/
public class Driver implements LogEnabled {

@@ -299,8 +296,8 @@ public class Driver implements LogEnabled {
}

/**
* Provide the Driver instance with a logger. More information on Avalon
* logging can be found at the
* Provide the Driver instance with a logger. More information on Avalon
* logging can be found at the
* <a href="http://avalon.apache.org">Avalon site</a>.
*
* @param log the logger. Must not be <code>null</code>.
@@ -315,7 +312,7 @@ public class Driver implements LogEnabled {
}

/**
* Provide the Driver instance with a logger.
* Provide the Driver instance with a logger.
* @param log the logger. Must not be <code>null</code>.
* @deprecated Use #enableLogging(Logger) instead.
*/
@@ -402,7 +399,7 @@ public class Driver implements LogEnabled {

// add mappings from available services
Iterator providers =
Session.providers(org.apache.fop.fo.ElementMapping.class);
Service.providers(org.apache.fop.fo.ElementMapping.class);
if (providers != null) {
while (providers.hasNext()) {
String str = (String)providers.next();
@@ -490,7 +487,7 @@ public class Driver implements LogEnabled {
* @param rendererClassName the fully qualified classname of the renderer
* class to use.
* @param version version number
* @deprecated use renderer.setProducer(version) + setRenderer(renderer) or
* @deprecated use renderer.setProducer(version) + setRenderer(renderer) or
* just setRenderer(rendererType) which will use the default producer string.
* @see #setRenderer(int)
* @see #setRenderer(Renderer)
@@ -581,7 +578,7 @@ public class Driver implements LogEnabled {
initialize();
}
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) {
@@ -701,3 +698,88 @@ public class Driver implements LogEnabled {
}

}

// code stolen from org.apache.batik.util and modified slightly
// does what sun.misc.Service probably does, but it cannot be relied on.
// hopefully will be part of standard jdk sometime.

/**
* This class loads services present in the class path.
*/
class Service {

private static Map providerMap = new java.util.Hashtable();

public static synchronized Iterator providers(Class cls) {
ClassLoader cl = cls.getClassLoader();
// null if loaded by bootstrap class loader
if (cl == null) {
cl = ClassLoader.getSystemClassLoader();
}
String serviceFile = "META-INF/services/" + cls.getName();

// getLogger().debug("File: " + serviceFile);

List lst = (List)providerMap.get(serviceFile);
if (lst != null) {
return lst.iterator();
}

lst = new java.util.Vector();
providerMap.put(serviceFile, lst);

Enumeration e;
try {
e = cl.getResources(serviceFile);
} catch (IOException ioe) {
return lst.iterator();
}

while (e.hasMoreElements()) {
try {
java.net.URL u = (java.net.URL)e.nextElement();
//getLogger().debug("URL: " + u);

InputStream is = u.openStream();
Reader r = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(r);

String line = br.readLine();
while (line != null) {
try {
// First strip any comment...
int idx = line.indexOf('#');
if (idx != -1) {
line = line.substring(0, idx);
}

// Trim whitespace.
line = line.trim();

// If nothing left then loop around...
if (line.length() == 0) {
line = br.readLine();
continue;
}
// getLogger().debug("Line: " + line);

// Try and load the class
// Object obj = cl.loadClass(line).newInstance();
// stick it into our vector...
lst.add(line);
} catch (Exception ex) {
// Just try the next line
}

line = br.readLine();
}
} catch (Exception ex) {
// Just try the next file...
}

}
return lst.iterator();
}

}


+ 14
- 14
src/java/org/apache/fop/apps/FOInputHandler.java View File

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.apps;

// Imported SAX classes
@@ -62,7 +62,7 @@ import java.net.URL;
* Manages input if it is an XSL-FO file.
*/
public class FOInputHandler extends InputHandler {
private File fofile = null;
private URL foURL = null;

@@ -82,7 +82,7 @@ public class FOInputHandler extends InputHandler {
this.foURL = url;
}

/**
* @see org.apache.fop.apps.InputHandler#getInputSource()
*/
@@ -101,9 +101,9 @@ public class FOInputHandler extends InputHandler {
}

/**
* @see org.apache.fop.apps.InputHandler#run(Session)
* @see org.apache.fop.apps.InputHandler#run(Driver)
*/
public void run(Session session) throws FOPException {
public void run(Driver driver) throws FOPException {
throw new FOPException("not implemented: FOInputHandler.run(Driver)");
}


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

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.apps;

// SAX
@@ -129,13 +129,13 @@ public abstract class InputHandler {
throw new FOPException("Coudn't create XMLReader", pce);
}
}
/**
* Runs this InputHandler through the Session.
* @param session Session instance to use
* Runs this InputHandler through the Driver.
* @param driver Driver instance to use
* @throws FOPException if processing this InputHandler fails
*/
public abstract void run(Session session) throws FOPException;
public abstract void run(Driver driver) throws FOPException;
}


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

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.apps;

/*
@@ -95,7 +95,7 @@ public class PrintStarter extends CommandLineStarter {
* @see org.apache.fop.apps.Starter#run()
*/
public void run() throws FOPException {
Session session = new Session();
Driver driver = new Driver();

String version = Version.getVersion();
//log.debug(version);
@@ -118,8 +118,8 @@ public class PrintStarter extends CommandLineStarter {
//renderer.setCopies(copies);

try {
session.setRenderer(renderer);
session.render(parser, inputHandler.getInputSource());
driver.setRenderer(renderer);
driver.render(parser, inputHandler.getInputSource());
} catch (Exception e) {
if (e instanceof FOPException) {
throw (FOPException)e;
@@ -188,7 +188,7 @@ public class PrintStarter extends CommandLineStarter {
printerJob.print();
} catch (PrinterException e) {
e.printStackTrace();
throw new IOException("Unable to print: "
throw new IOException("Unable to print: "
+ e.getClass().getName()
+ ": " + e.getMessage());
}

+ 0
- 787
src/java/org/apache/fop/apps/Session.java View File

@@ -1,787 +0,0 @@
/*
* $Id$
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999-2003 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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.apps;

// FOP
import org.apache.fop.fo.ElementMapping;
import org.apache.fop.fo.FOTreeBuilder;
import org.apache.fop.fo.FOUserAgent;
import org.apache.fop.render.Renderer;
import org.apache.fop.tools.DocumentInputSource;
import org.apache.fop.tools.DocumentReader;


// Avalon
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;

// DOM
import org.w3c.dom.Document;

// SAX
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;

// Java
import java.io.BufferedReader;
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;
import java.util.List;
import java.util.Map;

/**
* Primary class that drives overall FOP process.
* <P>
* The simplest way to use this is to instantiate it with the
* InputSource and OutputStream, then set the renderer desired, and
* calling run();
* <P>
* Here is an example use of Session which outputs PDF:
*
* <PRE>
* Session session = new Session(new InputSource (args[0]),
* new FileOutputStream(args[1]));
* session.enableLogging(myLogger); //optional
* session.setRenderer(RENDER_PDF);
* session.run();
* </PRE>
* If neccessary, calling classes can call into the lower level
* methods to setup and
* render. Methods can be called to set the
* Renderer to use, the (possibly multiple) ElementMapping(s) to
* use and the OutputStream to use to output the results of the
* rendering (where applicable). In the case of the Renderer and
* ElementMapping(s), the Session may be supplied either with the
* object itself, or the name of the class, in which case Session will
* instantiate the class itself. The advantage of the latter is it
* enables runtime determination of Renderer and ElementMapping(s).
* <P>
* Once the Session is set up, the render method
* is called. Depending on whether DOM or SAX is being used, the
* invocation of the method is either render(Document) or
* buildFOTree(Parser, InputSource) respectively.
* <P>
* A third possibility may be used to build the FO Tree, namely
* calling getContentHandler() and firing the SAX events yourself.
* <P>
* Once the FO Tree is built, the format() and render() methods may be
* called in that order.
* <P>
* Here is an example use of Session which outputs to AWT:
*
* <PRE>
* Session session = new Session();
* session.enableLogging(myLogger); //optional
* session.setRenderer(new org.apache.fop.render.awt.AWTRenderer(translator));
* session.render(parser, fileInputSource(args[0]));
* </PRE>
*/
public class Session implements LogEnabled {

/**
* Render to PDF. OutputStream must be set
*/
public static final int RENDER_PDF = 1;

/**
* Render to a GUI window. No OutputStream neccessary
*/
public static final int RENDER_AWT = 2;

/**
* Render to MIF. OutputStream must be set
*/
public static final int RENDER_MIF = 3;

/**
* Render to XML. OutputStream must be set
*/
public static final int RENDER_XML = 4;

/**
* Render to PRINT. No OutputStream neccessary
*/
public static final int RENDER_PRINT = 5;

/**
* Render to PCL. OutputStream must be set
*/
public static final int RENDER_PCL = 6;

/**
* Render to Postscript. OutputStream must be set
*/
public static final int RENDER_PS = 7;

/**
* Render to Text. OutputStream must be set
*/
public static final int RENDER_TXT = 8;

/**
* Render to SVG. OutputStream must be set
*/
public static final int RENDER_SVG = 9;

/**
* Render to RTF. OutputStream must be set
*/
public static final int RENDER_RTF = 10;

/**
* the FO tree builder
*/
private FOTreeBuilder treeBuilder;

/**
* the renderer type code given by setRenderer
*/
private int rendererType;

/**
* the renderer to use to output the area tree
*/
private Renderer renderer;

/**
* the structure handler
*/
private StructureHandler structHandler;

/**
* the source of the FO file
*/
private InputSource source;

/**
* the stream to use to output the results of the renderer
*/
private OutputStream stream;

/**
* The XML parser to use when building the FO tree
*/
private XMLReader reader;

/**
* the system resources that FOP will use
*/
private Logger log = null;
private FOUserAgent userAgent = null;

/**
* Returns the fully qualified classname of the standard XML parser for FOP
* to use.
* @return the XML parser classname
*/
public static final String getParserClassName() {
try {
return javax.xml.parsers.SAXParserFactory.newInstance()
.newSAXParser().getXMLReader().getClass().getName();
} catch (javax.xml.parsers.ParserConfigurationException e) {
return null;
} catch (org.xml.sax.SAXException e) {
return null;
}
}

/**
* Main constructor for the Session class.
*/
public Session() {
stream = null;
}

/**
* Convenience constructor for directly setting input and output.
* @param source InputSource to take the XSL-FO input from
* @param stream Target output stream
*/
public Session(InputSource source, OutputStream stream) {
this();
this.source = source;
this.stream = stream;
}

private boolean isInitialized() {
return (treeBuilder != null);
}

/**
* Initializes the Session object.
*/
public void initialize() {
if (isInitialized()) {
throw new IllegalStateException("Session already initialized");
}
treeBuilder = new FOTreeBuilder();
treeBuilder.setUserAgent(getUserAgent());
setupDefaultMappings();
}

/**
* Optionally sets the FOUserAgent instance for FOP to use. The Session
* class sets up its own FOUserAgent if none is set through this method.
* @param agent FOUserAgent to use
*/
public void setUserAgent(FOUserAgent agent) {
userAgent = agent;
}

private FOUserAgent getUserAgent() {
if (userAgent == null) {
userAgent = new FOUserAgent();
userAgent.enableLogging(getLogger());
userAgent.setBaseURL("");
}
return userAgent;
}

/**
* Provide the Session instance with a logger. More information on Avalon
* logging can be found at the
* <a href="http://avalon.apache.org">Avalon site</a>.
*
* @param log the logger. Must not be <code>null</code>.
* @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(Logger)
*/
public void enableLogging(Logger log) {
if (this.log == null) {
this.log = log;
} else {
getLogger().warn("Logger is already set! Won't use the new logger.");
}
}

/**
* Provide the Session instance with a logger.
* @param log the logger. Must not be <code>null</code>.
* @deprecated Use #enableLogging(Logger) instead.
*/
public void setLogger(Logger log) {
enableLogging(log);
}


/**
* Returns the logger for use by FOP.
* @return the logger
* @see #enableLogging(Logger)
*/
protected Logger getLogger() {
if (this.log == null) {
this.log = new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
this.log.error("Logger not set. Using ConsoleLogger as default.");
}

return this.log;
}

/**
* Resets the Session so it can be reused. Property and element
* mappings are reset to defaults.
* The output stream is cleared. The renderer is cleared.
*/
public synchronized void reset() {
source = null;
stream = null;
reader = null;
treeBuilder.reset();
}

/**
* Indicates whether FOP has already received input data.
* @return true, if input data was received
*/
public boolean hasData() {
return (treeBuilder.hasData());
}

/**
* Set the OutputStream to use to output the result of the Renderer
* (if applicable)
* @param stream the stream to output the result of rendering to
*/
public void setOutputStream(OutputStream stream) {
this.stream = stream;
}

private void validateOutputStream() {
if (this.stream == null) {
throw new IllegalStateException("OutputStream has not been set");
}
}

/**
* Set the source for the FO document. This can be a normal SAX
* InputSource, or an DocumentInputSource containing a DOM document.
* @see DocumentInputSource
*/
public void setInputSource(InputSource source) {
this.source = source;
}

/**
* 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;
}

/**
* Sets all the element and property list mappings to their default values.
*
*/
public void setupDefaultMappings() {
addElementMapping("org.apache.fop.fo.FOElementMapping");
addElementMapping("org.apache.fop.svg.SVGElementMapping");
addElementMapping("org.apache.fop.extensions.ExtensionElementMapping");

// add mappings from available services
Iterator providers =
providers(org.apache.fop.fo.ElementMapping.class);
if (providers != null) {
while (providers.hasNext()) {
String str = (String)providers.next();
try {
addElementMapping(str);
} catch (IllegalArgumentException e) {
getLogger().warn("Error while adding element mapping", e);
}

}
}
}

/**
* Shortcut to set the rendering type to use. Must be one of
* <ul>
* <li>RENDER_PDF</li>
* <li>RENDER_AWT</li>
* <li>RENDER_MIF</li>
* <li>RENDER_XML</li>
* <li>RENDER_PCL</li>
* <li>RENDER_PS</li>
* <li>RENDER_TXT</li>
* <li>RENDER_SVG</li>
* <li>RENDER_RTF</li>
* </ul>
* @param renderer the type of renderer to use
* @throws IllegalArgumentException if an unsupported renderer type was required.
*/
public void setRenderer(int renderer) throws IllegalArgumentException {
rendererType = renderer;
switch (renderer) {
case RENDER_PDF:
setRenderer("org.apache.fop.render.pdf.PDFRenderer");
break;
case RENDER_AWT:
throw new IllegalArgumentException("Use renderer form of setRenderer() for AWT");
case RENDER_PRINT:
throw new IllegalArgumentException("Use renderer form of setRenderer() for PRINT");
case RENDER_PCL:
setRenderer("org.apache.fop.render.pcl.PCLRenderer");
break;
case RENDER_PS:
setRenderer("org.apache.fop.render.ps.PSRenderer");
break;
case RENDER_TXT:
setRenderer("org.apache.fop.render.txt.TXTRenderer()");
break;
case RENDER_MIF:
//structHandler will be set later
break;
case RENDER_XML:
setRenderer("org.apache.fop.render.xml.XMLRenderer");
break;
case RENDER_SVG:
setRenderer("org.apache.fop.render.svg.SVGRenderer");
break;
case RENDER_RTF:
//structHandler will be set later
break;
default:
throw new IllegalArgumentException("Unknown renderer type");
}
}

/**
* Set the Renderer to use.
* @param renderer the renderer instance to use (Note: Logger must be set at this point)
*/
public void setRenderer(Renderer renderer) {
renderer.setUserAgent(getUserAgent());
this.renderer = renderer;
}

/**
* Returns the currently active renderer.
* @return the renderer
*/
public Renderer getRenderer() {
return renderer;
}

/**
* Sets the renderer.
* @param rendererClassName the fully qualified classname of the renderer
* class to use.
* @param version version number
* @deprecated use renderer.setProducer(version) + setRenderer(renderer) or
* just setRenderer(rendererType) which will use the default producer string.
* @see #setRenderer(int)
* @see #setRenderer(Renderer)
*/
public void setRenderer(String rendererClassName, String version) {
setRenderer(rendererClassName);
}

/**
* Set the class name of the Renderer to use as well as the
* producer string for those renderers that can make use of it.
* @param rendererClassName classname of the renderer to use such as
* "org.apache.fop.render.pdf.PDFRenderer"
* @exception IllegalArgumentException if the classname was invalid.
* @see #setRenderer(int)
*/
public void setRenderer(String rendererClassName)
throws IllegalArgumentException {
try {
renderer =
(Renderer)Class.forName(rendererClassName).newInstance();
if (renderer instanceof LogEnabled) {
((LogEnabled)renderer).enableLogging(getLogger());
}
renderer.setProducer(Version.getVersion());
renderer.setUserAgent(getUserAgent());
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Could not find "
+ rendererClassName);
} catch (InstantiationException e) {
throw new IllegalArgumentException("Could not instantiate "
+ rendererClassName);
} catch (IllegalAccessException e) {
throw new IllegalArgumentException("Could not access "
+ rendererClassName);
} catch (ClassCastException e) {
throw new IllegalArgumentException(rendererClassName
+ " is not a renderer");
}
}

/**
* Add the given element mapping.
* An element mapping maps element names to Java classes.
*
* @param mapping the element mappingto add
*/
public void addElementMapping(ElementMapping mapping) {
mapping.addToBuilder(treeBuilder);
}

/**
* Add the element mapping with the given class name.
* @param mappingClassName the class name representing the element mapping.
* @throws IllegalArgumentException if there was not such element mapping.
*/
public void addElementMapping(String mappingClassName)
throws IllegalArgumentException {
try {
ElementMapping mapping =
(ElementMapping)Class.forName(mappingClassName).newInstance();
addElementMapping(mapping);
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Could not find "
+ mappingClassName);
} catch (InstantiationException e) {
throw new IllegalArgumentException("Could not instantiate "
+ mappingClassName);
} catch (IllegalAccessException e) {
throw new IllegalArgumentException("Could not access "
+ mappingClassName);
} catch (ClassCastException e) {
throw new IllegalArgumentException(mappingClassName
+ " is not an ElementMapping");
}
}

/**
* Returns the tree builder (a SAX ContentHandler).
*
* Used in situations where SAX is used but not via a FOP-invoked
* SAX parser. A good example is an XSLT engine that fires SAX
* events but isn't a SAX Parser itself.
* @return a content handler for handling the SAX events.
*/
public ContentHandler getContentHandler() {
if (!isInitialized()) {
initialize();
}
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) {
structHandler = new org.apache.fop.mif.MIFHandler(stream);
} else if (rendererType == RENDER_RTF) {
structHandler = new org.apache.fop.rtf.renderer.RTFHandler(stream);
} else {
if (renderer == null) {
throw new IllegalStateException(
"Renderer not set when using standard structHandler");
}
structHandler = new LayoutHandler(stream, renderer, true);
}

structHandler.enableLogging(getLogger());

treeBuilder.setUserAgent(getUserAgent());
treeBuilder.setStructHandler(structHandler);

return treeBuilder;
}

/**
* Render the FO document read by a SAX Parser from an InputSource.
* @param parser the SAX parser.
* @param source the input source the parser reads from.
* @throws FOPException if anything goes wrong.
*/
public synchronized void render(XMLReader parser, InputSource source)
throws FOPException {
if (!isInitialized()) {
initialize();
}
parser.setContentHandler(getContentHandler());
try {
parser.parse(source);
} catch (SAXException e) {
if (e.getException() instanceof FOPException) {
// Undo exception tunneling.
throw (FOPException)e.getException();
} else {
throw new FOPException(e);
}
} catch (IOException e) {
throw new FOPException(e);
}
}

/**
* Render the FO ducument represented by a DOM Document.
* @param document the DOM document to read from
* @throws FOPException if anything goes wrong.
*/
public synchronized void render(Document document)
throws FOPException {
if (!isInitialized()) {
initialize();
}
try {
DocumentInputSource source = new DocumentInputSource(document);
DocumentReader reader = new DocumentReader();
reader.setContentHandler(getContentHandler());
reader.parse(source);
} catch (SAXException e) {
if (e.getException() instanceof FOPException) {
// Undo exception tunneling.
throw (FOPException)e.getException();
} else {
throw new FOPException(e);
}
} catch (IOException e) {
throw new FOPException(e);
}

}

/**
* Runs the formatting and renderering process using the previously set
* parser, input source, renderer and output stream.
* If the renderer was not set, default to PDF.
* If no parser was set, and the input source is not a dom document,
* get a default SAX parser.
* @throws IOException in case of IO errors.
* @throws FOPException if anything else goes wrong.
*/
public synchronized void run() throws IOException, FOPException {
if (!isInitialized()) {
initialize();
}
if (renderer == null) {
setRenderer(RENDER_PDF);
}

if (source == null) {
throw new FOPException("InputSource is not set.");
}

if (reader == null) {
if (!(source instanceof DocumentInputSource)) {
try {
SAXParserFactory spf = javax.xml.parsers.SAXParserFactory.newInstance();
spf.setNamespaceAware(true);
reader = spf.newSAXParser().getXMLReader();
} catch (SAXException e) {
throw new FOPException(e);
} catch (ParserConfigurationException e) {
throw new FOPException(e);
}
}
}

if (source instanceof DocumentInputSource) {
render(((DocumentInputSource)source).getDocument());
} else {
render(reader, source);
}
}

/* Following code was stolen from org.apache.batik.util and modified slightly.
It does what sun.misc.Service probably does, but it cannot be relied on.
Hopefully, it will be part of standard jdk sometime.
This code was formerly part of a "Service" class, the contents of which have
been extracted here so that they can be used by both Session and the now-
deprecated Driver class.
*/

/**
* Map of services in the classpath
*/
private static Map providerMap = new java.util.Hashtable();

/**
* Loads services present in the class path.
*/
public static synchronized Iterator providers(Class cls) {
ClassLoader cl = cls.getClassLoader();
// null if loaded by bootstrap class loader
if (cl == null) {
cl = ClassLoader.getSystemClassLoader();
}
String serviceFile = "META-INF/services/" + cls.getName();

// getLogger().debug("File: " + serviceFile);

List lst = (List)providerMap.get(serviceFile);
if (lst != null) {
return lst.iterator();
}

lst = new java.util.Vector();
providerMap.put(serviceFile, lst);

Enumeration e;
try {
e = cl.getResources(serviceFile);
} catch (IOException ioe) {
return lst.iterator();
}

while (e.hasMoreElements()) {
try {
java.net.URL u = (java.net.URL)e.nextElement();
//getLogger().debug("URL: " + u);

InputStream is = u.openStream();
Reader r = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(r);

String line = br.readLine();
while (line != null) {
try {
// First strip any comment...
int idx = line.indexOf('#');
if (idx != -1) {
line = line.substring(0, idx);
}

// Trim whitespace.
line = line.trim();

// If nothing left then loop around...
if (line.length() == 0) {
line = br.readLine();
continue;
}
// getLogger().debug("Line: " + line);

// Try and load the class
// Object obj = cl.loadClass(line).newInstance();
// stick it into our vector...
lst.add(line);
} catch (Exception ex) {
// Just try the next line
}

line = br.readLine();
}
} catch (Exception ex) {
// Just try the next file...
}

}
return lst.iterator();
}

}

+ 20
- 20
src/java/org/apache/fop/apps/TraxInputHandler.java View File

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.apps;

// Imported java.io classes
@@ -68,7 +68,7 @@ import org.xml.sax.XMLReader;
import org.xml.sax.XMLFilter;

/**
* XSLTInputHandler basically takes an XML file and transforms it with an
* XSLTInputHandler basically takes an XML file and transforms it with an
* XSLT file and the resulting XSL-FO document is input for FOP.
*/
public class TraxInputHandler extends InputHandler {
@@ -79,7 +79,7 @@ public class TraxInputHandler extends InputHandler {

/**
* Constructor with files as input.
* @param xmlfile XML file
* @param xmlfile XML file
* @param xsltfile XSLT file
* @throws FOPException if initializing the Transformer fails
*/
@@ -107,7 +107,7 @@ public class TraxInputHandler extends InputHandler {
* @param xsltSource XSLT InputSource
* @throws FOPException if initializing the Transformer fails
*/
public TraxInputHandler(InputSource xmlSource, InputSource xsltSource)
public TraxInputHandler(InputSource xmlSource, InputSource xsltSource)
throws FOPException {
this.xmlSource = new StreamSource(xmlSource.getByteStream(),
xmlSource.getSystemId());
@@ -115,10 +115,10 @@ public class TraxInputHandler extends InputHandler {
xsltSource.getSystemId());
initTransformer();
}
private void initTransformer() throws FOPException {
try {
this.transformer =
this.transformer =
TransformerFactory.newInstance().newTransformer(xsltSource);
} catch (Exception ex) {
throw new FOPException(ex);
@@ -136,7 +136,7 @@ public class TraxInputHandler extends InputHandler {
}

/**
* Overwrites this method of the super class and returns an XMLFilter
* Overwrites this method of the super class and returns an XMLFilter
* instead of a simple XMLReader which allows chaining of transformations.
* @see org.apache.fop.apps.InputHandler#getParser()
*/
@@ -150,7 +150,7 @@ public class TraxInputHandler extends InputHandler {
* during the conversion of the xml file + xslt stylesheet the resulting
* data is fed into Fop. This should help to avoid memory problems
* @param xsltSource An xslt stylesheet
* @return an XMLFilter which can be chained together with other
* @return an XMLFilter which can be chained together with other
* XMLReaders or XMLFilters
* @throws FOPException if setting up the XMLFilter fails
*/
@@ -192,12 +192,12 @@ public class TraxInputHandler extends InputHandler {
}

/**
* @see org.apache.fop.apps.InputHandler#run(Session)
* @see org.apache.fop.apps.InputHandler#run(Driver)
*/
public void run(Session session) throws FOPException {
public void run(Driver driver) throws FOPException {
try {
transformer.transform(xmlSource,
new SAXResult(session.getContentHandler()));
new SAXResult(driver.getContentHandler()));
} catch (Exception ex) {
throw new FOPException(ex);
}

+ 3
- 3
src/java/org/apache/fop/apps/XSLTInputHandler.java View File

@@ -115,10 +115,10 @@ public class XSLTInputHandler extends InputHandler {
}

/**
* @see org.apache.fop.apps.InputHandler#run(Session)
* @see org.apache.fop.apps.InputHandler#run(Driver)
*/
public void run(Session session) throws FOPException {
traxInputHandler.run(session);
public void run(Driver driver) throws FOPException {
traxInputHandler.run(driver);
}

/**

+ 2
- 2
src/java/org/apache/fop/image/XMLImage.java View File

@@ -54,7 +54,7 @@ package org.apache.fop.image;
import org.w3c.dom.Document;

// FOP
import org.apache.fop.apps.Session;
import org.apache.fop.apps.Driver;

/**
* This is an implementation for XML-based images such as SVG.
@@ -86,7 +86,7 @@ public class XMLImage extends AbstractFopImage {
* @return the created SAX parser
*/
public static String getParserName() {
String parserClassName = Session.getParserClassName();
String parserClassName = Driver.getParserClassName();
return parserClassName;
}


+ 9
- 9
src/java/org/apache/fop/servlet/FopPrintServlet.java View File

@@ -72,7 +72,7 @@ import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.logger.Logger;

// FOP
import org.apache.fop.apps.Session;
import org.apache.fop.apps.Driver;
import org.apache.fop.apps.FOPException;
import org.apache.fop.area.PageViewport;
import org.apache.fop.apps.XSLTInputHandler;
@@ -171,13 +171,13 @@ public class FopPrintServlet extends HttpServlet {
public void renderFO(InputSource foFile,
HttpServletResponse response) throws ServletException {
try {
Session session = new Session(foFile, null);
Driver driver = new Driver(foFile, null);
PrinterJob pj = PrinterJob.getPrinterJob();
PrintRenderer renderer = new PrintRenderer(pj);

session.enableLogging(log);
session.setRenderer(renderer);
session.run();
driver.enableLogging(log);
driver.setRenderer(renderer);
driver.run();

reportOK (response);
} catch (Exception ex) {
@@ -194,15 +194,15 @@ public class FopPrintServlet extends HttpServlet {
public void renderXML(XSLTInputHandler input,
HttpServletResponse response) throws ServletException {
try {
Session session = new Session();
Driver driver = new Driver();
PrinterJob pj = PrinterJob.getPrinterJob();
PrintRenderer renderer = new PrintRenderer(pj);

pj.setCopies(1);

session.enableLogging(log);
session.setRenderer(renderer);
session.render(input.getParser(), input.getInputSource());
driver.enableLogging(log);
driver.setRenderer(renderer);
driver.render(input.getParser(), input.getInputSource());

reportOK (response);
} catch (Exception ex) {

+ 7
- 7
src/java/org/apache/fop/servlet/FopServlet.java View File

@@ -71,7 +71,7 @@ import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.logger.Logger;

//FOP
import org.apache.fop.apps.Session;
import org.apache.fop.apps.Driver;
import org.apache.fop.apps.FOPException;

/**
@@ -233,17 +233,17 @@ public class FopServlet extends HttpServlet {
throws FOPException, TransformerException {

//Setup FOP
Session session = new Session();
session.enableLogging(this.log);
session.setRenderer(Session.RENDER_PDF);
session.initialize();
Driver driver = new Driver();
driver.enableLogging(this.log);
driver.setRenderer(Driver.RENDER_PDF);
driver.initialize();

//Setup output
ByteArrayOutputStream out = new ByteArrayOutputStream();
session.setOutputStream(out);
driver.setOutputStream(out);

//Make sure the XSL transformation's result is piped through to FOP
Result res = new SAXResult(session.getContentHandler());
Result res = new SAXResult(driver.getContentHandler());

//Start the transformation and rendering process
transformer.transform(src, res);

+ 12
- 12
src/java/org/apache/fop/svg/SVGElementMapping.java View File

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.svg;

import java.util.HashMap;
@@ -55,7 +55,7 @@ import java.util.HashMap;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FOTreeBuilder;
import org.apache.fop.fo.ElementMapping;
import org.apache.fop.apps.Session;
import org.apache.fop.apps.Driver;

import org.apache.batik.util.XMLResourceDescriptor;
import org.apache.batik.dom.svg.SVGDOMImplementation;
@@ -75,7 +75,7 @@ public class SVGElementMapping implements ElementMapping {
// by default (SVGBrokenLinkProvider)
// normally the user agent value is used
XMLResourceDescriptor.setXMLParserClassName(
Session.getParserClassName());
Driver.getParserClassName());

foObjs = new HashMap();
foObjs.put("svg", new SE());

+ 11
- 11
src/java/org/apache/fop/svg/SVGUserAgent.java View File

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,12 +42,12 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.svg;

import org.apache.fop.fo.FOUserAgent;
@@ -158,7 +158,7 @@ public class SVGUserAgent extends UserAgentAdapter {
* @return the XML parser class name
*/
public String getXMLParserClassName() {
return org.apache.fop.apps.Session.getParserClassName();
return org.apache.fop.apps.Driver.getParserClassName();
}

/**

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

@@ -3,34 +3,34 @@
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
*
* Copyright (C) 1999-2003 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
@@ -42,15 +42,15 @@
* (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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
package org.apache.fop.tools;

import org.apache.fop.apps.Session;
import org.apache.fop.apps.Driver;
import org.apache.fop.apps.FOInputHandler;
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.InputHandler;
@@ -84,10 +84,10 @@ import org.xml.sax.SAXException;
* pdf rendering.
*
* Modified by Mark Lillywhite mark-fop@inomial.com to use the new Driver
* (now Session) interface.
* interface.
*/
public class TestConverter extends AbstractLogEnabled {
private boolean failOnly = false;
private boolean outputPDF = false;
private File destdir;
@@ -141,7 +141,7 @@ public class TestConverter extends AbstractLogEnabled {
}

/**
* Controls whether to process only the tests which are specified as fail
* Controls whether to process only the tests which are specified as fail
* in the test results.
* @param fail True if only fail tests should be processed
*/
@@ -266,7 +266,7 @@ public class TestConverter extends AbstractLogEnabled {
if (xslNode != null) {
xsl = xslNode.getNodeValue();
}
getLogger().debug("converting xml:" + xml + " and xsl:"
getLogger().debug("converting xml:" + xml + " and xsl:"
+ xsl + " to area tree");

try {
@@ -290,33 +290,33 @@ public class TestConverter extends AbstractLogEnabled {
XMLReader parser = inputHandler.getParser();
setParserFeatures(parser);

Session session = new Session();
setupLogger(session, "fop");
session.initialize();
Driver driver = new Driver();
setupLogger(driver, "fop");
driver.initialize();
FOUserAgent userAgent = new FOUserAgent();
userAgent.setBaseURL(baseURL);
session.setUserAgent(userAgent);
driver.setUserAgent(userAgent);
if (outputPDF) {
session.setRenderer(Session.RENDER_PDF);
driver.setRenderer(Driver.RENDER_PDF);
} else {
session.setRenderer(Session.RENDER_XML);
driver.setRenderer(Driver.RENDER_XML);
}

Map rendererOptions = new java.util.HashMap();
rendererOptions.put("fineDetail", new Boolean(false));
rendererOptions.put("consistentOutput", new Boolean(true));
session.getRenderer().setOptions(rendererOptions);
session.getRenderer().setProducer("Testsuite Converter");
driver.getRenderer().setOptions(rendererOptions);
driver.getRenderer().setProducer("Testsuite Converter");

String outname = xmlFile.getName();
if (outname.endsWith(".xml")) {
outname = outname.substring(0, outname.length() - 4);
}
session.setOutputStream(new java.io.BufferedOutputStream(
driver.setOutputStream(new java.io.BufferedOutputStream(
new java.io.FileOutputStream(new File(destdir,
outname + (outputPDF ? ".pdf" : ".at.xml")))));
getLogger().debug("ddir:" + destdir + " on:" + outname + ".pdf");
session.render(parser, inputHandler.getInputSource());
driver.render(parser, inputHandler.getInputSource());

// check difference
if (compare != null) {

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

@@ -72,7 +72,7 @@ import java.util.List;
import org.apache.fop.apps.Starter;
import org.apache.fop.apps.InputHandler;
import org.apache.fop.apps.FOInputHandler;
import org.apache.fop.apps.Session;
import org.apache.fop.apps.Driver;
import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.FOUserAgent;

@@ -307,27 +307,27 @@ class FOPTaskStarter extends Starter {
if ((format == null)
|| format.equalsIgnoreCase("application/pdf")
|| format.equalsIgnoreCase("pdf")) {
return Session.RENDER_PDF;
return Driver.RENDER_PDF;
} else if (format.equalsIgnoreCase("application/postscript")
|| format.equalsIgnoreCase("ps")) {
return Session.RENDER_PS;
return Driver.RENDER_PS;
} else if (format.equalsIgnoreCase("application/vnd.mif")
|| format.equalsIgnoreCase("mif")) {
return Session.RENDER_MIF;
return Driver.RENDER_MIF;
} else if (format.equalsIgnoreCase("application/msword")
|| format.equalsIgnoreCase("application/rtf")
|| format.equalsIgnoreCase("rtf")) {
return Session.RENDER_RTF;
return Driver.RENDER_RTF;
} else if (format.equalsIgnoreCase("application/vnd.hp-PCL")
|| format.equalsIgnoreCase("pcl")) {
return Session.RENDER_PCL;
return Driver.RENDER_PCL;
} else if (format.equalsIgnoreCase("text/plain")
|| format.equalsIgnoreCase("txt")) {
return Session.RENDER_TXT;
return Driver.RENDER_TXT;
} else if (format.equalsIgnoreCase("text/xml")
|| format.equalsIgnoreCase("at")
|| format.equalsIgnoreCase("xml")) {
return Session.RENDER_XML;
return Driver.RENDER_XML;
} else {
String err = "Couldn't determine renderer to use: " + format;
throw new BuildException(err);
@@ -336,19 +336,19 @@ class FOPTaskStarter extends Starter {

private String determineExtension(int renderer) {
switch (renderer) {
case Session.RENDER_PDF:
case Driver.RENDER_PDF:
return ".pdf";
case Session.RENDER_PS:
case Driver.RENDER_PS:
return ".ps";
case Session.RENDER_MIF:
case Driver.RENDER_MIF:
return ".mif";
case Session.RENDER_RTF:
case Driver.RENDER_RTF:
return ".rtf";
case Session.RENDER_PCL:
case Driver.RENDER_PCL:
return ".pcl";
case Session.RENDER_TXT:
case Driver.RENDER_TXT:
return ".txt";
case Session.RENDER_XML:
case Driver.RENDER_XML:
return ".xml";
default:
String err = "Unknown renderer: " + renderer;
@@ -478,16 +478,16 @@ class FOPTaskStarter extends Starter {
}

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

Loading…
Cancel
Save