Author: pieber
Date: Wed May 22 05:49:57 2013
New Revision: 1485070

URL: http://svn.apache.org/r1485070
Log:
[KARAF-1563] Added code to do a cache or complete clean during restart or start

Modified:
    
karaf/branches/karaf-2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/system.properties
    
karaf/branches/karaf-2.x/assemblies/apache-karaf/src/main/distribution/text/etc/system.properties
    karaf/branches/karaf-2.x/main/src/main/java/org/apache/karaf/main/Main.java
    
karaf/branches/karaf-2.x/shell/dev/src/main/java/org/apache/karaf/shell/dev/Restart.java

Modified: 
karaf/branches/karaf-2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/system.properties
URL: 
http://svn.apache.org/viewvc/karaf/branches/karaf-2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/system.properties?rev=1485070&r1=1485069&r2=1485070&view=diff
==============================================================================
--- 
karaf/branches/karaf-2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/system.properties
 (original)
+++ 
karaf/branches/karaf-2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/system.properties
 Wed May 22 05:49:57 2013
@@ -75,6 +75,16 @@ xml.catalog.files=
 jline.nobell=true
 
 #
+# Deletes the entire karaf.data directory at every start
+#
+karaf.clean.all=false
+
+#
+# Deletes the karaf.data/cache directory at every start
+#
+karaf.clean.cache=false
+
+#
 # ServiceMix specs options
 #
 org.apache.servicemix.specs.debug=false

Modified: 
karaf/branches/karaf-2.x/assemblies/apache-karaf/src/main/distribution/text/etc/system.properties
URL: 
http://svn.apache.org/viewvc/karaf/branches/karaf-2.x/assemblies/apache-karaf/src/main/distribution/text/etc/system.properties?rev=1485070&r1=1485069&r2=1485070&view=diff
==============================================================================
--- 
karaf/branches/karaf-2.x/assemblies/apache-karaf/src/main/distribution/text/etc/system.properties
 (original)
+++ 
karaf/branches/karaf-2.x/assemblies/apache-karaf/src/main/distribution/text/etc/system.properties
 Wed May 22 05:49:57 2013
@@ -75,6 +75,16 @@ xml.catalog.files=
 jline.nobell=true
 
 #
+# Deletes the entire karaf.data directory at every start
+#
+karaf.clean.all=false
+
+#
+# Deletes the karaf.data/cache directory at every start
+#
+karaf.clean.cache=false
+
+#
 # ServiceMix specs options
 #
 org.apache.servicemix.specs.debug=false

Modified: 
karaf/branches/karaf-2.x/main/src/main/java/org/apache/karaf/main/Main.java
URL: 
http://svn.apache.org/viewvc/karaf/branches/karaf-2.x/main/src/main/java/org/apache/karaf/main/Main.java?rev=1485070&r1=1485069&r2=1485070&view=diff
==============================================================================
--- karaf/branches/karaf-2.x/main/src/main/java/org/apache/karaf/main/Main.java 
(original)
+++ karaf/branches/karaf-2.x/main/src/main/java/org/apache/karaf/main/Main.java 
Wed May 22 05:49:57 2013
@@ -18,7 +18,27 @@
  */
 package org.apache.karaf.main;
 
-import java.io.*;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.Constants;
+import org.osgi.framework.FrameworkEvent;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.launch.Framework;
+import org.osgi.framework.launch.FrameworkFactory;
+import org.osgi.service.startlevel.StartLevel;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
 import java.lang.management.ManagementFactory;
 import java.lang.management.RuntimeMXBean;
 import java.net.InetAddress;
@@ -254,6 +274,29 @@ public class Main {
         // Copy framework properties from the system properties.
         Main.copySystemProperties(configProps);
 
+        File cleanAllIndicatorFile = new File(karafData, "clean_all");
+        File cleanCacheIndicatorFile = new File(karafData, "clean_cache");
+        if (Boolean.getBoolean("karaf.clean.all") || 
cleanAllIndicatorFile.exists()) {
+            if (cleanAllIndicatorFile.exists()) {
+                cleanAllIndicatorFile.delete();
+            }
+            File karafHome = Utils.getKarafHome();
+            File karafBase = Utils.getKarafDirectory(Main.PROP_KARAF_BASE, 
Main.ENV_KARAF_BASE, karafHome, false, true);
+            File karafData = Utils.getKarafDirectory(Main.PROP_KARAF_DATA, 
Main.ENV_KARAF_DATA, new File(karafBase, "data"), true, true);
+            Utils.deleteDirectory(karafData);
+        } else {
+            if (Boolean.getBoolean("karaf.clean.cache") || 
cleanCacheIndicatorFile.exists()) {
+                if (cleanCacheIndicatorFile.exists()) {
+                    cleanCacheIndicatorFile.delete();
+                }
+                File karafHome = Utils.getKarafHome();
+                File karafBase = Utils.getKarafDirectory(Main.PROP_KARAF_BASE, 
Main.ENV_KARAF_BASE, karafHome, false, true);
+                File karafData = Utils.getKarafDirectory(Main.PROP_KARAF_DATA, 
Main.ENV_KARAF_DATA, new File(karafBase, "data"), true, true);
+                File karafCache = 
Utils.getKarafDirectory(Main.PROP_KARAF_DATA, Main.ENV_KARAF_DATA, new 
File(karafData, "cache"), true, true);
+                Utils.deleteDirectory(karafCache);
+            }
+        }
+
         boolean delayConsoleStart = 
Boolean.parseBoolean(configProps.getProperty(KARAF_DELAY_CONSOLE, "false"));
         System.setProperty(KARAF_DELAY_CONSOLE, new 
Boolean(delayConsoleStart).toString());
 
@@ -496,12 +539,6 @@ public class Main {
         while (true) {
             boolean restart = false;
             System.setProperty("karaf.restart", "false");
-            if (Boolean.getBoolean("karaf.restart.clean")) {
-                File karafHome = Utils.getKarafHome();
-                File karafBase = Utils.getKarafDirectory(Main.PROP_KARAF_BASE, 
Main.ENV_KARAF_BASE, karafHome, false, true);
-                File karafData = Utils.getKarafDirectory(Main.PROP_KARAF_DATA, 
Main.ENV_KARAF_DATA, new File(karafBase, "data"), true, true);
-                Utils.deleteDirectory(karafData);
-            }
             final Main main = new Main(args);
             try {
                 main.launch();

Modified: 
karaf/branches/karaf-2.x/shell/dev/src/main/java/org/apache/karaf/shell/dev/Restart.java
URL: 
http://svn.apache.org/viewvc/karaf/branches/karaf-2.x/shell/dev/src/main/java/org/apache/karaf/shell/dev/Restart.java?rev=1485070&r1=1485069&r2=1485070&view=diff
==============================================================================
--- 
karaf/branches/karaf-2.x/shell/dev/src/main/java/org/apache/karaf/shell/dev/Restart.java
 (original)
+++ 
karaf/branches/karaf-2.x/shell/dev/src/main/java/org/apache/karaf/shell/dev/Restart.java
 Wed May 22 05:49:57 2013
@@ -26,13 +26,18 @@ import org.apache.karaf.shell.console.Os
 @Command(scope = "dev", name = "restart", description = "Restart Karaf.")
 public class Restart  extends OsgiCommandSupport {
 
-    @Option(name = "-c", aliases = { "--clean" }, description = "Force a clean 
restart by deleting the working directory")
-    private boolean clean;
+    @Option(name = "-c", aliases = {"--clean", "--clean-all", "-ca"}, 
description = "Force a clean restart by deleting the working directory")
+    private boolean cleanAll;
+
+    @Option(name = "-cc", aliases = {"--clean-cache", "-cc"}, description = 
"Force a clean restart by deleting the working directory")
+    private boolean cleanCache;
+
 
     @Override
     protected Object doExecute() throws Exception {
         System.setProperty("karaf.restart", "true");
-        System.setProperty("karaf.restart.clean", Boolean.toString(clean));
+        System.setProperty("karaf.clean.cache", Boolean.toString(cleanCache));
+        System.setProperty("karaf.clean.all", Boolean.toString(cleanAll));
         bundleContext.getBundle(0).stop();
         return null;
     }


Reply via email to