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/25 14:22:46 UTC
svn commit: r1206153 - in /karaf/trunk: ./
shell/commands/src/main/java/org/apache/karaf/shell/shell/ shell/console/
shell/console/src/main/java/jline/console/
shell/console/src/main/java/org/apache/karaf/shell/console/jline/
shell/ssh/src/main/java/or...
Author: gnodet
Date: Fri Nov 25 13:22:44 2011
New Revision: 1206153
URL: http://svn.apache.org/viewvc?rev=1206153&view=rev
Log:
[KARAF-1042] Upgrade to jline 2.6
Removed:
karaf/trunk/shell/console/src/main/java/jline/console/ConsoleReader.java
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/keybindings.properties
Modified:
karaf/trunk/pom.xml
karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/shell/MoreAction.java
karaf/trunk/shell/console/pom.xml
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/TerminalFactory.java
karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshTerminal.java
karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/WebTerminal.java
Modified: karaf/trunk/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/pom.xml?rev=1206153&r1=1206152&r2=1206153&view=diff
==============================================================================
--- karaf/trunk/pom.xml (original)
+++ karaf/trunk/pom.xml Fri Nov 25 13:22:44 2011
@@ -145,7 +145,7 @@
<aries.util.version>0.4</aries.util.version>
<gemini.blueprint.version>1.0.0.RELEASE</gemini.blueprint.version>
<jansi.version>1.7</jansi.version>
- <jline.version>2.5</jline.version>
+ <jline.version>2.6-SNAPSHOT</jline.version>
<jsw.version>3.2.3</jsw.version>
<log4j.version>1.2.16</log4j.version>
<maven.version>2.0.9</maven.version>
@@ -243,6 +243,18 @@
<enabled>false</enabled>
</snapshots>
</repository>
+ <!-- OSSRH snapshots -->
+ <repository>
+ <id>ossrh.sonatype.snapshots.deploy</id>
+ <name>OSSRH snapshot repository</name>
+ <url>https://oss.sonatype.org/content/groups/public/</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
</repositories>
<dependencyManagement>
@@ -875,7 +887,7 @@
<version>${log4j.version}</version>
</dependency>
<dependency>
- <groupId>org.sonatype.jline</groupId>
+ <groupId>net.sf.jline</groupId>
<artifactId>jline</artifactId>
<version>${jline.version}</version>
</dependency>
Modified: karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/shell/MoreAction.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/shell/MoreAction.java?rev=1206153&r1=1206152&r2=1206153&view=diff
==============================================================================
--- karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/shell/MoreAction.java (original)
+++ karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/shell/MoreAction.java Fri Nov 25 13:22:44 2011
@@ -68,7 +68,7 @@ public class MoreAction extends Abstract
System.out.flush();
System.out.print("--More--");
System.out.flush();
- c = term.readVirtualKey(session.getKeyboard());
+ c = session.getKeyboard().read();
switch (c) {
case 'q':
case -1:
Modified: karaf/trunk/shell/console/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/pom.xml?rev=1206153&r1=1206152&r2=1206153&view=diff
==============================================================================
--- karaf/trunk/shell/console/pom.xml (original)
+++ karaf/trunk/shell/console/pom.xml Fri Nov 25 13:22:44 2011
@@ -49,7 +49,7 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.sonatype.jline</groupId>
+ <groupId>net.sf.jline</groupId>
<artifactId>jline</artifactId>
<exclusions>
<exclusion>
Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java?rev=1206153&r1=1206152&r2=1206153&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java Fri Nov 25 13:22:44 2011
@@ -26,7 +26,6 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.InterruptedIOException;
import java.io.PrintStream;
-import java.io.PrintWriter;
import java.io.Reader;
import java.util.Map;
import java.util.Properties;
@@ -39,12 +38,12 @@ import jline.Terminal;
import jline.UnsupportedTerminal;
import jline.console.ConsoleReader;
import jline.console.history.PersistentHistory;
-import org.apache.karaf.shell.commands.CommandException;
import org.apache.felix.gogo.runtime.CommandNotFoundException;
import org.apache.felix.gogo.runtime.Parser;
import org.apache.felix.service.command.CommandProcessor;
import org.apache.felix.service.command.CommandSession;
import org.apache.felix.service.command.Converter;
+import org.apache.karaf.shell.commands.CommandException;
import org.apache.karaf.shell.console.CloseShellException;
import org.apache.karaf.shell.console.Completer;
import org.apache.karaf.shell.console.completer.CommandsCompleter;
@@ -79,7 +78,7 @@ public class Console implements Runnable
private PrintStream err;
private Thread thread;
- public Console(CommandProcessor processor,
+ public Console(CommandProcessor processor,
InputStream in,
PrintStream out,
PrintStream err,
@@ -97,11 +96,9 @@ public class Console implements Runnable
this.closeCallback = closeCallback;
reader = new ConsoleReader(this.consoleInput,
- new PrintWriter(this.out),
- getClass().getResourceAsStream("keybinding.properties"),
+ this.out,
this.terminal);
-
final File file = getHistoryFile();
try {
@@ -110,14 +107,12 @@ public class Console implements Runnable
} catch (Exception e) {
LOGGER.error("Can not read history from file " + file + ". Using in memory history", e);
}
+ session.put(".jline.reader", reader);
session.put(".jline.history", reader.getHistory());
Completer completer = createCompleter();
if (completer != null) {
reader.addCompleter(new CompleterAsCompletor(completer));
}
- if (Boolean.getBoolean("jline.nobell")) {
- reader.setBellEnabled(false);
- }
pipe = new Thread(new Pipe());
pipe.setName("gogo shell pipe thread");
pipe.setDaemon(true);
@@ -479,7 +474,7 @@ public class Console implements Runnable
{
try
{
- int c = terminal.readCharacter(in);
+ int c = in.read();
if (c == -1)
{
return;
@@ -487,6 +482,7 @@ public class Console implements Runnable
else if (c == 4 && !getBoolean(IGNORE_INTERRUPTS))
{
err.println("^D");
+ return;
}
else if (c == 3 && !getBoolean(IGNORE_INTERRUPTS))
{
Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/TerminalFactory.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/TerminalFactory.java?rev=1206153&r1=1206152&r2=1206153&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/TerminalFactory.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/TerminalFactory.java Fri Nov 25 13:22:44 2011
@@ -18,18 +18,8 @@
*/
package org.apache.karaf.shell.console.jline;
-import jline.Terminal;
-import jline.UnsupportedTerminal;
-import jline.AnsiWindowsTerminal;
import jline.NoInterruptUnixTerminal;
-import org.fusesource.jansi.internal.WindowsSupport;
-
-import java.io.FileDescriptor;
-import java.io.FileInputStream;
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
+import jline.Terminal;
public class TerminalFactory {
@@ -43,27 +33,8 @@ public class TerminalFactory {
}
public void init() throws Exception {
- if ("jline.UnsupportedTerminal".equals(System.getProperty("jline.terminal"))) {
- term = new UnsupportedTerminal();
- return;
- }
-
- boolean windows = System.getProperty("os.name").toLowerCase().contains("windows");
- try {
- if (windows) {
- AnsiWindowsTerminal t = new KarafWindowsTerminal();
- t.setDirectConsole(true);
- t.init();
- term = t;
- } else {
- NoInterruptUnixTerminal t = new NoInterruptUnixTerminal();
- t.init();
- term = t;
- }
- } catch (Throwable e) {
- System.out.println("Using an unsupported terminal: " + e.toString());
- term = new UnsupportedTerminal();
- }
+ jline.TerminalFactory.registerFlavor(jline.TerminalFactory.Flavor.UNIX, NoInterruptUnixTerminal.class);
+ term = jline.TerminalFactory.create();
}
public synchronized void destroy() throws Exception {
@@ -73,47 +44,4 @@ public class TerminalFactory {
}
}
- public static class KarafWindowsTerminal extends AnsiWindowsTerminal {
-
- public KarafWindowsTerminal() throws Exception {
- super();
- }
-
- @Override
- public int readCharacter(InputStream in) throws IOException {
- if (isSystemIn(in)) {
- return WindowsSupport.readByte();
- }
- else {
- return super.readCharacter(in);
- }
- }
-
- private boolean isSystemIn(InputStream in) throws IOException {
- assert in != null;
-
- if (in == System.in) {
- return true;
- }
- while (in instanceof FilterInputStream) {
- try {
- Field f = FilterInputStream.class.getDeclaredField("in");
- f.setAccessible(true);
- in = (InputStream) f.get(in);
- } catch (Throwable t) {
- break;
- }
- if (in == System.in) {
- return true;
- }
- }
- if (in instanceof FileInputStream && ((FileInputStream) in).getFD() == FileDescriptor.in) {
- return true;
- }
-
- return false;
- }
-
- }
-
}
Modified: karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshTerminal.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshTerminal.java?rev=1206153&r1=1206152&r2=1206153&view=diff
==============================================================================
--- karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshTerminal.java (original)
+++ karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshTerminal.java Fri Nov 25 13:22:44 2011
@@ -18,42 +18,19 @@
*/
package org.apache.karaf.shell.ssh;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.Map;
import jline.TerminalSupport;
-import jline.console.Key;
-import jline.internal.ReplayPrefixOneCharInputStream;
-import org.apache.sshd.common.PtyMode;
import org.apache.sshd.server.Environment;
-import static jline.console.Key.*;
-import static org.apache.karaf.shell.ssh.SshTerminal.UnixKey.*;
-
public class SshTerminal extends TerminalSupport {
private Environment environment;
- private String encoding = System.getProperty("input.encoding", "UTF-8");
- private ReplayPrefixOneCharInputStream replayStream = new ReplayPrefixOneCharInputStream(encoding);
- private InputStreamReader replayReader;
- private boolean deleteSendsBackspace = false;
- private boolean backspaceSendsDelete = false;
public SshTerminal(Environment environment) {
super(true);
setAnsiSupported(true);
this.environment = environment;
- try {
- replayReader = new InputStreamReader(replayStream, encoding);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- Integer verase = this.environment.getPtyModes().get(PtyMode.VERASE);
- deleteSendsBackspace = verase != null && verase == Key.DELETE.code;
}
public void init() throws Exception {
@@ -84,115 +61,4 @@ public class SshTerminal extends Termina
return height > 0 ? height : super.getHeight();
}
- @Override
- public int readVirtualKey(final InputStream in) throws IOException {
- int c = readCharacter(in);
-
- if (Key.valueOf(c) == DELETE && deleteSendsBackspace) {
- c = BACKSPACE.code;
- } else if (Key.valueOf(c) == BACKSPACE && backspaceSendsDelete) {
- c = DELETE.code;
- }
-
- UnixKey key = UnixKey.valueOf(c);
-
- // in Unix terminals, arrow keys are represented by a sequence of 3 characters. E.g., the up arrow key yields 27, 91, 68
- if (key == ARROW_START) {
- // also the escape key is 27 thats why we read until we have something different than 27
- // this is a bugfix, because otherwise pressing escape and than an arrow key was an undefined state
- while (key == ARROW_START) {
- c = readCharacter(in);
- key = UnixKey.valueOf(c);
- }
-
- if (key == ARROW_PREFIX || key == O_PREFIX) {
- c = readCharacter(in);
- key = UnixKey.valueOf(c);
-
- if (key == ARROW_UP) {
- return CTRL_P.code;
- }
- else if (key == ARROW_DOWN) {
- return CTRL_N.code;
- }
- else if (key == ARROW_LEFT) {
- return CTRL_B.code;
- }
- else if (key == ARROW_RIGHT) {
- return CTRL_F.code;
- }
- else if (key == HOME_CODE) {
- return CTRL_A.code;
- }
- else if (key == END_CODE) {
- return CTRL_E.code;
- }
- else if (key == DEL_THIRD) {
- readCharacter(in); // read 4th & ignore
- return DELETE.code;
- }
- }
- }
-
- // handle unicode characters, thanks for a patch from amyi@inf.ed.ac.uk
- if (c > 128) {
- // handle unicode characters longer than 2 bytes,
- // thanks to Marc.Herbert@continuent.com
- replayStream.setInput(c, in);
- // replayReader = new InputStreamReader(replayStream, encoding);
- c = replayReader.read();
- }
-
- return c;
- }
-
- /**
- * Unix keys.
- */
- public static enum UnixKey
- {
- ARROW_START(27),
-
- ARROW_PREFIX(91),
-
- ARROW_LEFT(68),
-
- ARROW_RIGHT(67),
-
- ARROW_UP(65),
-
- ARROW_DOWN(66),
-
- O_PREFIX(79),
-
- HOME_CODE(72),
-
- END_CODE(70),
-
- DEL_THIRD(51),
-
- DEL_SECOND(126),;
-
- public final short code;
-
- UnixKey(final int code) {
- this.code = (short) code;
- }
-
- private static final Map<Short, UnixKey> codes;
-
- static {
- Map<Short, UnixKey> map = new HashMap<Short, UnixKey>();
-
- for (UnixKey key : UnixKey.values()) {
- map.put(key.code, key);
- }
-
- codes = map;
- }
-
- public static UnixKey valueOf(final int code) {
- return codes.get((short) code);
- }
- }
}
Modified: karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/WebTerminal.java
URL: http://svn.apache.org/viewvc/karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/WebTerminal.java?rev=1206153&r1=1206152&r2=1206153&view=diff
==============================================================================
--- karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/WebTerminal.java (original)
+++ karaf/trunk/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/WebTerminal.java Fri Nov 25 13:22:44 2011
@@ -16,38 +16,17 @@
*/
package org.apache.karaf.webconsole.gogo;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.Map;
-
import jline.TerminalSupport;
-import jline.console.Key;
-import jline.internal.ReplayPrefixOneCharInputStream;
-
-import static jline.console.Key.*;
-import static org.apache.karaf.webconsole.gogo.WebTerminal.UnixKey.*;
public class WebTerminal extends TerminalSupport {
private int width;
private int height;
- private String encoding = System.getProperty("input.encoding", "UTF-8");
- private ReplayPrefixOneCharInputStream replayStream = new ReplayPrefixOneCharInputStream(encoding);
- private InputStreamReader replayReader;
- private boolean deleteSendsBackspace = false;
- private boolean backspaceSendsDelete = false;
public WebTerminal(int width, int height) {
super(true);
this.width = width;
this.height = height;
- try {
- replayReader = new InputStreamReader(replayStream, encoding);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
}
public void init() throws Exception {
@@ -64,115 +43,4 @@ public class WebTerminal extends Termina
return height;
}
- @Override
- public int readVirtualKey(final InputStream in) throws IOException {
- int c = readCharacter(in);
-
- if (Key.valueOf(c) == DELETE && deleteSendsBackspace) {
- c = BACKSPACE.code;
- } else if (Key.valueOf(c) == BACKSPACE && backspaceSendsDelete) {
- c = DELETE.code;
- }
-
- UnixKey key = UnixKey.valueOf(c);
-
- // in Unix terminals, arrow keys are represented by a sequence of 3 characters. E.g., the up arrow key yields 27, 91, 68
- if (key == ARROW_START) {
- // also the escape key is 27 thats why we read until we have something different than 27
- // this is a bugfix, because otherwise pressing escape and than an arrow key was an undefined state
- while (key == ARROW_START) {
- c = readCharacter(in);
- key = UnixKey.valueOf(c);
- }
-
- if (key == ARROW_PREFIX || key == O_PREFIX) {
- c = readCharacter(in);
- key = UnixKey.valueOf(c);
-
- if (key == ARROW_UP) {
- return CTRL_P.code;
- }
- else if (key == ARROW_DOWN) {
- return CTRL_N.code;
- }
- else if (key == ARROW_LEFT) {
- return CTRL_B.code;
- }
- else if (key == ARROW_RIGHT) {
- return CTRL_F.code;
- }
- else if (key == HOME_CODE) {
- return CTRL_A.code;
- }
- else if (key == END_CODE) {
- return CTRL_E.code;
- }
- else if (key == DEL_THIRD) {
- readCharacter(in); // read 4th & ignore
- return DELETE.code;
- }
- }
- }
-
- // handle unicode characters, thanks for a patch from amyi@inf.ed.ac.uk
- if (c > 128) {
- // handle unicode characters longer than 2 bytes,
- // thanks to Marc.Herbert@continuent.com
- replayStream.setInput(c, in);
- // replayReader = new InputStreamReader(replayStream, encoding);
- c = replayReader.read();
- }
-
- return c;
- }
-
- /**
- * Unix keys.
- */
- public static enum UnixKey
- {
- ARROW_START(27),
-
- ARROW_PREFIX(91),
-
- ARROW_LEFT(68),
-
- ARROW_RIGHT(67),
-
- ARROW_UP(65),
-
- ARROW_DOWN(66),
-
- O_PREFIX(79),
-
- HOME_CODE(72),
-
- END_CODE(70),
-
- DEL_THIRD(51),
-
- DEL_SECOND(126),;
-
- public final short code;
-
- UnixKey(final int code) {
- this.code = (short) code;
- }
-
- private static final Map<Short, UnixKey> codes;
-
- static {
- Map<Short, UnixKey> map = new HashMap<Short, UnixKey>();
-
- for (UnixKey key : UnixKey.values()) {
- map.put(key.code, key);
- }
-
- codes = map;
- }
-
- public static UnixKey valueOf(final int code) {
- return codes.get((short) code);
- }
- }
}