From e11ea79da900664bf11b56fb3110fa3f6890daaf Mon Sep 17 00:00:00 2001 From: tkellner Date: Tue, 21 Aug 2012 11:55:12 +0000 Subject: Remove leftover JettyContext working dirs on Windows Spawns a separate process on exit if running under Windows, since the directory can only be deleted after the main process finishes. Fixes MOCCA-780 git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@1132 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- BKUWebStart/src/main/java/JettyTempCleaner.java | 57 +++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 BKUWebStart/src/main/java/JettyTempCleaner.java (limited to 'BKUWebStart/src/main/java/JettyTempCleaner.java') diff --git a/BKUWebStart/src/main/java/JettyTempCleaner.java b/BKUWebStart/src/main/java/JettyTempCleaner.java new file mode 100644 index 00000000..67854ecb --- /dev/null +++ b/BKUWebStart/src/main/java/JettyTempCleaner.java @@ -0,0 +1,57 @@ +import java.io.File; +import java.util.Timer; +import java.util.TimerTask; + +public class JettyTempCleaner extends TimerTask { + + private static final long CLEAN_INTERVAL = 60000; // 1 minute + + private File tmpDir; + + public JettyTempCleaner(File tmpDir) { + this.tmpDir = tmpDir; + } + + private static boolean deleteRecursive(File f) { + if (f.isDirectory()) { + String[] children = f.list(); + for (String child : children) { + if (!deleteRecursive(new File(f, child))) + return false; + } + } + return f.delete(); + } + + private static void clean(File tmpDir) { + System.out.println("Trying to remove " + tmpDir); + if (deleteRecursive(tmpDir)) { + System.out.println("Successfully removed temporary directory"); + System.exit(0); + } + } + + private void schedule() { + System.out.println("Scheduling cleaner for directory " + tmpDir); + Timer t = new Timer(); + t.scheduleAtFixedRate(this, 1000, CLEAN_INTERVAL); + } + + @Override + public void run() { + clean(tmpDir); + } + + public static void main(String[] args) { + if (args.length != 1) + System.exit(1); + File tmpDir = new File(args[0]); + if (!tmpDir.exists()) + { + System.err.println("Directory " + args[0] + " doesn't exist"); + System.exit(2); + } + JettyTempCleaner cleaner = new JettyTempCleaner(tmpDir); + cleaner.schedule(); + } +} -- cgit v1.2.3