]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
1. Moved the XMLReader createParser() functionality from abstract class InputHandler...
authorGlen Mazza <gmazza@apache.org>
Sat, 2 Aug 2003 01:15:20 +0000 (01:15 +0000)
committerGlen Mazza <gmazza@apache.org>
Sat, 2 Aug 2003 01:15:20 +0000 (01:15 +0000)
2.  Added the setting of the "namespace-prefix" SAX option directly into createParser(), and removed function setParserFeatures (where it was previously being set).
3.  Removed the duplicate XMLReader creation code in Driver.run(), it now uses FOTreeBuilder.createParser().

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196769 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/apps/Driver.java
src/java/org/apache/fop/apps/FOInputHandler.java
src/java/org/apache/fop/apps/InputHandler.java
src/java/org/apache/fop/apps/XSLTInputHandler.java

index f45f50f461136b38b703df69b3b8907fd3a62fe7..acf863a5409ce57385d71f7e1c5278355e4f2ccf 100644 (file)
@@ -579,7 +579,6 @@ public class Driver implements LogEnabled {
     public synchronized void render(InputHandler inputHandler)
                 throws FOPException {
         XMLReader parser = inputHandler.getParser();
-        inputHandler.setParserFeatures(parser);
         render(parser, inputHandler.getInputSource());
     }
 
@@ -660,15 +659,8 @@ public class Driver implements LogEnabled {
 
         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);
-                }
+                //TODO: (gm) rename to FOFileHandler or similar
+                reader = org.apache.fop.apps.FOInputHandler.createParser();
             }
         }
 
@@ -678,6 +670,5 @@ public class Driver implements LogEnabled {
             render(reader, source);
         }
     }
-
 }
 
index 9f23c7dd5d1224e24bf4dfcd743cf2d96ccdbcef..1c52f75ee43bb1b24d7b3941f24277bfc629ba6a 100644 (file)
@@ -53,11 +53,16 @@ package org.apache.fop.apps;
 // Imported SAX classes
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotSupportedException;
 
 // java
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.parsers.ParserConfigurationException;
 import java.io.File;
 import java.net.URL;
 
+
 /**
  * Manages input if it is an XSL-FO file.
  */
@@ -97,7 +102,7 @@ public class FOInputHandler extends InputHandler {
      * @see org.apache.fop.apps.InputHandler#getParser()
      */
     public XMLReader getParser() throws FOPException {
-        return super.createParser();
+        return createParser();
     }
 
     /**
@@ -107,6 +112,29 @@ public class FOInputHandler extends InputHandler {
         throw new FOPException("not implemented: FOInputHandler.run(Driver)");
     }
 
+    /**
+     * Creates <code>XMLReader</code> object using default
+     * <code>SAXParserFactory</code>
+     * @return the created <code>XMLReader</code>
+     * @throws FOPException if the parser couldn't be created or configured for proper operation.
+     */
+    protected static XMLReader createParser() throws FOPException {
+        try {
+            SAXParserFactory factory = SAXParserFactory.newInstance();
+            factory.setNamespaceAware(true);
+            factory.setFeature(
+                "http://xml.org/sax/features/namespace-prefixes", true);
+            return factory.newSAXParser().getXMLReader();
+        } catch (SAXNotSupportedException se) {
+            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", se);
+        } catch (SAXException se) {
+            throw new FOPException("Couldn't create XMLReader", se);
+        } catch (ParserConfigurationException pce) {
+            throw new FOPException("Couldn't create XMLReader", pce);
+        }
+    }
 
 }
 
index c9783fc130ef214c0f38401001ded26e1390aa99..fb060d47d44493fd20c48798808ff0628933ea1d 100644 (file)
@@ -111,24 +111,6 @@ public abstract class InputHandler {
             throw new Error("unexpected MalformedURLException");
         }
     }
-
-    /**
-     * Creates <code>XMLReader</code> object using default
-     * <code>SAXParserFactory</code>
-     * @return the created <code>XMLReader</code>
-     * @throws FOPException if the parser couldn't be created or configured for proper operation.
-     */
-    protected static XMLReader createParser() throws FOPException {
-        try {
-            SAXParserFactory factory = SAXParserFactory.newInstance();
-            factory.setNamespaceAware(true);
-            return factory.newSAXParser().getXMLReader();
-        } catch (SAXException se) {
-            throw new FOPException("Coudn't create XMLReader", se);
-        } catch (ParserConfigurationException pce) {
-            throw new FOPException("Coudn't create XMLReader", pce);
-        }
-    }
     
     /**
      * Runs this InputHandler through the Driver.
@@ -136,22 +118,5 @@ public abstract class InputHandler {
      * @throws FOPException if processing this InputHandler fails
      */
     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);
-        }
-    }
 }
 
index 82a01b15d6ddc90f881a96e04646b589a20bab4e..d287e0f1698dd502093da12dce661ad2971a857d 100644 (file)
@@ -170,7 +170,7 @@ public class XSLTInputHandler extends InputHandler {
                     saxTFactory.newXMLFilter(xsltSource);
 
                 // Create an XMLReader.
-                XMLReader parser = createParser();
+                XMLReader parser = FOInputHandler.createParser();
                 if (parser == null) {
                     throw new FOPException("Unable to create SAX parser");
                 }