vhardy 2003/07/03 00:53:59
Modified: sources/org/apache/batik/svggen SVGGraphics2D.java
test-resources/org/apache/batik/svggen regsvggen.xml
Added: test-sources/org/apache/batik/svggen Bug21259.java
Log:
Fixed bug 21259
Revision Changes Path
1.1 xml-batik/test-sources/org/apache/batik/svggen/Bug21259.java
Index: Bug21259.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.svggen;
import java.awt.*;
import java.io.*;
import org.apache.batik.svggen.*;
import org.apache.batik.transcoder.image.*;
import org.apache.batik.transcoder.*;
import org.apache.batik.dom.svg.*;
import org.w3c.dom.*;
import org.apache.batik.test.AbstractTest;
import org.apache.batik.test.TestReport;
/**
* Checks that the streamed root is not removed from its parent
* as shown by bug report 21259.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a>
* @version $Id: Bug21259.java,v 1.1 2003/07/03 07:53:59 vhardy Exp $
*/
public class Bug21259 extends AbstractTest{
public TestReport runImpl() throws Exception {
Document document =
SVGDOMImplementation.getDOMImplementation()
.createDocument(SVGDOMImplementation.SVG_NAMESPACE_URI , "svg", null);
SVGGeneratorContext ctx = SVGGeneratorContext.createDefault(document);
ctx.setComment("Test");
SVGGraphics2D graphics = new SVGGraphics2D(ctx, false);
graphics.setSVGCanvasSize(new Dimension(600, 400));
graphics.setColor(Color.red);
graphics.setBackground(Color.black);
graphics.fill(new Rectangle(0,0,100,100));
// Populate the Document's root with the content of the tree
Element root = document.getDocumentElement();
graphics.getRoot(root);
Writer writer = new StringWriter();
graphics.stream(root, writer);
assertTrue(root.getParentNode() == document);
return reportSuccess();
}
}
1.35 +14 -1 xml-batik/sources/org/apache/batik/svggen/SVGGraphics2D.java
Index: SVGGraphics2D.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGGraphics2D.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- SVGGraphics2D.java 11 Apr 2003 13:59:05 -0000 1.34
+++ SVGGraphics2D.java 3 Jul 2003 07:53:59 -0000 1.35
@@ -41,6 +41,7 @@
import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
/**
* This implementation of the java.awt.Graphics2D abstract class
@@ -403,6 +404,9 @@
*/
public void stream(Element svgRoot, Writer writer, boolean useCss)
throws SVGGraphics2DIOException {
+ Node rootParent = svgRoot.getParentNode();
+ Node nextSibling = svgRoot.getNextSibling();
+
try {
//
// Enforce that the default and xlink namespace
@@ -437,6 +441,15 @@
} catch (IOException io) {
generatorCtx.errorHandler.
handleError(new SVGGraphics2DIOException(io));
+ } finally {
+ // Restore the svgRoot to its original tree position
+ if (rootParent != null) {
+ if (nextSibling == null) {
+ rootParent.appendChild(svgRoot);
+ } else {
+ rootParent.insertBefore(svgRoot, nextSibling);
+ }
+ }
}
}
1.19 +3 -1 xml-batik/test-resources/org/apache/batik/svggen/regsvggen.xml
Index: regsvggen.xml
===================================================================
RCS file: /home/cvs/xml-batik/test-resources/org/apache/batik/svggen/regsvggen.xml,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- regsvggen.xml 2 Jul 2003 13:51:43 -0000 1.18
+++ regsvggen.xml 3 Jul 2003 07:53:59 -0000 1.19
@@ -42,4 +42,6 @@
<test id="ShowSVG" class="org.apache.batik.svggen.ShowGraphics2DOutput" />
<test id="GetRootTest" class="org.apache.batik.svggen.GetRootTest" />
+
+ <test id="bug21259" class="org.apache.batik.svggen.Bug21259" />
</testSuite>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]