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;
}