You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2012/07/24 15:00:52 UTC
svn commit: r1365028 - in /karaf/trunk:
main/src/main/java/org/apache/karaf/main/
shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/
shell/console/src/main/resources/OSGI-INF/blueprint/
Author: cschneider
Date: Tue Jul 24 13:00:51 2012
New Revision: 1365028
URL: http://svn.apache.org/viewvc?rev=1365028&view=rev
Log:
KARAF-1640 Wait for startlevel instead if bundle states
Modified:
karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/BundleWatcher.java
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java
karaf/trunk/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml
Modified: karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java?rev=1365028&r1=1365027&r2=1365028&view=diff
==============================================================================
--- karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java (original)
+++ karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java Tue Jul 24 13:00:51 2012
@@ -184,6 +184,7 @@ public class ConfigProperties {
String prop = props.getProperty(SECURITY_PROVIDERS);
this.securityProviders = (prop != null) ? prop.split(",") : new String[] {};
this.defaultStartLevel = Integer.parseInt(props.getProperty(Constants.FRAMEWORK_BEGINNING_STARTLEVEL));
+ System.setProperty(Constants.FRAMEWORK_BEGINNING_STARTLEVEL, Integer.toString(this.defaultStartLevel));
this.lockStartLevel = Integer.parseInt(props.getProperty(PROPERTY_LOCK_LEVEL, Integer.toString(lockStartLevel)));
this.lockDelay = Integer.parseInt(props.getProperty(PROPERTY_LOCK_DELAY, Integer.toString(lockDelay)));
this.props.setProperty(Constants.FRAMEWORK_BEGINNING_STARTLEVEL, Integer.toString(lockStartLevel));
Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/BundleWatcher.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/BundleWatcher.java?rev=1365028&r1=1365027&r2=1365028&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/BundleWatcher.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/BundleWatcher.java Tue Jul 24 13:00:51 2012
@@ -1,20 +1,22 @@
package org.apache.karaf.shell.console.impl.jline;
-import java.io.IOException;
import java.io.PrintStream;
-import org.fusesource.jansi.Ansi;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.startlevel.FrameworkStartLevel;
public class BundleWatcher implements Runnable {
private final BundleContext context;
private final Runnable consoleStartCallBack;
private final PrintStream out;
+ private final int defaultStartLevel;
- public BundleWatcher(BundleContext context, PrintStream out, Runnable consoleStartCallBack) {
+ public BundleWatcher(BundleContext context, int defaultStartLevel, PrintStream out, Runnable consoleStartCallBack) {
this.context = context;
+ this.defaultStartLevel = defaultStartLevel;
this.out = out;
this.consoleStartCallBack = consoleStartCallBack;
}
@@ -24,28 +26,27 @@ public class BundleWatcher implements Ru
boolean startConsole = false;
out.println("Apache Karaf starting up. Press Enter to start the shell now ...");
out.println();
+
while (!startConsole) {
BundleStats stats = getBundleStats();
+ stats.print(out);
//out.print(Ansi.ansi().cursorUp(1).toString());
- out.println(String.format("Bundles - total: %d, active: %d, resolved: %d, installed: %d ",
- stats.numTotal, stats.numActive, stats.numResolved, stats.numInstalled));
try {
Thread.sleep(500);
- } catch (InterruptedException e) {
- }
- try {
if (System.in.available() > 0) {
char ch = (char) System.in.read();
if (ch == '\r') {
startConsole = true;
}
}
- } catch (IOException e) {
+ } catch (Exception e) {
}
- if (stats.numActive + stats.numResolved == stats.numTotal) {
+ if (stats.startLevel == defaultStartLevel) {
startConsole = true;
}
}
+ BundleStats stats = getBundleStats();
+ stats.print(out);
consoleStartCallBack.run();
}
@@ -64,6 +65,9 @@ public class BundleWatcher implements Ru
stats.numInstalled ++;
}
}
+ Bundle frameworkBundle = context.getBundle(0);
+ FrameworkStartLevel fsl = frameworkBundle.adapt(FrameworkStartLevel.class);
+ stats.startLevel = fsl.getStartLevel();
return stats;
}
@@ -72,6 +76,12 @@ public class BundleWatcher implements Ru
int numActive = 0;
int numInstalled = 0;
int numTotal = 0;
+ int startLevel = 0;
+
+ public void print(PrintStream out) {
+ out.println(String.format("Bundles - total: %d, active: %d, resolved: %d, installed: %d, startlevel: %d ",
+ numTotal, numActive, numResolved, numInstalled, startLevel));
+ }
}
}
Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java?rev=1365028&r1=1365027&r2=1365028&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java Tue Jul 24 13:00:51 2012
@@ -23,6 +23,7 @@ import java.io.ObjectInputStream;
import java.net.URL;
import java.security.KeyPair;
import java.util.Hashtable;
+
import javax.security.auth.Subject;
import jline.Terminal;
@@ -33,7 +34,6 @@ import org.apache.karaf.shell.console.Co
import org.apache.karaf.shell.console.ConsoleFactory;
import org.apache.sshd.agent.SshAgent;
import org.apache.sshd.agent.local.AgentImpl;
-import org.fusesource.jansi.Ansi;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.slf4j.Logger;
@@ -48,16 +48,19 @@ public class LocalConsoleManager {
private TerminalFactory terminalFactory;
private Console console;
private boolean start;
+ private final int defaultStartLevel;
private CommandProcessor commandProcessor;
private ServiceRegistration registration;
private SshAgent local;
public LocalConsoleManager(boolean start,
+ String defaultStartLevel,
BundleContext bundleContext,
TerminalFactory terminalFactory,
ConsoleFactory consoleFactory,
CommandProcessor commandProcessor) throws Exception {
this.start = start;
+ this.defaultStartLevel = Integer.parseInt(defaultStartLevel);
this.bundleContext = bundleContext;
this.terminalFactory = terminalFactory;
this.consoleFactory = consoleFactory;
@@ -85,7 +88,7 @@ public class LocalConsoleManager {
String agentId = startAgent("karaf");
this.console = consoleFactory.createLocal(this.commandProcessor, terminal, callback);
this.console.getSession().put(SshAgent.SSH_AUTHSOCKET_ENV_NAME, agentId);
- BundleWatcher watcher = new BundleWatcher(bundleContext, System.out, new Runnable() {
+ BundleWatcher watcher = new BundleWatcher(bundleContext, defaultStartLevel, System.out, new Runnable() {
@Override
public void run() {
Modified: karaf/trunk/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml?rev=1365028&r1=1365027&r2=1365028&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml (original)
+++ karaf/trunk/shell/console/src/main/resources/OSGI-INF/blueprint/karaf-console.xml Tue Jul 24 13:00:51 2012
@@ -34,6 +34,7 @@
<bean id="consoleFactory" class="org.apache.karaf.shell.console.impl.jline.LocalConsoleManager" destroy-method="stop">
<argument value="$[karaf.startLocalConsole]"/>
+ <argument value="$[org.osgi.framework.startlevel.beginning]"/>
<argument ref="blueprintBundleContext"/>
<argument ref="terminalFactory"/>
<argument ref="consoleFactoryService"/>