Author: jeremias
Date: Mon Dec 8 03:30:11 2008
New Revision: 724310
URL: http://svn.apache.org/viewvc?rev=724310&view=rev
Log:
Batik's DOMUtilities.deepCloneDocument() doesn't propagate the document URI
which makes relative image URIs fail. Fixes one of our unit tests.
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/BatikUtil.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/ImageConverterSVG2G2D.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractGenericSVGHandler.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPSVGHandler.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DSVGHandler.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFSVGHandler.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSSVGHandler.java
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/BatikUtil.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/BatikUtil.java?rev=724310&r1=724309&r2=724310&view=diff
==============================================================================
---
xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/BatikUtil.java
(original)
+++
xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/BatikUtil.java
Mon Dec 8 03:30:11 2008
@@ -19,6 +19,11 @@
package org.apache.fop.image.loader.batik;
+import org.w3c.dom.Document;
+
+import org.apache.batik.dom.AbstractDocument;
+import org.apache.batik.dom.util.DOMUtilities;
+
/**
* Helper utilities for Apache Batik.
*/
@@ -38,4 +43,18 @@
return false;
}
+ /**
+ * Clones an SVG DOM document. This is used for making SVG production
thread-safe when the
+ * SVG document is cached and re-used.
+ * @param doc the SVG DOM to be cloned
+ * @return the cloned SVG DOM
+ */
+ public static Document cloneSVGDocument(Document doc) {
+ Document clonedDoc = DOMUtilities.deepCloneDocument(doc,
doc.getImplementation());
+ if (clonedDoc instanceof AbstractDocument) {
+
((AbstractDocument)clonedDoc).setDocumentURI(((AbstractDocument)doc).getDocumentURI());
+ }
+ return clonedDoc;
+ }
+
}
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/ImageConverterSVG2G2D.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/ImageConverterSVG2G2D.java?rev=724310&r1=724309&r2=724310&view=diff
==============================================================================
---
xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/ImageConverterSVG2G2D.java
(original)
+++
xmlgraphics/fop/trunk/src/java/org/apache/fop/image/loader/batik/ImageConverterSVG2G2D.java
Mon Dec 8 03:30:11 2008
@@ -29,7 +29,6 @@
import org.apache.batik.bridge.GVTBuilder;
import org.apache.batik.bridge.UserAgent;
import org.apache.batik.dom.svg.SVGDOMImplementation;
-import org.apache.batik.dom.util.DOMUtilities;
import org.apache.batik.gvt.GraphicsNode;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -83,7 +82,7 @@
Document doc = svg.getDocument();
//Cloning SVG DOM as Batik attaches non-thread-safe facilities (like
the CSS engine)
//to it.
- Document clonedDoc = DOMUtilities.deepCloneDocument(doc,
doc.getImplementation());
+ Document clonedDoc = BatikUtil.cloneSVGDocument(doc);
//Build the GVT tree
final GraphicsNode root;
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractGenericSVGHandler.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractGenericSVGHandler.java?rev=724310&r1=724309&r2=724310&view=diff
==============================================================================
---
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractGenericSVGHandler.java
(original)
+++
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractGenericSVGHandler.java
Mon Dec 8 03:30:11 2008
@@ -30,7 +30,6 @@
import org.apache.batik.bridge.GVTBuilder;
import org.apache.batik.dom.AbstractDocument;
import org.apache.batik.dom.svg.SVGDOMImplementation;
-import org.apache.batik.dom.util.DOMUtilities;
import org.apache.batik.gvt.GraphicsNode;
import org.apache.xmlgraphics.java2d.Graphics2DImagePainter;
@@ -39,6 +38,7 @@
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.events.EventBroadcaster;
import org.apache.fop.fo.extensions.ExtensionElementMapping;
+import org.apache.fop.image.loader.batik.BatikUtil;
import org.apache.fop.image.loader.batik.Graphics2DImagePainterImpl;
import org.apache.fop.render.RendererContext.RendererContextWrapper;
import org.apache.fop.svg.SVGEventProducer;
@@ -138,7 +138,7 @@
//Cloning SVG DOM as Batik attaches non-thread-safe facilities (like
the CSS engine)
//to it.
- Document clonedDoc = DOMUtilities.deepCloneDocument(doc,
doc.getImplementation());
+ Document clonedDoc = BatikUtil.cloneSVGDocument(doc);
//Build the GVT tree
final GraphicsNode root = buildGraphicsNode(userAgent, bridgeContext,
clonedDoc);
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPSVGHandler.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPSVGHandler.java?rev=724310&r1=724309&r2=724310&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPSVGHandler.java
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPSVGHandler.java
Mon Dec 8 03:30:11 2008
@@ -28,7 +28,6 @@
import org.apache.batik.bridge.BridgeContext;
import org.apache.batik.dom.svg.SVGDOMImplementation;
-import org.apache.batik.dom.util.DOMUtilities;
import org.apache.batik.gvt.GraphicsNode;
import org.apache.xmlgraphics.image.loader.ImageManager;
@@ -46,6 +45,7 @@
import org.apache.fop.afp.svg.AFPBridgeContext;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fonts.FontInfo;
+import org.apache.fop.image.loader.batik.BatikUtil;
import org.apache.fop.image.loader.batik.Graphics2DImagePainterImpl;
import org.apache.fop.render.AbstractGenericSVGHandler;
import org.apache.fop.render.Renderer;
@@ -113,7 +113,7 @@
//Cloning SVG DOM as Batik attaches non-thread-safe facilities (like
the CSS engine)
//to it.
- Document clonedDoc = DOMUtilities.deepCloneDocument(doc,
doc.getImplementation());
+ Document clonedDoc = BatikUtil.cloneSVGDocument(doc);
// Build the SVG DOM and provide the painter with it
GraphicsNode root = buildGraphicsNode(userAgent, bridgeContext,
clonedDoc);
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DSVGHandler.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DSVGHandler.java?rev=724310&r1=724309&r2=724310&view=diff
==============================================================================
---
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DSVGHandler.java
(original)
+++
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DSVGHandler.java
Mon Dec 8 03:30:11 2008
@@ -27,11 +27,11 @@
import org.apache.batik.bridge.BridgeContext;
import org.apache.batik.bridge.GVTBuilder;
-import org.apache.batik.dom.util.DOMUtilities;
import org.apache.batik.gvt.GraphicsNode;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.fop.image.loader.batik.BatikUtil;
import org.apache.fop.render.AbstractGenericSVGHandler;
import org.apache.fop.render.Renderer;
import org.apache.fop.render.RendererContext;
@@ -135,7 +135,7 @@
//Cloning SVG DOM as Batik attaches non-thread-safe facilities (like
the CSS engine)
//to it.
- Document clonedDoc = DOMUtilities.deepCloneDocument(doc,
doc.getImplementation());
+ Document clonedDoc = BatikUtil.cloneSVGDocument(doc);
GraphicsNode root;
try {
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFSVGHandler.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFSVGHandler.java?rev=724310&r1=724309&r2=724310&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFSVGHandler.java
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFSVGHandler.java
Mon Dec 8 03:30:11 2008
@@ -31,7 +31,6 @@
import org.apache.batik.bridge.BridgeContext;
import org.apache.batik.bridge.GVTBuilder;
import org.apache.batik.dom.svg.SVGDOMImplementation;
-import org.apache.batik.dom.util.DOMUtilities;
import org.apache.batik.gvt.GraphicsNode;
import org.apache.batik.util.SVGConstants;
import org.apache.commons.logging.Log;
@@ -39,6 +38,7 @@
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fonts.FontInfo;
+import org.apache.fop.image.loader.batik.BatikUtil;
import org.apache.fop.pdf.PDFDocument;
import org.apache.fop.pdf.PDFPage;
import org.apache.fop.pdf.PDFPaintingState;
@@ -182,7 +182,7 @@
//Cloning SVG DOM as Batik attaches non-thread-safe facilities (like
the CSS engine)
//to it.
- Document clonedDoc = DOMUtilities.deepCloneDocument(doc,
doc.getImplementation());
+ Document clonedDoc = BatikUtil.cloneSVGDocument(doc);
GraphicsNode root;
try {
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSSVGHandler.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSSVGHandler.java?rev=724310&r1=724309&r2=724310&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSSVGHandler.java
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSSVGHandler.java
Mon Dec 8 03:30:11 2008
@@ -29,7 +29,6 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.batik.bridge.BridgeContext;
import org.apache.batik.bridge.GVTBuilder;
-import org.apache.batik.dom.util.DOMUtilities;
import org.apache.batik.gvt.GraphicsNode;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -38,6 +37,7 @@
import org.apache.xmlgraphics.ps.PSGenerator;
import org.apache.fop.fonts.FontInfo;
+import org.apache.fop.image.loader.batik.BatikUtil;
import org.apache.fop.render.AbstractGenericSVGHandler;
import org.apache.fop.render.Renderer;
import org.apache.fop.render.RendererContext;
@@ -273,7 +273,7 @@
//Cloning SVG DOM as Batik attaches non-thread-safe facilities (like
the CSS engine)
//to it.
- Document clonedDoc = DOMUtilities.deepCloneDocument(doc,
doc.getImplementation());
+ Document clonedDoc = BatikUtil.cloneSVGDocument(doc);
GraphicsNode root;
try {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]