[rev by Serega] artifacts compiler: delete temporary jars properly
authornik <Nikolay.Chashnikov@jetbrains.com>
Wed, 2 Dec 2009 11:07:48 +0000 (14:07 +0300)
committernik <Nikolay.Chashnikov@jetbrains.com>
Wed, 2 Dec 2009 11:07:48 +0000 (14:07 +0300)
java/compiler/impl/src/com/intellij/compiler/impl/packagingCompiler/JarsBuilder.java

index 3a004e8f287679295cfed826ce9a6e358fddd2f4..7e1a218a04a1408f7eaddfe50ad15d07b9583c8f 100644 (file)
@@ -50,7 +50,6 @@ public class JarsBuilder {
   private final FileFilter myFileFilter;
   private final CompileContext myContext;
   private Map<JarInfo, File> myBuiltJars;
-  private Set<File> myJarsToDelete;
 
   public JarsBuilder(Set<JarInfo> jarsToBuild, FileFilter fileFilter, CompileContext context) {
     DependentJarsEvaluator evaluator = new DependentJarsEvaluator();
@@ -71,28 +70,30 @@ public class JarsBuilder {
     }
 
     myBuiltJars = new HashMap<JarInfo, File>();
-    for (JarInfo jar : sortedJars) {
-      myContext.getProgressIndicator().checkCanceled();
-      buildJar(jar);
-    }
+    try {
+      for (JarInfo jar : sortedJars) {
+        myContext.getProgressIndicator().checkCanceled();
+        buildJar(jar);
+      }
 
-    myContext.getProgressIndicator().setText(CompilerBundle.message("packaging.compiler.message.copying.archives"));
-    copyJars(writtenPaths);
+      myContext.getProgressIndicator().setText(CompilerBundle.message("packaging.compiler.message.copying.archives"));
+      copyJars(writtenPaths);
+    }
+    finally {
+      deleteTemporaryJars();
+    }
 
-    deleteTemporaryJars();
 
     return true;
   }
 
   private void deleteTemporaryJars() {
-    for (File file : myJarsToDelete) {
+    for (File file : myBuiltJars.values()) {
       FileUtil.delete(file);
     }
   }
 
   private void copyJars(final Set<String> writtenPaths) throws IOException {
-    myJarsToDelete = new HashSet<File>(myBuiltJars.values());
-
     for (Map.Entry<JarInfo, File> entry : myBuiltJars.entrySet()) {
       File fromFile = entry.getValue();
       boolean first = true;