vhardy 2003/07/08 01:57:16
Modified: sources/org/apache/batik/transcoder
XMLAbstractTranscoder.java
sources/org/apache/batik/dom/util DocumentFactory.java
SAXDocumentFactory.java
Added: test-resources/org/apache/batik/transcoder unitTesting.xml
test-sources/org/apache/batik/transcoder
TranscoderInputTest.java
Log:
Fix and regression test for Bug 14788
Revision Changes Path
1.1
xml-batik/test-resources/org/apache/batik/transcoder/unitTesting.xml
Index: unitTesting.xml
===================================================================
<!-- ====================================================================== -->
<!-- Copyright (C) The Apache Software Foundation. All rights reserved. -->
<!-- -->
<!-- This software is published under the terms of the Apache Software -->
<!-- License version 1.1, a copy of which has been included with this -->
<!-- distribution in the LICENSE file. -->
<!-- ====================================================================== -->
<!-- ====================================================================== -->
<!-- @author [EMAIL PROTECTED] -->
<!-- @version $Id: unitTesting.xml,v 1.1 2003/07/08 08:57:16 vhardy Exp $ -->
<!-- ====================================================================== -->
<testSuite id="transcoder.unitTesting"
name="org.apache.batik.transcoder package Unit Testing">
<!-- ================================================================== -->
<!-- TranscoderInput Test -->
<!-- ================================================================== -->
<test id="TranscoderInput" class="org.apache.batik.transcoder.TranscoderInputTest" />
</testSuite>
1.1
xml-batik/test-sources/org/apache/batik/transcoder/TranscoderInputTest.java
Index: TranscoderInputTest.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.batik.transcoder;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.net.URL;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
import org.apache.batik.test.AbstractTest;
import org.apache.batik.test.TestReport;
import org.w3c.dom.Document;
import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
import org.apache.batik.util.XMLResourceDescriptor;
import org.apache.batik.dom.svg.ExtensibleSVGDOMImplementation;
import org.apache.batik.util.SVGConstants;
/**
* This test validates that the various configurations of TranscoderInput
* are supported by the XMLAbstractTranscoder class.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a>
* @version $Id: TranscoderInputTest.java,v 1.1 2003/07/08 08:57:16 vhardy Exp $
*/
public class TranscoderInputTest extends AbstractTest {
public TestReport runImpl() throws Exception {
String TEST_URI = (new File("samples/anne.svg")).toURL().toString();
TestTranscoder t = new TestTranscoder();
TranscoderOutput out = new TranscoderOutput(new StringWriter());
// XMLReader
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
TranscoderInput ti = new TranscoderInput(xmlReader);
ti.setURI(TEST_URI);
t.transcode(ti, out);
assertTrue(t.passed);
// Input Stream
URL uri = new URL(TEST_URI);
InputStream is = uri.openStream();
ti = new TranscoderInput(is);
ti.setURI(TEST_URI);
t = new TestTranscoder();
t.transcode(ti, out);
assertTrue(t.passed);
// Reader
uri = new URL(TEST_URI);
is = uri.openStream();
Reader r = new InputStreamReader(is);
ti = new TranscoderInput(r);
ti.setURI(TEST_URI);
t = new TestTranscoder();
t.transcode(ti, out);
assertTrue(t.passed);
// Document
String parser = XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
Document doc = f.createDocument(TEST_URI);
ti = new TranscoderInput(doc);
ti.setURI(TEST_URI);
t = new TestTranscoder();
t.transcode(ti, out);
assertTrue(t.passed);
// URI only
ti = new TranscoderInput(TEST_URI);
t = new TestTranscoder();
t.transcode(ti, out);
assertTrue(t.passed);
return reportSuccess();
}
static class TestTranscoder extends XMLAbstractTranscoder {
boolean passed = false;
public TestTranscoder() {
addTranscodingHint(KEY_DOCUMENT_ELEMENT_NAMESPACE_URI,
SVGConstants.SVG_NAMESPACE_URI);
addTranscodingHint(KEY_DOM_IMPLEMENTATION,
ExtensibleSVGDOMImplementation.getDOMImplementation());
addTranscodingHint(KEY_DOCUMENT_ELEMENT,
SVGConstants.SVG_SVG_TAG);
addTranscodingHint(KEY_DOM_IMPLEMENTATION,
ExtensibleSVGDOMImplementation.getDOMImplementation());
}
protected void transcode(Document document,
String uri,
TranscoderOutput output) {
passed = (document != null);
}
}
}
1.12 +7 -2
xml-batik/sources/org/apache/batik/transcoder/XMLAbstractTranscoder.java
Index: XMLAbstractTranscoder.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/transcoder/XMLAbstractTranscoder.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XMLAbstractTranscoder.java 11 Apr 2003 13:59:23 -0000 1.11
+++ XMLAbstractTranscoder.java 8 Jul 2003 08:57:16 -0000 1.12
@@ -109,11 +109,16 @@
documentElement,
input.getURI(),
input.getReader());
+ } else if (input.getXMLReader() != null) {
+ document = f.createDocument(namespaceURI,
+ documentElement,
+ input.getURI(),
+ input.getXMLReader());
} else if (uri != null) {
document = f.createDocument(namespaceURI,
documentElement,
uri);
- }
+ }
} catch (DOMException ex) {
handler.fatalError(new TranscoderException(ex));
} catch (IOException ex) {
1.9 +14 -1 xml-batik/sources/org/apache/batik/dom/util/DocumentFactory.java
Index: DocumentFactory.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/dom/util/DocumentFactory.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DocumentFactory.java 11 Apr 2003 13:57:10 -0000 1.8
+++ DocumentFactory.java 8 Jul 2003 08:57:16 -0000 1.9
@@ -14,6 +14,8 @@
import org.w3c.dom.Document;
+import org.xml.sax.XMLReader;
+
/**
* This interface represents an object which can build a Document.
*
@@ -53,6 +55,17 @@
* @exception IOException if an error occured while reading the document.
*/
Document createDocument(String ns, String root, String uri, InputStream is)
+ throws IOException;
+
+ /**
+ * Creates a Document instance.
+ * @param ns The namespace URI of the root element of the document.
+ * @param root The name of the root element of the document.
+ * @param uri The document URI.
+ * @param r An XMLReader instance
+ * @exception IOException if an error occured while reading the document.
+ */
+ Document createDocument(String ns, String root, String uri, XMLReader r)
throws IOException;
/**
1.17 +29 -1
xml-batik/sources/org/apache/batik/dom/util/SAXDocumentFactory.java
Index: SAXDocumentFactory.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/dom/util/SAXDocumentFactory.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- SAXDocumentFactory.java 11 Apr 2003 13:57:11 -0000 1.16
+++ SAXDocumentFactory.java 8 Jul 2003 08:57:16 -0000 1.17
@@ -247,6 +247,34 @@
/**
* Creates a Document instance.
+ * @param ns The namespace URI of the root element of the document.
+ * @param root The name of the root element of the document.
+ * @param uri The document URI.
+ * @param r an XMLReaderInstance
+ * @exception IOException if an error occured while reading the document.
+ */
+ public Document createDocument(String ns, String root, String uri,
+ XMLReader r) throws IOException {
+ r.setContentHandler(this);
+ r.setDTDHandler(this);
+ r.setEntityResolver(this);
+ try {
+ r.parse(uri);
+ } catch (SAXException e) {
+ Exception ex = e.getException();
+ if (ex != null && ex instanceof InterruptedIOException) {
+ throw (InterruptedIOException) ex;
+ }
+ throw new IOException(e.getMessage());
+ }
+ currentNode = null;
+ Document ret = document;
+ document = null;
+ return ret;
+ }
+
+ /**
+ * Creates a Document instance.
* @param uri The document URI.
* @param r The document reader.
* @exception IOException if an error occured while reading the document.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]