You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-commits@xmlgraphics.apache.org by ca...@apache.org on 2007/09/26 06:45:57 UTC

svn commit: r579471 - /xmlgraphics/batik/trunk/sources-1.4/org/apache/batik/ext/awt/image/codec/imageio/ImageIOImageWriter.java

Author: cam
Date: Tue Sep 25 21:45:55 2007
New Revision: 579471

URL: http://svn.apache.org/viewvc?rev=579471&view=rev
Log:
Ensure ImageIOWriter and ImageOutputStreams are closed after use.
Fixes bug 42169.

Modified:
    xmlgraphics/batik/trunk/sources-1.4/org/apache/batik/ext/awt/image/codec/imageio/ImageIOImageWriter.java

Modified: xmlgraphics/batik/trunk/sources-1.4/org/apache/batik/ext/awt/image/codec/imageio/ImageIOImageWriter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources-1.4/org/apache/batik/ext/awt/image/codec/imageio/ImageIOImageWriter.java?rev=579471&r1=579470&r2=579471&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources-1.4/org/apache/batik/ext/awt/image/codec/imageio/ImageIOImageWriter.java (original)
+++ xmlgraphics/batik/trunk/sources-1.4/org/apache/batik/ext/awt/image/codec/imageio/ImageIOImageWriter.java Tue Sep 25 21:45:55 2007
@@ -71,38 +71,52 @@
                 throws IOException {
         Iterator iter;
         iter = ImageIO.getImageWritersByMIMEType(getMIMEType());
-        javax.imageio.ImageWriter iiowriter = (javax.imageio.ImageWriter)iter.next();
-        if (iiowriter != null) {
-            iiowriter.addIIOWriteWarningListener(this);
-            
-            ImageOutputStream imgout = ImageIO.createImageOutputStream(out);
-            
-            ImageWriteParam iwParam = getDefaultWriteParam(iiowriter, image, params);
-            
-            ImageTypeSpecifier type;
-            if (iwParam.getDestinationType() != null) {
-                type = iwParam.getDestinationType();
+        javax.imageio.ImageWriter iiowriter = null;
+        try {
+            iiowriter = (javax.imageio.ImageWriter)iter.next();
+            if (iiowriter != null) {
+                iiowriter.addIIOWriteWarningListener(this);
+
+                ImageOutputStream imgout = null;
+                try {
+                    imgout = ImageIO.createImageOutputStream(out);
+                    ImageWriteParam iwParam = getDefaultWriteParam(iiowriter, image, params);
+
+                    ImageTypeSpecifier type;
+                    if (iwParam.getDestinationType() != null) {
+                        type = iwParam.getDestinationType();
+                    } else {
+                        type = ImageTypeSpecifier.createFromRenderedImage(image);
+                    }
+
+                    //Handle metadata
+                    IIOMetadata meta = iiowriter.getDefaultImageMetadata(
+                            type, iwParam);
+                    //meta might be null for some JAI codecs as they don't support metadata
+                    if (params != null && meta != null) {
+                        meta = updateMetadata(meta, params); 
+                    }
+
+                    //Write image
+                    iiowriter.setOutput(imgout);
+                    IIOImage iioimg = new IIOImage(image, null, meta);
+                    iiowriter.write(null, iioimg, iwParam);
+                } finally {
+                    if (imgout != null) {
+                        System.err.println("closing");
+                        imgout.close();
+                    }
+                }
             } else {
-                type = ImageTypeSpecifier.createFromRenderedImage(image);
+                throw new UnsupportedOperationException("No ImageIO codec for writing " 
+                        + getMIMEType() + " is available!");
             }
-            
-            //Handle metadata
-            IIOMetadata meta = iiowriter.getDefaultImageMetadata(
-                    type, iwParam);
-            //meta might be null for some JAI codecs as they don't support metadata
-            if (params != null && meta != null) {
-                meta = updateMetadata(meta, params); 
+        } finally {
+            if (iiowriter != null) {
+                System.err.println("disposing");
+                iiowriter.dispose();
             }
-            
-            //Write image
-            iiowriter.setOutput(imgout);
-            IIOImage iioimg = new IIOImage(image, null, meta);
-            iiowriter.write(null, iioimg, iwParam);
-        } else {
-            throw new UnsupportedOperationException("No ImageIO codec for writing " 
-                    + getMIMEType() + " is available!");
         }
-        
     }
     
     /**