Author: sebb
Date: Fri May  8 23:26:49 2009
New Revision: 773130

URL: http://svn.apache.org/viewvc?rev=773130&view=rev
Log:
Improve error handling

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveGraphicsService.java

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveGraphicsService.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveGraphicsService.java?rev=773130&r1=773129&r2=773130&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveGraphicsService.java 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveGraphicsService.java 
Fri May  8 23:26:49 2009
@@ -23,6 +23,7 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.io.OutputStream;
 
 import javax.swing.JComponent;
@@ -31,22 +32,16 @@
 import org.apache.batik.ext.awt.image.codec.png.PNGImageEncoder;
 import org.apache.batik.ext.awt.image.codec.tiff.TIFFEncodeParam;
 import org.apache.batik.ext.awt.image.codec.tiff.TIFFImageEncoder;
-import org.apache.jorphan.logging.LoggingManager;
+import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
 
 /**
  * Class is responsible for taking a component and saving it as a JPEG, PNG or
  * TIFF. The class is very simple. Thanks to Batik and the developers who 
worked
- * so hard on it. The original implementation I used JAI, which allows
- * redistribution but requires indemnification. Luckily Batik has an 
alternative
- * to JAI. Hurray for Apache projects. I don't see any noticeable differences
- * between Batik and JAI.
+ * so hard on it.
  */
 public class SaveGraphicsService {
 
-    private static final Logger log = LoggingManager.getLoggerForClass();
-
     public static final int PNG = 0;
 
     public static final int TIFF = 1;
@@ -134,12 +129,15 @@
     public void savePNGWithBatik(String filename, BufferedImage image) {
         File outfile = new File(filename);
         OutputStream fos = createFile(outfile);
+        if (fos == null) {
+            return;
+        }
         PNGEncodeParam param = PNGEncodeParam.getDefaultEncodeParam(image);
         PNGImageEncoder encoder = new PNGImageEncoder(fos, param);
         try {
             encoder.encode(image);
-        } catch (Exception e) {
-            // do nothing
+        } catch (IOException e) {
+            JMeterUtils.reportErrorToUser("PNGImageEncoder reported: 
"+e.getMessage(), "Problem creating image file");
         } finally {
             JOrphanUtils.closeQuietly(fos);
         }
@@ -154,12 +152,21 @@
     public void saveTIFFWithBatik(String filename, BufferedImage image) {
         File outfile = new File(filename);
         OutputStream fos = createFile(outfile);
+        if (fos == null) {
+            return;
+        }
         TIFFEncodeParam param = new TIFFEncodeParam();
         TIFFImageEncoder encoder = new TIFFImageEncoder(fos, param);
         try {
             encoder.encode(image);
-        } catch (Exception e) {
-            // do nothing
+        } catch (IOException e) {
+            JMeterUtils.reportErrorToUser("TIFFImageEncoder reported: 
"+e.getMessage(), "Problem creating image file");
+        // Yuck: TIFFImageEncoder uses Error to report runtime problems
+        } catch (Error e) {
+            JMeterUtils.reportErrorToUser("TIFFImageEncoder reported: 
"+e.getMessage(), "Problem creating image file");
+            if (e.getClass() != Error.class){// rethrow other errors
+                throw e;
+            }
         } finally {
             JOrphanUtils.closeQuietly(fos);
         }
@@ -172,11 +179,11 @@
      * @param filename
      * @return output stream created from the filename
      */
-    public FileOutputStream createFile(File filename) {
+    private FileOutputStream createFile(File filename) {
         try {
             return new FileOutputStream(filename);
         } catch (FileNotFoundException e) {
-            log.warn(e.toString());
+            JMeterUtils.reportErrorToUser("Could not create file: 
"+e.getMessage(), "Problem creating image file");
             return null;
         }
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscr...@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-h...@jakarta.apache.org

Reply via email to