From 4f139d3aa0edace64a7378a51133c8d36c73c235 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 16 Dec 2018 23:50:34 +0000
Subject: [PATCH] deletes now tempdir in finally.

---
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java |   44 ++++++++++++++++++++++++++------------------
 1 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java
index e275c89..5a781d6 100644
--- a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java
@@ -110,35 +110,43 @@
         }
         BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(archive.getRepoId());
         java.nio.file.Path path = null;
+        java.nio.file.Path tempDir = null;
         try {
-            java.nio.file.Path directory = BorgCommands.extractFiles(repoConfig, archive.getName(), item.getPath());
-            List<java.nio.file.Path> files = DirUtils.listFiles(directory);
+            tempDir = BorgCommands.extractFiles(repoConfig, archive.getName(), item.getPath());
+            List<java.nio.file.Path> files = DirUtils.listFiles(tempDir);
             if (CollectionUtils.isEmpty(files)) {
                 log.error("No file extracted.");
                 Response.ResponseBuilder builder = Response.status(404);
                 return builder.build();
             }
             path = files.get(0);
+            File file = path.toFile();
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            try {
+                FileUtils.copyFile(file, baos);
+            } catch (IOException ex) {
+                log.error(ex.getMessage(), ex);
+            }
+            file = new File(item.getPath());
+            byte[] byteArray = baos.toByteArray();//result.getAsByteArrayOutputStream().toByteArray();
+            Response.ResponseBuilder builder = Response.ok(byteArray);
+            builder.header("Content-Disposition", "attachment; filename=" + file.getName());
+            // Needed to get the Content-Disposition by client:
+            builder.header("Access-Control-Expose-Headers", "Content-Disposition");
+            Response response = builder.build();
+            return response;
         } catch (IOException ex) {
             log.error("No file extracted: " + ex.getMessage(), ex);
             Response.ResponseBuilder builder = Response.status(404);
             return builder.build();
+        } finally {
+            if (tempDir != null) {
+                try {
+                    FileUtils.deleteDirectory(tempDir.toFile());
+                } catch (IOException ex) {
+                    log.error("Error while trying to delete temporary directory '" + tempDir.toString() + "': " + ex.getMessage(), ex);
+                }
+            }
         }
-        // ButlerCache.getInstance().getArchiveContent()
-        File file = path.toFile();
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try {
-            FileUtils.copyFile(file, baos);
-        } catch (IOException ex) {
-            log.error(ex.getMessage(), ex);
-        }
-        file = new File(item.getPath());
-        byte[] byteArray = baos.toByteArray();//result.getAsByteArrayOutputStream().toByteArray();
-        Response.ResponseBuilder builder = Response.ok(byteArray);
-        builder.header("Content-Disposition", "attachment; filename=" + file.getName());
-        // Needed to get the Content-Disposition by client:
-        builder.header("Access-Control-Expose-Headers", "Content-Disposition");
-        Response response = builder.build();
-        return response;
     }
 }

--
Gitblit v1.10.0