You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2008/09/27 04:00:21 UTC
svn commit: r699539 - in
/felix/trunk/shell/src/main/java/org/apache/felix/shell/impl:
StartCommandImpl.java StopCommandImpl.java
Author: rickhall
Date: Fri Sep 26 19:00:18 2008
New Revision: 699539
URL: http://svn.apache.org/viewvc?rev=699539&view=rev
Log:
Added support for transiently starting/stopping bundles. (FELIX-741)
Modified:
felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StartCommandImpl.java
felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StopCommandImpl.java
Modified: felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StartCommandImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StartCommandImpl.java?rev=699539&r1=699538&r2=699539&view=diff
==============================================================================
--- felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StartCommandImpl.java (original)
+++ felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StartCommandImpl.java Fri Sep 26 19:00:18 2008
@@ -19,6 +19,8 @@
package org.apache.felix.shell.impl;
import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
import java.util.StringTokenizer;
import org.apache.felix.shell.Command;
@@ -26,6 +28,8 @@
public class StartCommandImpl extends InstallCommandImpl implements Command
{
+ private static final String TRANSIENT_SWITCH = "-t";
+
private BundleContext m_context = null;
public StartCommandImpl(BundleContext context)
@@ -41,7 +45,7 @@
public String getUsage()
{
- return "start <id> [<id> <URL> ...]";
+ return "start [-t] <id> [<id> <URL> ...]";
}
public String getShortDescription()
@@ -56,14 +60,33 @@
// Ignore the command name.
st.nextToken();
+ // Put the remaining tokens into a list.
+ List tokens = new ArrayList();
+ for (int i = 0; st.hasMoreTokens(); i++)
+ {
+ tokens.add(st.nextToken());
+ }
+
+ // Default switch value.
+ boolean isTransient = false;
+
+ // Check for "transient" switch.
+ if (tokens.contains(TRANSIENT_SWITCH))
+ {
+ // Remove the switch and set boolean flag.
+ tokens.remove(TRANSIENT_SWITCH);
+ isTransient = true;
+ }
+
// There should be at least one bundle id.
- if (st.countTokens() >= 1)
+ if (tokens.size() >= 1)
{
- while (st.hasMoreTokens())
+ while (tokens.size() > 0)
{
- String id = st.nextToken().trim();
+ String id = ((String) tokens.remove(0)).trim();
- try {
+ try
+ {
Bundle bundle = null;
// The id may be a number or a URL, so check.
@@ -79,15 +102,19 @@
if (bundle != null)
{
- bundle.start();
+ bundle.start(isTransient ? Bundle.START_TRANSIENT : 0);
}
else
{
err.println("Bundle ID " + id + " is invalid.");
}
- } catch (NumberFormatException ex) {
+ }
+ catch (NumberFormatException ex)
+ {
err.println("Unable to parse id '" + id + "'.");
- } catch (BundleException ex) {
+ }
+ catch (BundleException ex)
+ {
if (ex.getNestedException() != null)
{
ex.printStackTrace();
@@ -97,7 +124,9 @@
{
err.println(ex.toString());
}
- } catch (Exception ex) {
+ }
+ catch (Exception ex)
+ {
err.println(ex.toString());
}
}
Modified: felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StopCommandImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StopCommandImpl.java?rev=699539&r1=699538&r2=699539&view=diff
==============================================================================
--- felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StopCommandImpl.java (original)
+++ felix/trunk/shell/src/main/java/org/apache/felix/shell/impl/StopCommandImpl.java Fri Sep 26 19:00:18 2008
@@ -19,6 +19,8 @@
package org.apache.felix.shell.impl;
import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
import java.util.StringTokenizer;
import org.apache.felix.shell.Command;
@@ -26,6 +28,8 @@
public class StopCommandImpl implements Command
{
+ private static final String TRANSIENT_SWITCH = "-t";
+
private BundleContext m_context = null;
public StopCommandImpl(BundleContext context)
@@ -40,7 +44,7 @@
public String getUsage()
{
- return "stop <id> [<id> ...]";
+ return "stop [-t] <id> [<id> ...]";
}
public String getShortDescription()
@@ -55,32 +59,61 @@
// Ignore the command name.
st.nextToken();
+ // Put the remaining tokens into a list.
+ List tokens = new ArrayList();
+ for (int i = 0; st.hasMoreTokens(); i++)
+ {
+ tokens.add(st.nextToken());
+ }
+
+ // Default switch value.
+ boolean isTransient = false;
+
+ // Check for "transient" switch.
+ if (tokens.contains(TRANSIENT_SWITCH))
+ {
+ // Remove the switch and set boolean flag.
+ tokens.remove(TRANSIENT_SWITCH);
+ isTransient = true;
+ }
+
// There should be at least one bundle id.
- if (st.countTokens() >= 1)
+ if (tokens.size() >= 1)
{
- while (st.hasMoreTokens())
+ while (tokens.size() > 0)
{
- String id = st.nextToken().trim();
+ String id = ((String) tokens.remove(0)).trim();
- try {
+ try
+ {
long l = Long.parseLong(id);
Bundle bundle = m_context.getBundle(l);
if (bundle != null)
{
- bundle.stop();
+ bundle.stop(isTransient ? Bundle.STOP_TRANSIENT : 0);
}
else
{
err.println("Bundle ID " + id + " is invalid.");
}
- } catch (NumberFormatException ex) {
+ }
+ catch (NumberFormatException ex)
+ {
err.println("Unable to parse id '" + id + "'.");
- } catch (BundleException ex) {
+ }
+ catch (BundleException ex)
+ {
if (ex.getNestedException() != null)
+ {
err.println(ex.getNestedException().toString());
+ }
else
+ {
err.println(ex.toString());
- } catch (Exception ex) {
+ }
+ }
+ catch (Exception ex)
+ {
err.println(ex.toString());
}
}