vgritsenko 2003/05/07 18:03:49
Modified: lib jars.xml src/java/org/apache/cocoon/xml/dom SVGBuilder.java Added: lib/optional batik-all-1.5b5.jar Removed: lib/optional batik-all-1.5b2.jar Log: Backport from 2.1 SVG serializer fixes. Update batik library to 1.5b5. Revision Changes Path 1.5 +1 -1 cocoon-2.0/lib/jars.xml Index: jars.xml =================================================================== RCS file: /home/cvs/cocoon-2.0/lib/jars.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- jars.xml 17 Mar 2003 10:35:38 -0000 1.4 +++ jars.xml 8 May 2003 01:03:47 -0000 1.5 @@ -253,7 +253,7 @@ the Scalable Vector Graphics (SVG) format for various purposes, such as viewing, generation or manipulation.</description> <used-by>SVG serializer (SVG to JPG, PNG)</used-by> - <lib>optional/batik-all-1.5b2.jar</lib> + <lib>optional/batik-all-1.5b5.jar</lib> <homepage>http://xml.apache.org/batik/</homepage> </file> <file> 1.1 cocoon-2.0/lib/optional/batik-all-1.5b5.jar <<Binary file>> 1.3 +44 -12 cocoon-2.0/src/java/org/apache/cocoon/xml/dom/SVGBuilder.java Index: SVGBuilder.java =================================================================== RCS file: /home/cvs/cocoon-2.0/src/java/org/apache/cocoon/xml/dom/SVGBuilder.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- SVGBuilder.java 28 Apr 2003 06:00:19 -0000 1.2 +++ SVGBuilder.java 8 May 2003 01:03:49 -0000 1.3 @@ -57,6 +57,10 @@ import org.apache.log.Logger; import org.w3c.dom.Document; import org.xml.sax.SAXException; +import org.xml.sax.Locator; + +import java.net.MalformedURLException; +import java.net.URL; /** * The <code>SVGBuilder</code> is a utility class that will generate a @@ -68,6 +72,8 @@ public class SVGBuilder extends SAXSVGDocumentFactory implements XMLConsumer, Loggable { protected Logger log; + protected Locator locator; + private static final String SAX_PARSER = "org.apache.xerces.parsers.SAXParser"; @@ -89,6 +95,10 @@ } } + protected Logger getLogger() { + return this.log; + } + /** * Return the newly built Document. */ @@ -101,43 +111,65 @@ * * @exception SAXException If this method was not called appropriately. */ - public void startDocument() - throws SAXException { + public void startDocument() throws SAXException { try { // Create SVG Document String namespaceURI = SVGDOMImplementation.SVG_NAMESPACE_URI; this.document = implementation.createDocument(namespaceURI, "svg", null); super.startDocument(); + // Add svg, and SVG_NAMESPACE to SAXDocumentFactory namespace handling. + // This ties 'svg' prefix used above to the svg namespace uri. + namespaces.put("svg", SVGDOMImplementation.SVG_NAMESPACE_URI); + } catch (SAXException se) { + throw se; } catch (Exception ex){ - log.error("SVGBuilder: startDocument", ex); - throw new SAXException("SVGBuilder: startDocument", ex); + if (getLogger().isDebugEnabled()) { + getLogger().debug("Got exception in startDocument, rethrowing", ex); + } + throw new SAXException("Exception in startDocument", ex); } } + public void setDocumentLocator(Locator locator) { + this.locator = locator; + super.setDocumentLocator(locator); + } + /** * Receive notification of the beginning of a document. * * @exception SAXException If this method was not called appropriately. */ - public void endDocument () - throws SAXException { + public void endDocument() throws SAXException { try { super.endDocument(); // FIXME: Hack. - ((org.apache.batik.dom.svg.SVGOMDocument)this.document).setURLObject(new java.net.URL("http://xml.apache.org")); + try { + if (this.locator != null) { + ((org.apache.batik.dom.svg.SVGOMDocument)super.document).setURLObject(new URL(this.locator.getSystemId())); + } else { + getLogger().warn("setDocumentLocator was not called, URI resolution will not work"); + } + } catch (MalformedURLException e) { + getLogger().warn("Unable to set document base URI to " + this.locator.getSystemId(), e); + ((org.apache.batik.dom.svg.SVGOMDocument)super.document).setURLObject(new URL("http://xml.apache.org/")); + } this.notify(this.document); + } catch (SAXException se) { + throw se; } catch (Exception ex){ - log.error("SVGBuilder: endDocument", ex); - throw new SAXException("SVGBuilder: endDocument", ex); + if (getLogger().isDebugEnabled()) { + getLogger().debug("Got exception in endDocument, rethrowing", ex); + } + throw new SAXException("Exception in endDocument", ex); } } /** * Receive notification of a successfully completed DOM tree generation. */ - protected void notify(Document doc) - throws SAXException { + protected void notify(Document doc) throws SAXException { } }