You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2013/08/21 04:26:27 UTC

svn commit: r1516062 - /karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java

Author: ffang
Date: Wed Aug 21 02:26:27 2013
New Revision: 1516062

URL: http://svn.apache.org/r1516062
Log:
[KARAF-2452]The --force option is not honored when designate bundle as a system bundle

Modified:
    karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java

Modified: karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java
URL: http://svn.apache.org/viewvc/karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java?rev=1516062&r1=1516061&r2=1516062&view=diff
==============================================================================
--- karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java (original)
+++ karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/StartLevel.java Wed Aug 21 02:26:27 2013
@@ -22,15 +22,11 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.startlevel.BundleStartLevel;
 
 @Command(scope = "bundle", name = "start-level", description = "Gets or sets the start level of a bundle.")
-public class StartLevel extends BundleCommand {
+public class StartLevel extends BundleCommandWithConfirmation {
 
     @Argument(index = 1, name = "startLevel", description = "The bundle's new start level", required = false, multiValued = false)
     Integer level;
 
-    public StartLevel() {
-        super(true);
-    }
-
     protected void doExecute(Bundle bundle) throws Exception {
         // Get package instance service.
         BundleStartLevel bsl = bundle.adapt(BundleStartLevel.class);
@@ -41,21 +37,37 @@ public class StartLevel extends BundleCo
         if (level == null) {
             System.out.println("Level " + bsl.getStartLevel());
         }
-        else if ((level < 50) && bsl.getStartLevel() > 50){
+        else if ((level < 50) && (bsl.getStartLevel() > 50) && !force){
             for (;;) {
                 StringBuffer sb = new StringBuffer();
                 System.err.println("You are about to designate bundle as a system bundle.  Do you wish to continue (yes/no): ");
                 System.err.flush();
                 for (;;) {
-                    int c = System.in.read();
+                    int c = session.getKeyboard().read();
                     if (c < 0) {
-                        return;
+                        break;
                     }
-                    System.err.println((char) c);
                     if (c == '\r' || c == '\n') {
+                        System.err.println();
+                        System.err.flush();
                         break;
                     }
-                    sb.append((char) c);
+                    if (c == 127 || c == 'b') {
+                        System.err.print((char)'\b');
+                        System.err.print((char)' ');
+                        System.err.print((char)'\b');
+                    } else {
+                        System.err.print((char)c);
+                    }
+
+                    System.err.flush();
+                    if (c == 127 || c == 'b') {
+                        if (sb.length() > 0) {
+                            sb.deleteCharAt(sb.length() - 1);
+                        }
+                    } else {
+                        sb.append((char)c);
+                    }
                 }
                 String str = sb.toString();
                 if ("yes".equals(str)) {
@@ -65,6 +77,7 @@ public class StartLevel extends BundleCo
                     break;
                 }
             }
+
         } else {
             bsl.setStartLevel(level);
         }