Author: gnodet Date: Thu Dec 5 08:14:15 2013 New Revision: 1548036 URL: http://svn.apache.org/r1548036 Log: [KARAF-2605] Use ConsoleReader instead of the keyboard stream
Modified: karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/BundleLevel.java karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/Util.java karaf/branches/karaf-2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java Modified: karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/BundleLevel.java URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/BundleLevel.java?rev=1548036&r1=1548035&r2=1548036&view=diff ============================================================================== --- karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/BundleLevel.java (original) +++ karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/BundleLevel.java Thu Dec 5 08:14:15 2013 @@ -16,6 +16,7 @@ */ package org.apache.karaf.shell.osgi; +import jline.console.ConsoleReader; import org.apache.felix.gogo.commands.Argument; import org.apache.felix.gogo.commands.Command; import org.osgi.framework.Bundle; @@ -46,41 +47,13 @@ public class BundleLevel extends BundleC } else if ((level < 50) && (sl.getBundleStartLevel(bundle) > 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 = session.getKeyboard().read(); - if (c < 0) { - break; - } - if (c == '\r' || c == '\n') { - System.err.println(); - System.err.flush(); - break; - } - 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)) { + ConsoleReader reader = (ConsoleReader) session.get(".jline.reader"); + String msg = "You are about to designate bundle as a system bundle. Do you wish to continue (yes/no): "; + String str = reader.readLine(msg); + if ("yes".equalsIgnoreCase(str)) { sl.setBundleStartLevel(bundle, level); break; - } else if ("no".equals(str)) { + } else if ("no".equalsIgnoreCase(str)) { break; } } Modified: karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/Util.java URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/Util.java?rev=1548036&r1=1548035&r2=1548036&view=diff ============================================================================== --- karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/Util.java (original) +++ karaf/branches/karaf-2.x/shell/osgi/src/main/java/org/apache/karaf/shell/osgi/Util.java Thu Dec 5 08:14:15 2013 @@ -23,6 +23,7 @@ import java.net.MalformedURLException; import java.net.URI; import java.net.URL; +import jline.console.ConsoleReader; import org.apache.felix.service.command.CommandSession; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; @@ -207,41 +208,13 @@ public class Util */ public static boolean accessToSystemBundleIsAllowed(long bundleId, CommandSession session) throws IOException { for (;;) { - StringBuffer sb = new StringBuffer(); - System.err.println("You are about to access system bundle " + bundleId + ". Do you wish to continue (yes/no): "); - System.err.flush(); - for (;;) { - int c = session.getKeyboard().read(); - if (c < 0) { - return false; - } - if (c == '\r' || c == '\n') { - System.err.println(); - System.err.flush(); - break; - } - 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)) { + ConsoleReader reader = (ConsoleReader) session.get(".jline.reader"); + String msg = "You are about to access system bundle " + bundleId + ". Do you wish to continue (yes/no): "; + String str = reader.readLine(msg); + if ("yes".equalsIgnoreCase(str)) { return true; } - if ("no".equals(str)) { + if ("no".equalsIgnoreCase(str)) { return false; } } Modified: karaf/branches/karaf-2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java?rev=1548036&r1=1548035&r2=1548036&view=diff ============================================================================== --- karaf/branches/karaf-2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java (original) +++ karaf/branches/karaf-2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java Thu Dec 5 08:14:15 2013 @@ -24,6 +24,7 @@ import java.util.List; import jline.Terminal; +import jline.console.ConsoleReader; import org.apache.felix.gogo.commands.Argument; import org.apache.felix.gogo.commands.Command; import org.apache.felix.gogo.commands.Option; @@ -120,7 +121,6 @@ public class SshAction extends OsgiComma sshSession = future.getSession(); Object oldIgnoreInterrupts = this.session.get(Console.IGNORE_INTERRUPTS); - this.session.put( Console.IGNORE_INTERRUPTS, Boolean.TRUE ); try { System.out.println("Connected"); @@ -152,6 +152,8 @@ public class SshAction extends OsgiComma return null; } + this.session.put( Console.IGNORE_INTERRUPTS, Boolean.TRUE ); + StringBuilder sb = new StringBuilder(); if (command != null) { for (String cmd : command) { @@ -198,21 +200,12 @@ public class SshAction extends OsgiComma } public String readLine(String msg) throws IOException { - StringBuffer sb = new StringBuffer(); - System.err.print(msg); - System.err.flush(); - for (;;) { - int c = super.session.getKeyboard().read(); - if (c < 0) { - return null; - } - System.err.print((char) c); - if (c == '\r' || c == '\n') { - break; - } - sb.append((char) c); - } - return sb.toString(); + return readLine(msg, null); + } + + public String readLine(String msg, Character mask) throws IOException { + ConsoleReader reader = (ConsoleReader) session.get(".jline.reader"); + return reader.readLine(msg, mask); } }