You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2011/11/10 13:40:19 UTC
svn commit: r1200300 [2/2] - in /karaf/trunk/main/src:
main/java/org/apache/karaf/main/ main/java/org/apache/karaf/main/util/
test/java/org/apache/karaf/main/ test/java/org/apache/karaf/main/lock/
test/resources/test-karaf-home/etc/
Modified: karaf/trunk/main/src/main/java/org/apache/karaf/main/Stop.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/Stop.java?rev=1200300&r1=1200299&r2=1200300&view=diff
==============================================================================
--- karaf/trunk/main/src/main/java/org/apache/karaf/main/Stop.java (original)
+++ karaf/trunk/main/src/main/java/org/apache/karaf/main/Stop.java Thu Nov 10 12:40:18 2011
@@ -18,6 +18,16 @@
*/
package org.apache.karaf.main;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.net.Socket;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Properties;
+
+import org.apache.karaf.main.util.Utils;
/**
* Main class used to stop the root Karaf instance
@@ -25,7 +35,46 @@ package org.apache.karaf.main;
public class Stop {
public static void main(String[] args) throws Exception {
- Main.shutdown();
- }
+ File karafHome = Utils.getKarafHome(Stop.class, Main.PROP_KARAF_HOME, Main.ENV_KARAF_HOME);
+ 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.getPath(), "data"), true, true);
+
+ System.setProperty(Main.PROP_KARAF_HOME, karafHome.getPath());
+ System.setProperty(Main.PROP_KARAF_BASE, karafBase.getPath());
+ System.setProperty(Main.PROP_KARAF_DATA, karafData.getPath());
+
+ // Load system properties.
+ Main.loadSystemProperties(karafBase);
+ File file = new File(new File(karafBase, "etc"), Main.CONFIG_PROPERTIES_FILE_NAME);
+ URL configPropURL = file.toURI().toURL();
+ Properties props = Main.loadPropertiesFile(configPropURL, false);
+ Main.copySystemProperties(props);
+
+ // Perform variable substitution for system properties.
+ for (Enumeration e = props.propertyNames(); e.hasMoreElements();) {
+ String name = (String) e.nextElement();
+ props.setProperty(name,
+ Main.substVars(props.getProperty(name), name, null, props));
+ }
+
+ int port = Integer.parseInt(props.getProperty(Main.KARAF_SHUTDOWN_PORT, "0"));
+ String host = props.getProperty(Main.KARAF_SHUTDOWN_HOST, "localhost");
+ String portFile = props.getProperty(Main.KARAF_SHUTDOWN_PORT_FILE);
+ String shutdown = props.getProperty(Main.KARAF_SHUTDOWN_COMMAND, Main.DEFAULT_SHUTDOWN_COMMAND);
+ if (port == 0 && portFile != null) {
+ BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(portFile)));
+ String portStr = r.readLine();
+ port = Integer.parseInt(portStr);
+ r.close();
+ }
+ if (port > 0) {
+ Socket s = new Socket(host, port);
+ s.getOutputStream().write(shutdown.getBytes());
+ s.close();
+ } else {
+ System.err.println("Unable to find port...");
+ }
+
+ }
}
Modified: karaf/trunk/main/src/main/java/org/apache/karaf/main/util/BootstrapLogManager.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/util/BootstrapLogManager.java?rev=1200300&r1=1200299&r2=1200300&view=diff
==============================================================================
--- karaf/trunk/main/src/main/java/org/apache/karaf/main/util/BootstrapLogManager.java (original)
+++ karaf/trunk/main/src/main/java/org/apache/karaf/main/util/BootstrapLogManager.java Thu Nov 10 12:40:18 2011
@@ -28,6 +28,7 @@ import java.util.logging.Handler;
import java.util.logging.LogRecord;
import java.util.logging.StreamHandler;
+import org.apache.karaf.main.Main;
/**
* Convenience class for configuring java.util.logging to append to
@@ -36,24 +37,41 @@ import java.util.logging.StreamHandler;
*
*/
public class BootstrapLogManager {
- private static final String DEFAULT_LOG_FILE = "${karaf.data}/log/karaf.log";
- private static final String PROP_LOG4J_APPENDER_OUT_FILE = "log4j.appender.out.file";
- private static Handler handler;
+ private static Handler handler;
private static final String KARAF_BOOTSTRAP_LOG = "karaf.bootstrap.log";
private static Properties configProps;
public static Handler getDefaultHandler () {
+ String filename;
File log;
- String filename = configProps.getProperty(KARAF_BOOTSTRAP_LOG);
- if (filename == null) {
- Properties props = readLoggingConfig();
- if (props.getProperty(PROP_LOG4J_APPENDER_OUT_FILE) == null) {
- props.setProperty(PROP_LOG4J_APPENDER_OUT_FILE, DEFAULT_LOG_FILE);
+ Properties props = new Properties();
+ filename = configProps.getProperty(KARAF_BOOTSTRAP_LOG);
+
+ if (filename != null) {
+ log = new File(filename);
+ } else {
+ // Make a best effort to log to the default file appender configured for log4j
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(System.getProperty("karaf.base") + "/etc/org.ops4j.pax.logging.cfg");
+ props.load(fis);
+ } catch (IOException e) {
+ props.setProperty("log4j.appender.out.file", "${karaf.data}/log/karaf.log");
+ } finally {
+ if (fis != null) {
+ try {
+ fis.close();
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ }
+ }
}
- filename = PropertiesHelper.substVars(props.getProperty(PROP_LOG4J_APPENDER_OUT_FILE),PROP_LOG4J_APPENDER_OUT_FILE, null, null);
+ filename = Main.substVars(props.getProperty("log4j.appender.out.file"), "log4j.appender.out.file", null, null);
+ log = new File(filename);
}
- log = new File(filename);
+
+
try {
handler = new BootstrapLogManager.SimpleFileHandler(log);
} catch (IOException e) {
@@ -63,27 +81,6 @@ public class BootstrapLogManager {
return handler;
}
- private static Properties readLoggingConfig() {
- // Make a best effort to log to the default file appender configured for log4j
- Properties props = new Properties();
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(System.getProperty("karaf.base") + "/etc/org.ops4j.pax.logging.cfg");
- props.load(fis);
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (fis != null) {
- try {
- fis.close();
- } catch (IOException ioe) {
- ioe.printStackTrace();
- }
- }
- }
- return props;
- }
-
public static void setProperties(Properties configProps) {
BootstrapLogManager.configProps = configProps;
}
@@ -123,4 +120,4 @@ public class BootstrapLogManager {
}
-}
+}
\ No newline at end of file
Modified: karaf/trunk/main/src/test/java/org/apache/karaf/main/MainStartTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/test/java/org/apache/karaf/main/MainStartTest.java?rev=1200300&r1=1200299&r2=1200300&view=diff
==============================================================================
--- karaf/trunk/main/src/test/java/org/apache/karaf/main/MainStartTest.java (original)
+++ karaf/trunk/main/src/test/java/org/apache/karaf/main/MainStartTest.java Thu Nov 10 12:40:18 2011
@@ -53,8 +53,7 @@ public class MainStartTest {
System.setProperty("karaf.maven.convert", "false");
Main main = new Main(args);
- LifecycleManager lifecacleManager = main.launch();
- Thread.sleep(1000);
+ main.launch();
Framework framework = main.getFramework();
Bundle[] bundles = framework.getBundleContext().getBundles();
Assert.assertEquals(3, bundles.length);
@@ -62,7 +61,8 @@ public class MainStartTest {
Assert.assertEquals(mvnUrl, bundles[2].getLocation());
Assert.assertEquals(Bundle.ACTIVE, bundles[1].getState());
Assert.assertEquals(Bundle.ACTIVE, bundles[2].getState());
- lifecacleManager.destroyKaraf();
+
+ main.destroy();
}
@Test
@@ -80,8 +80,7 @@ public class MainStartTest {
Main main = new Main(args);
- LifecycleManager lifecycleManager = main.launch();
- Thread.sleep(1000);
+ main.launch();
Framework framework = main.getFramework();
String activatorName = TimeoutShutdownActivator.class.getName().replace('.', '/') + ".class";
Bundle bundle = framework.getBundleContext().installBundle("foo",
@@ -92,8 +91,11 @@ public class MainStartTest {
);
bundle.start();
+ Thread.sleep(1000);
+
long t0 = System.currentTimeMillis();
- lifecycleManager.destroyKaraf();
+ Stop.main(null);
+ main.awaitShutdown();
long t1 = System.currentTimeMillis();
// System.err.println("Shutdown duration: " + (t1 - t0) + " ms");
Assert.assertTrue((t1 - t0) > TimeoutShutdownActivator.TIMEOUT / 2);
Modified: karaf/trunk/main/src/test/java/org/apache/karaf/main/TimeoutShutdownActivator.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/test/java/org/apache/karaf/main/TimeoutShutdownActivator.java?rev=1200300&r1=1200299&r2=1200300&view=diff
==============================================================================
--- karaf/trunk/main/src/test/java/org/apache/karaf/main/TimeoutShutdownActivator.java (original)
+++ karaf/trunk/main/src/test/java/org/apache/karaf/main/TimeoutShutdownActivator.java Thu Nov 10 12:40:18 2011
@@ -26,9 +26,12 @@ public class TimeoutShutdownActivator im
public static int TIMEOUT = 10000;
public void start(BundleContext context) throws Exception {
+ System.err.println("Starting timeout activator");
}
public void stop(BundleContext context) throws Exception {
+ System.err.println("Timeout activator asked to stopped");
Thread.sleep(TIMEOUT);
+ System.err.println("Stopping timeout activator");
}
}
Modified: karaf/trunk/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockIntegrationTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockIntegrationTest.java?rev=1200300&r1=1200299&r2=1200300&view=diff
==============================================================================
--- karaf/trunk/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockIntegrationTest.java (original)
+++ karaf/trunk/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockIntegrationTest.java Thu Nov 10 12:40:18 2011
@@ -18,12 +18,6 @@
*/
package org.apache.karaf.main.lock;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
@@ -32,8 +26,6 @@ import java.sql.Statement;
import java.util.Properties;
import java.util.logging.Logger;
-import org.apache.karaf.main.lock.DefaultJDBCLock;
-import org.apache.karaf.main.lock.Lock;
import org.apache.karaf.main.util.BootstrapLogManager;
import org.junit.After;
import org.junit.Before;
@@ -41,6 +33,8 @@ import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
+import static org.junit.Assert.*;
+
public abstract class BaseJDBCLockIntegrationTest {
private final Logger LOG = Logger.getLogger(this.getClass().getName());
@@ -63,7 +57,7 @@ public abstract class BaseJDBCLockIntegr
public static void setUpTestSuite() {
Properties properties = new Properties();
properties.put("karaf.bootstrap.log", "target/karaf.log");
- BootstrapLogManager.setProperties(properties);
+ BootstrapLogManager.setProperties(properties);
}
@Before
Modified: karaf/trunk/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java?rev=1200300&r1=1200299&r2=1200300&view=diff
==============================================================================
--- karaf/trunk/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java (original)
+++ karaf/trunk/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java Thu Nov 10 12:40:18 2011
@@ -30,7 +30,6 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
-import org.apache.karaf.main.lock.DefaultJDBCLock;
import org.apache.karaf.main.util.BootstrapLogManager;
import org.easymock.EasyMock;
import org.junit.Before;
@@ -64,7 +63,7 @@ public abstract class BaseJDBCLockTest {
public static void setUpTestSuite() {
Properties properties = new Properties();
properties.put("karaf.bootstrap.log", "target/karaf.log");
- BootstrapLogManager.setProperties(properties);
+ BootstrapLogManager.setProperties(properties);
}
@Before
Modified: karaf/trunk/main/src/test/resources/test-karaf-home/etc/config.properties
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/test/resources/test-karaf-home/etc/config.properties?rev=1200300&r1=1200299&r2=1200300&view=diff
==============================================================================
--- karaf/trunk/main/src/test/resources/test-karaf-home/etc/config.properties (original)
+++ karaf/trunk/main/src/test/resources/test-karaf-home/etc/config.properties Thu Nov 10 12:40:18 2011
@@ -36,6 +36,8 @@ karaf.framework.felix=${karaf.default.re
# To enable the use of the startup.properties file to control the start level:
karaf.auto.start=
+karaf.shutdown.port.file=${karaf.base}/data/port
+
org.osgi.framework.startlevel.beginning=100
karaf.startlevel.bundle=60
karaf.name=root