aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache
diff options
context:
space:
mode:
authorGlen Mazza <gmazza@apache.org>2004-07-25 17:04:44 +0000
committerGlen Mazza <gmazza@apache.org>2004-07-25 17:04:44 +0000
commitd918e59ad096f78692e1177646e719110762aea9 (patch)
treef1f6b81d618ef126ee72fe53bdc683f2971a83b0 /src/java/org/apache
parent11c7751e99bb7c57b359da3b55b66f8c6013b5b8 (diff)
downloadxmlgraphics-fop-d918e59ad096f78692e1177646e719110762aea9.tar.gz
xmlgraphics-fop-d918e59ad096f78692e1177646e719110762aea9.zip
Took advantage of the Transformer similarities between FO input and
(XSL, XSLT) input to combine the two into InputHandler. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197840 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache')
-rw-r--r--src/java/org/apache/fop/apps/CommandLineOptions.java4
-rw-r--r--src/java/org/apache/fop/apps/FOFileHandler.java81
-rw-r--r--src/java/org/apache/fop/apps/InputHandler.java93
-rw-r--r--src/java/org/apache/fop/apps/XSLTInputHandler.java99
-rw-r--r--src/java/org/apache/fop/fo/FObj.java2
-rw-r--r--src/java/org/apache/fop/tools/TestConverter.java10
-rw-r--r--src/java/org/apache/fop/tools/anttasks/Fop.java3
7 files changed, 92 insertions, 200 deletions
diff --git a/src/java/org/apache/fop/apps/CommandLineOptions.java b/src/java/org/apache/fop/apps/CommandLineOptions.java
index e26e767be..d2f4cdc57 100644
--- a/src/java/org/apache/fop/apps/CommandLineOptions.java
+++ b/src/java/org/apache/fop/apps/CommandLineOptions.java
@@ -483,9 +483,9 @@ public class CommandLineOptions implements Constants {
private InputHandler createInputHandler() throws IllegalArgumentException {
switch (inputmode) {
case FO_INPUT:
- return new FOFileHandler(fofile);
+ return new InputHandler(fofile);
case XSLT_INPUT:
- return new XSLTInputHandler(xmlfile, xsltfile, xsltParams);
+ return new InputHandler(xmlfile, xsltfile, xsltParams);
default:
throw new IllegalArgumentException("Error creating InputHandler object.");
}
diff --git a/src/java/org/apache/fop/apps/FOFileHandler.java b/src/java/org/apache/fop/apps/FOFileHandler.java
deleted file mode 100644
index b159e5086..000000000
--- a/src/java/org/apache/fop/apps/FOFileHandler.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 1999-2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* $Id$ */
-
-package org.apache.fop.apps;
-
-// Java
-import java.io.File;
-
-// JAXP
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.stream.StreamSource;
-
-// Imported SAX classes
-import org.xml.sax.InputSource;
-
-/**
- * Manages input if it is an XSL-FO file.
- */
-public class FOFileHandler extends InputHandler {
- private StreamSource fofile = null;
-
- /**
- * Create a FOFileHandler for a file.
- * @param fofile the file to read the FO document.
- */
- public FOFileHandler(File fofile) {
- this.fofile = new StreamSource(fofile);
-
- try {
- baseURL =
- new File(fofile.getAbsolutePath()).getParentFile().toURL().toExternalForm();
- } catch (Exception e) {
- baseURL = "";
- }
- }
-
- /**
- * @see org.apache.fop.apps.InputHandler#render(Fop)
- */
- public void render(Fop fop) throws FOPException {
-
- // temporary until baseURL removed from inputHandler objects
- if (fop.getUserAgent().getBaseURL() == null) {
- fop.getUserAgent().setBaseURL(getBaseURL());
- }
-
- try {
- // Setup JAXP using identity transformer (no stylesheet here)
- TransformerFactory factory = TransformerFactory.newInstance();
- Transformer transformer = factory.newTransformer();
-
- // Resulting SAX events (the generated FO) must be piped through to FOP
- Result res = new SAXResult(fop.getDefaultHandler());
-
- // Start XSLT transformation and FOP processing
- transformer.transform(fofile, res);
-
- } catch (Exception e) {
- throw new FOPException(e);
- }
- }
-}
diff --git a/src/java/org/apache/fop/apps/InputHandler.java b/src/java/org/apache/fop/apps/InputHandler.java
index e094168ed..7af24101d 100644
--- a/src/java/org/apache/fop/apps/InputHandler.java
+++ b/src/java/org/apache/fop/apps/InputHandler.java
@@ -18,19 +18,47 @@
package org.apache.fop.apps;
+// Imported java.io classes
+import java.io.File;
+import java.util.Vector;
+
+// Imported TraX classes
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamSource;
+
/**
- * Abstract super class for input handlers.
+ * Class for handling files input from command line
+ * either with XML and XSLT files (and optionally xsl
+ * parameters) or FO File input alone
*/
-public abstract class InputHandler {
-
- protected String baseURL = null;
+public class InputHandler {
+ private File sourcefile = null; // either FO or XML/XSLT usage
+ private File stylesheet = null; // for XML/XSLT usage
+ private Vector xsltParams = null; // for XML/XSLT usage
/**
- * Get the base URL associated with this input source
- * @return the input source
+ * Constructor for XML->XSLT->FO input
+ * @param xmlfile XML file
+ * @param xsltfile XSLT file
+ * @param params Vector of command-line parameters (name, value,
+ * name, value, ...) for XSL stylesheet, null if none
+ */
+ public InputHandler(File xmlfile, File xsltfile, Vector params) {
+ sourcefile = xmlfile;
+ stylesheet = xsltfile;
+ xsltParams = params;
+ }
+
+ /**
+ * Constructor for FO input
+ * @param fofile the file to read the FO document.
*/
- public String getBaseURL() {
- return baseURL;
+ public InputHandler(File fofile) {
+ sourcefile = fofile;
}
/**
@@ -38,6 +66,53 @@ public abstract class InputHandler {
* @param fop -- Fop object
* @throws FOPException in case of an error during processing
*/
- public void render(Fop fop) throws FOPException {}
+ public void render(Fop fop) throws FOPException {
+ // if base URL was not explicitly set in FOUserAgent, obtain here
+ if (fop.getUserAgent().getBaseURL() == null) {
+ String baseURL = null;
+
+ try {
+ baseURL =
+ new File(sourcefile.getAbsolutePath()).
+ getParentFile().toURL().toExternalForm();
+ } catch (Exception e) {
+ baseURL = "";
+ }
+ fop.getUserAgent().setBaseURL(baseURL);
+ }
+
+ try {
+ // Setup XSLT
+ TransformerFactory factory = TransformerFactory.newInstance();
+ Transformer transformer;
+
+ if (stylesheet == null) { // FO Input
+ transformer = factory.newTransformer();
+ } else { // XML/XSLT input
+ transformer = factory.newTransformer(new StreamSource(
+ stylesheet));
+
+ // Set the value of parameters, if any, defined for stylesheet
+ if (xsltParams != null) {
+ for (int i = 0; i < xsltParams.size(); i += 2) {
+ transformer.setParameter((String) xsltParams.elementAt(i),
+ (String) xsltParams.elementAt(i + 1));
+ }
+ }
+ }
+
+ // Create a SAXSource from the input Source file
+ Source src = new StreamSource(sourcefile);
+
+ // Resulting SAX events (the generated FO) must be piped through to FOP
+ Result res = new SAXResult(fop.getDefaultHandler());
+
+ // Start XSLT transformation and FOP processing
+ transformer.transform(src, res);
+
+ } catch (Exception e) {
+ throw new FOPException(e);
+ }
+ }
}
diff --git a/src/java/org/apache/fop/apps/XSLTInputHandler.java b/src/java/org/apache/fop/apps/XSLTInputHandler.java
deleted file mode 100644
index f30ecc9e5..000000000
--- a/src/java/org/apache/fop/apps/XSLTInputHandler.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 1999-2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* $Id$ */
-
-package org.apache.fop.apps;
-
-// Imported java.io classes
-import java.io.File;
-import java.util.Vector;
-
-// Imported TraX classes
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.stream.StreamSource;
-
-// Imported SAX classes
-import org.xml.sax.InputSource;
-
-/**
- * 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 XSLTInputHandler extends InputHandler {
- private StreamSource xmlSource;
- private Source xsltSource;
- private Vector xsltParams = null;
-
- /**
- * Constructor for files as input
- * @param xmlfile XML file
- * @param xsltfile XSLT file
- * @param params Vector of command-line parameters (name, value,
- * name, value, ...) for XSL stylesheet, null if none
- * @throws FOPException if initializing the Transformer fails
- */
- public XSLTInputHandler(File xmlfile, File xsltfile, Vector params) {
- this.xmlSource = new StreamSource(xmlfile);
- this.xsltSource = new StreamSource(xsltfile);
- try {
- baseURL =
- new File(xmlfile.getAbsolutePath()).getParentFile().toURL().toExternalForm();
- } catch (Exception e) {
- baseURL = "";
- }
- xsltParams = params;
- }
-
- /**
- * @see org.apache.fop.apps.InputHandler#render(Fop)
- */
- public void render(Fop fop)
- throws FOPException {
-
- // temporary until baseURL removed from inputHandler objects
- if (fop.getUserAgent().getBaseURL() == null) {
- fop.getUserAgent().setBaseURL(getBaseURL());
- }
-
- try {
- // Setup XSLT
- TransformerFactory factory = TransformerFactory.newInstance();
- Transformer transformer = factory.newTransformer(xsltSource);
-
- // Set the value of parameters, if any, defined for stylesheet
- if (xsltParams != null) {
- for (int i = 0; i < xsltParams.size(); i += 2) {
- transformer.setParameter((String) xsltParams.elementAt(i),
- (String) xsltParams.elementAt(i + 1));
- }
- }
-
- // Resulting SAX events (the generated FO) must be piped through to FOP
- Result res = new SAXResult(fop.getDefaultHandler());
-
- // Start XSLT transformation and FOP processing
- transformer.transform(xmlSource, res);
-
- } catch (Exception e) {
- throw new FOPException(e);
- }
- }
-}
diff --git a/src/java/org/apache/fop/fo/FObj.java b/src/java/org/apache/fop/fo/FObj.java
index a61790606..a6d3739c4 100644
--- a/src/java/org/apache/fop/fo/FObj.java
+++ b/src/java/org/apache/fop/fo/FObj.java
@@ -57,7 +57,7 @@ public class FObj extends FONode implements Constants {
protected Map layoutDimension = null;
/** During input FO validation, certain FO's are not valid as
- child nodes if this FO is a descendant of an Out Of Line
+ child nodes if they would be a descendant of an Out Of Line
Formatting Object as defined in specification.
See Section 6.2 of 1.0/1.2 spec for more information.
*/
diff --git a/src/java/org/apache/fop/tools/TestConverter.java b/src/java/org/apache/fop/tools/TestConverter.java
index 66f7b36f2..5090575f5 100644
--- a/src/java/org/apache/fop/tools/TestConverter.java
+++ b/src/java/org/apache/fop/tools/TestConverter.java
@@ -27,10 +27,8 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.fop.apps.Fop;
-import org.apache.fop.apps.FOFileHandler;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.InputHandler;
-import org.apache.fop.apps.XSLTInputHandler;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -296,11 +294,11 @@ public class TestConverter {
InputHandler inputHandler = null;
if (xsl == null) {
- inputHandler = new FOFileHandler(xmlFile);
+ inputHandler = new InputHandler(xmlFile);
} else {
- inputHandler = new XSLTInputHandler(xmlFile,
- new File(baseDir + "/"
- + xsl), null);
+ inputHandler = new InputHandler(xmlFile,
+ new File(baseDir + "/"
+ + xsl), null);
}
FOUserAgent userAgent = new FOUserAgent();
diff --git a/src/java/org/apache/fop/tools/anttasks/Fop.java b/src/java/org/apache/fop/tools/anttasks/Fop.java
index 633b37b1d..c60bb9f06 100644
--- a/src/java/org/apache/fop/tools/anttasks/Fop.java
+++ b/src/java/org/apache/fop/tools/anttasks/Fop.java
@@ -35,7 +35,6 @@ import java.util.List;
// FOP
import org.apache.fop.apps.InputHandler;
-import org.apache.fop.apps.FOFileHandler;
import org.apache.fop.fo.Constants;
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
@@ -517,7 +516,7 @@ class FOPTaskStarter {
private void render(File foFile, File outFile,
int renderer) throws FOPException {
- InputHandler inputHandler = new FOFileHandler(foFile);
+ InputHandler inputHandler = new InputHandler(foFile);
OutputStream out = null;
try {