DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13247>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13247 [PATCH] PNG output of SVGSerializer broken in HEAD Summary: [PATCH] PNG output of SVGSerializer broken in HEAD Product: Cocoon 2 Version: Current CVS Platform: All OS/Version: All Status: NEW Severity: Major Priority: Other Component: sitemap components AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] The PNGTranscoder of Batik has the habit to close the stream. Together with the cocoon.util.BufferedOutputStream used now in Cocoon.process the result is, that the buffer is never written out. Here is the patch to blocks/batik/SVGSerializer 1.1 using an intermediate ByteArrayBufferStream. (You may consider to fix it for all serializers by implementing BufferedOutputStream.close()/realClose().) Sorry, can't use cvs diff due to corporate firewall. *** SVGSerializer.java.orig Mon Sep 16 17:35:06 2002 --- SVGSerializer.java Wed Oct 2 19:55:49 2002 *************** *** 82,88 **** import org.xml.sax.ext.LexicalHandler; import java.awt.Color; ! import java.io.BufferedOutputStream; import java.io.OutputStream; /** --- 82,88 ---- import org.xml.sax.ext.LexicalHandler; import java.awt.Color; ! import java.io.ByteArrayOutputStream; import java.io.OutputStream; /** *************** *** 128,134 **** * Set the <code>OutputStream</code> where the XML should be serialized. */ public void setOutputStream(OutputStream out) { ! this.output = new BufferedOutputStream(out); } /** --- 128,134 ---- * Set the <code>OutputStream</code> where the XML should be serialized. */ public void setOutputStream(OutputStream out) { ! this.output = out; } /** *************** *** 264,272 **** public void notify(Document doc) throws SAXException { try { TranscoderInput transInput = new TranscoderInput(doc); ! TranscoderOutput transOutput = new TranscoderOutput(this.output); transcoder.transcode(transInput, transOutput); ! //this.output.flush(); } catch (Exception ex) { log.error("SVGSerializer: Exception writing image", ex); throw new SAXException("Exception writing image ", ex); --- 264,279 ---- public void notify(Document doc) throws SAXException { try { TranscoderInput transInput = new TranscoderInput(doc); ! ! // Batik's PNGTranscoder closes the output stream. ! // Therefore we cannot pass it this.output directly. ! // Otherwise we get an exception when Cocoon.process ! // tries to flush/close the stream again. ! ByteArrayOutputStream baos = new ByteArrayOutputStream(8192); ! ! TranscoderOutput transOutput = new TranscoderOutput(baos); transcoder.transcode(transInput, transOutput); ! baos.writeTo(this.output); } catch (Exception ex) { log.error("SVGSerializer: Exception writing image", ex); throw new SAXException("Exception writing image ", ex); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]