You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2009/10/28 19:59:18 UTC

svn commit: r830725 - in /felix/trunk/karaf: client/pom.xml client/src/main/java/org/apache/felix/karaf/client/Main.java shell/ssh/src/main/java/org/apache/felix/karaf/shell/ssh/ShellFactoryImpl.java

Author: gnodet
Date: Wed Oct 28 18:59:18 2009
New Revision: 830725

URL: http://svn.apache.org/viewvc?rev=830725&view=rev
Log:
FELIX-1818: Ctrl-C kills the karaf-client instead of being sent to the server

Modified:
    felix/trunk/karaf/client/pom.xml
    felix/trunk/karaf/client/src/main/java/org/apache/felix/karaf/client/Main.java
    felix/trunk/karaf/shell/ssh/src/main/java/org/apache/felix/karaf/shell/ssh/ShellFactoryImpl.java

Modified: felix/trunk/karaf/client/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/karaf/client/pom.xml?rev=830725&r1=830724&r2=830725&view=diff
==============================================================================
--- felix/trunk/karaf/client/pom.xml (original)
+++ felix/trunk/karaf/client/pom.xml Wed Oct 28 18:59:18 2009
@@ -46,6 +46,10 @@
             <artifactId>sshd-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.felix.karaf.shell</groupId>
+            <artifactId>org.apache.felix.karaf.shell.console</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>

Modified: felix/trunk/karaf/client/src/main/java/org/apache/felix/karaf/client/Main.java
URL: http://svn.apache.org/viewvc/felix/trunk/karaf/client/src/main/java/org/apache/felix/karaf/client/Main.java?rev=830725&r1=830724&r2=830725&view=diff
==============================================================================
--- felix/trunk/karaf/client/src/main/java/org/apache/felix/karaf/client/Main.java (original)
+++ felix/trunk/karaf/client/src/main/java/org/apache/felix/karaf/client/Main.java Wed Oct 28 18:59:18 2009
@@ -17,7 +17,10 @@
 package org.apache.felix.karaf.client;
 
 import java.io.ByteArrayInputStream;
+import java.io.PrintWriter;
 
+import jline.Terminal;
+import org.apache.felix.karaf.shell.console.jline.TerminalFactory;
 import org.apache.sshd.ClientChannel;
 import org.apache.sshd.ClientSession;
 import org.apache.sshd.SshClient;
@@ -71,6 +74,7 @@
         // TODO: implement sending a direct command
 
         SshClient client = null;
+        Terminal terminal = null;
         try {
             client = SshClient.setUpDefaultClient();
             client.start();
@@ -83,8 +87,12 @@
  				channel = session.createChannel("exec");
 	            channel.setIn(new ByteArrayInputStream(sb.append("\n").toString().getBytes()));
 			} else {
+                terminal = new TerminalFactory().getTerminal();
  				channel = session.createChannel("shell");
-	            channel.setIn(new ConsoleReader().getInput());
+                ConsoleReader reader = new ConsoleReader(System.in, new PrintWriter(System.out),
+                                                TerminalFactory.class.getResourceAsStream("keybinding.properties"),
+                                                terminal);
+	            channel.setIn(reader.getInput());
 			}
             channel.setOut(System.out);
             channel.setErr(System.err);
@@ -97,6 +105,11 @@
             try {
                 client.stop();
             } catch (Throwable t) { }
+            try {
+                if (terminal != null) {
+                    terminal.restoreTerminal();
+                }
+            } catch (Throwable t) { }
         }
         System.exit(0);
     }

Modified: felix/trunk/karaf/shell/ssh/src/main/java/org/apache/felix/karaf/shell/ssh/ShellFactoryImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/karaf/shell/ssh/src/main/java/org/apache/felix/karaf/shell/ssh/ShellFactoryImpl.java?rev=830725&r1=830724&r2=830725&view=diff
==============================================================================
--- felix/trunk/karaf/shell/ssh/src/main/java/org/apache/felix/karaf/shell/ssh/ShellFactoryImpl.java (original)
+++ felix/trunk/karaf/shell/ssh/src/main/java/org/apache/felix/karaf/shell/ssh/ShellFactoryImpl.java Wed Oct 28 18:59:18 2009
@@ -94,8 +94,8 @@
                 };
                 Console console = new Console(commandProcessor,
                                               in,
-                                              new PrintStream(out),
-                                              new PrintStream(err),
+                                              new PrintStream(out, true),
+                                              new PrintStream(err, true),
                                               new SshTerminal(env),
                                               new AggregateCompleter(completers),
                                               new Runnable() {