diff gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontalcrosssection/HorizontalCrossSectionMeshOutputState.java @ 623:65f09139e9b3

Fixed file handle leak when writing meta data. gnv-artifacts/trunk@694 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 21 Feb 2010 21:05:55 +0000
parents 89aca25642d6
children 8d2bd52f05e3
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontalcrosssection/HorizontalCrossSectionMeshOutputState.java	Fri Feb 19 13:28:34 2010 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontalcrosssection/HorizontalCrossSectionMeshOutputState.java	Sun Feb 21 21:05:55 2010 +0000
@@ -383,10 +383,24 @@
                 return null;
             }
 
-            OutputStream out = new FileOutputStream(metaFile);
-            XMLUtils.toStream(meta, out);
+            OutputStream out = null;
+            boolean success = false;
+            try {
+                out = new FileOutputStream(metaFile);
+                success = XMLUtils.toStream(meta, out);
+            }
+            finally {
+                if (out != null) {
+                    try { out.close(); }
+                    catch (IOException ioe) {}
+                }
+            }
 
-            return meta;
+            if (!success && metaFile.exists()) {
+                metaFile.delete();
+            }
+
+            return success ? meta : null;
         }
         catch (FileNotFoundException fnfe) {
             log.error(fnfe);

http://dive4elements.wald.intevation.org