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 2013/12/17 23:57:49 UTC

[2/2] git commit: [KARAF-2632] Handle backslashes at end of line in the console

[KARAF-2632] Handle backslashes at end of line in the console


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/97914c26
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/97914c26
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/97914c26

Branch: refs/heads/karaf-2.x
Commit: 97914c265a9935ec26a89db2259fb8e8e1c40c9b
Parents: 538d2df
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Tue Dec 17 23:56:24 2013 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Tue Dec 17 23:57:26 2013 +0100

----------------------------------------------------------------------
 .../karaf/shell/console/jline/Console.java      | 29 +++++++++++++-------
 1 file changed, 19 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/97914c26/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java b/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java
index 26adaae..4930d99 100644
--- a/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java
+++ b/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java
@@ -261,7 +261,11 @@ public class Console implements Runnable
             if (command == null) {
                 command = line;
             } else {
-                command += " " + line;
+                if (command.charAt(command.length() - 1) == '\\') {
+                    command = command.substring(0, command.length() - 1) + line;
+                } else {
+                    command += "\n" + line;
+                }
             }
             if (reader.getHistory().size()==0) {
                 reader.getHistory().add(command);
@@ -273,17 +277,22 @@ public class Console implements Runnable
                     reader.getHistory().replace(command);    
                 }                                
             }
-            try {
-                Class<?> cl = CommandSession.class.getClassLoader().loadClass("org.apache.felix.gogo.runtime.Parser");
-                Object parser = cl.getConstructor(CharSequence.class).newInstance(command);
-                cl.getMethod("program").invoke(parser);
-                loop = false;
-            } catch (Exception e) {
+            if (command.length() > 0 && command.charAt(command.length() - 1) == '\\') {
                 loop = true;
                 first = false;
-            } catch (Throwable t) {
-                // Reflection problem ? just quit
-                loop = false;
+            } else {
+                try {
+                    Class<?> cl = CommandSession.class.getClassLoader().loadClass("org.apache.felix.gogo.runtime.Parser");
+                    Object parser = cl.getConstructor(CharSequence.class).newInstance(command);
+                    cl.getMethod("program").invoke(parser);
+                    loop = false;
+                } catch (Exception e) {
+                    loop = true;
+                    first = false;
+                } catch (Throwable t) {
+                    // Reflection problem ? just quit
+                    loop = false;
+                }
             }
         }
         return command;