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 2012/10/02 01:27:23 UTC
svn commit: r1392693 - in /karaf/branches/karaf-2.2.x:
client/src/main/java/org/apache/karaf/client/
shell/console/src/main/java/org/apache/karaf/shell/console/
shell/console/src/main/java/org/apache/karaf/shell/console/jline/
shell/console/src/test/ja...
Author: gnodet
Date: Mon Oct 1 23:27:23 2012
New Revision: 1392693
URL: http://svn.apache.org/viewvc?rev=1392693&view=rev
Log:
[KARAF-1815] When ssh'ing from a windows box into a unix box, arrow keys are not correctly interpreted
Modified:
karaf/branches/karaf-2.2.x/client/src/main/java/org/apache/karaf/client/Main.java
karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java
karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java
karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java
karaf/branches/karaf-2.2.x/shell/console/src/test/java/org/apache/karaf/shell/console/ExampleSubclassMain.java
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java
karaf/branches/karaf-2.2.x/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java
Modified: karaf/branches/karaf-2.2.x/client/src/main/java/org/apache/karaf/client/Main.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/client/src/main/java/org/apache/karaf/client/Main.java?rev=1392693&r1=1392692&r2=1392693&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/client/src/main/java/org/apache/karaf/client/Main.java (original)
+++ karaf/branches/karaf-2.2.x/client/src/main/java/org/apache/karaf/client/Main.java Mon Oct 1 23:27:23 2012
@@ -20,6 +20,8 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InterruptedIOException;
+import java.nio.charset.Charset;
+import java.util.Locale;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
@@ -125,6 +127,12 @@ public class Main {
new Thread(in).start();
channel.setIn(in);
((ChannelShell) channel).setupSensibleDefaultPty();
+ String ctype = System.getenv("LC_CTYPE");
+ if (ctype == null) {
+ ctype = Locale.getDefault().toString() + "."
+ + System.getProperty("input.encoding", Charset.defaultCharset().name());
+ }
+ ((ChannelShell) channel).setEnv("LC_CTYPE", ctype);
}
channel.setOut(AnsiConsole.wrapOutputStream(System.out));
channel.setErr(AnsiConsole.wrapOutputStream(System.err));
Modified: karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java?rev=1392693&r1=1392692&r2=1392693&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java (original)
+++ karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java Mon Oct 1 23:27:23 2012
@@ -207,7 +207,7 @@ public class Main {
* @throws Exception
*/
protected Console createConsole(CommandProcessorImpl commandProcessor, InputStream in, PrintStream out, PrintStream err, Terminal terminal) throws Exception {
- return new Console(commandProcessor, in, out, err, terminal, null);
+ return new Console(commandProcessor, in, out, err, terminal, null, null);
}
/**
Modified: karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java?rev=1392693&r1=1392692&r2=1392693&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java (original)
+++ karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java Mon Oct 1 23:27:23 2012
@@ -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;
@@ -38,7 +37,6 @@ import java.util.regex.Pattern;
import jline.Terminal;
import jline.UnsupportedTerminal;
import jline.console.ConsoleReader;
-import jline.console.history.FileHistory;
import jline.console.history.PersistentHistory;
import org.apache.felix.gogo.commands.CommandException;
import org.apache.felix.gogo.runtime.CommandNotFoundException;
@@ -85,6 +83,7 @@ public class Console implements Runnable
PrintStream out,
PrintStream err,
Terminal term,
+ String encoding,
Runnable closeCallback) throws Exception
{
this.in = in;
@@ -97,9 +96,11 @@ public class Console implements Runnable
this.session.put("SCOPE", "shell:osgi:*");
this.closeCallback = closeCallback;
- reader = new ConsoleReader(this.consoleInput,
+ reader = new ConsoleReader(null,
+ this.consoleInput,
this.out,
- this.terminal);
+ this.terminal,
+ encoding);
final File file = getHistoryFile();
try {
Modified: karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java?rev=1392693&r1=1392692&r2=1392693&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java (original)
+++ karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java Mon Oct 1 23:27:23 2012
@@ -22,6 +22,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.lang.reflect.Method;
+import java.nio.charset.Charset;
import java.security.PrivilegedExceptionAction;
import java.util.List;
import javax.security.auth.Subject;
@@ -114,11 +115,19 @@ public class ConsoleFactory {
}
}
};
+ String ctype = System.getenv("LC_CTYPE");
+ String encoding = ctype;
+ if (encoding != null && encoding.indexOf('.') > 0) {
+ encoding = encoding.substring(encoding.indexOf('.') + 1);
+ } else {
+ encoding = System.getProperty("input.encoding", Charset.defaultCharset().name());
+ }
this.console = new Console(commandProcessor,
in,
wrap(out),
wrap(err),
terminal,
+ encoding,
callback);
CommandSession session = console.getSession();
session.put("USER", user);
@@ -133,6 +142,9 @@ public class ConsoleFactory {
return Integer.toString(terminal.getWidth());
}
});
+ if (ctype != null) {
+ session.put("LC_CTYPE", ctype);
+ }
session.put(".jline.terminal", terminal);
new Thread(console, "Karaf Shell Console Thread").start();
}
Modified: karaf/branches/karaf-2.2.x/shell/console/src/test/java/org/apache/karaf/shell/console/ExampleSubclassMain.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/console/src/test/java/org/apache/karaf/shell/console/ExampleSubclassMain.java?rev=1392693&r1=1392692&r2=1392693&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/console/src/test/java/org/apache/karaf/shell/console/ExampleSubclassMain.java (original)
+++ karaf/branches/karaf-2.2.x/shell/console/src/test/java/org/apache/karaf/shell/console/ExampleSubclassMain.java Mon Oct 1 23:27:23 2012
@@ -16,13 +16,13 @@
*/
package org.apache.karaf.shell.console;
+import java.io.InputStream;
+import java.io.PrintStream;
+
import jline.Terminal;
import org.apache.felix.gogo.runtime.CommandProcessorImpl;
import org.apache.karaf.shell.console.jline.Console;
-import java.io.InputStream;
-import java.io.PrintStream;
-
/**
* This class is mostly here so that folks can see an example of how you can extend the Karaf Main shell. Also
* lets Karaf developers see how changes the Main class can affect the interface comparability
@@ -43,7 +43,7 @@ public class ExampleSubclassMain extends
@Override
protected Console createConsole(CommandProcessorImpl commandProcessor, InputStream in, PrintStream out, PrintStream err, Terminal terminal) throws Exception {
- return new Console(commandProcessor, in, out, err, terminal, null) {
+ return new Console(commandProcessor, in, out, err, terminal, null, null) {
/**
* If you don't overwrite, then karaf will use the welcome message found in the
Modified: karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java?rev=1392693&r1=1392692&r2=1392693&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java (original)
+++ karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java Mon Oct 1 23:27:23 2012
@@ -94,11 +94,16 @@ public class ShellFactoryImpl implements
public void start(final Environment env) throws IOException {
try {
final Terminal terminal = new SshTerminal(env);
+ String encoding = env.getEnv().get("LC_CTYPE");
+ if (encoding != null && encoding.indexOf('.') > 0) {
+ encoding = encoding.substring(encoding.indexOf('.') + 1);
+ }
Console console = new Console(commandProcessor,
in,
new PrintStream(new LfToCrLfFilterOutputStream(out), true),
new PrintStream(new LfToCrLfFilterOutputStream(err), true),
terminal,
+ encoding,
new Runnable() {
public void run() {
destroy();
Modified: karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java?rev=1392693&r1=1392692&r2=1392693&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java (original)
+++ karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshAction.java Mon Oct 1 23:27:23 2012
@@ -140,6 +140,10 @@ public class SshAction extends OsgiComma
channel.setIn(new NoCloseInputStream(System.in));
((ChannelShell) channel).setPtyColumns(getTermWidth());
((ChannelShell) channel).setupSensibleDefaultPty();
+ Object ctype = session.get("LC_CTYPE");
+ if (ctype != null) {
+ ((ChannelShell) channel).setEnv("LC_CTYPE", ctype.toString());
+ }
}
channel.setOut(new NoCloseOutputStream(System.out));
channel.setErr(new NoCloseOutputStream(System.err));
Modified: karaf/branches/karaf-2.2.x/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java?rev=1392693&r1=1392692&r2=1392693&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java (original)
+++ karaf/branches/karaf-2.2.x/webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/GogoPlugin.java Mon Oct 1 23:27:23 2012
@@ -204,6 +204,7 @@ public class GogoPlugin extends Abstract
pipedOut,
pipedOut,
new WebTerminal(TERM_WIDTH, TERM_HEIGHT),
+ null,
null);
CommandSession session = console.getSession();
session.put("APPLICATION", System.getProperty("karaf.name", "root"));