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/03/31 09:09:00 UTC

svn commit: r1087201 - /karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java

Author: gnodet
Date: Thu Mar 31 07:09:00 2011
New Revision: 1087201

URL: http://svn.apache.org/viewvc?rev=1087201&view=rev
Log:
[KARAF-542] Support of next line with '>' character

Modified:
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/Console.java

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=1087201&r1=1087200&r2=1087201&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 Thu Mar 31 07:09:00 2011
@@ -35,14 +35,14 @@ import java.util.concurrent.BlockingQueu
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import jline.AnsiWindowsTerminal;
-import jline.console.ConsoleReader;
 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;
+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;
@@ -208,14 +208,35 @@ public class Console implements Runnable
         }
         while (running) {
             try {
-                checkInterrupt();
-                String line = reader.readLine(getPrompt());
-                if (line == null)
-                {
+                String command = null;
+                boolean loop = true;
+                boolean first = true;
+                while (loop) {
+                    checkInterrupt();
+                    String line = reader.readLine(first ? getPrompt() : "> ");
+                    if (line == null)
+                    {
+                        break;
+                    }
+                    if (command == null) {
+                        command = line;
+                    } else {
+                        command += " " + line;
+                    }
+                    reader.getHistory().replace(command);
+                    try {
+                        new Parser(command).program();
+                        loop = false;
+                    } catch (Exception e) {
+                        loop = true;
+                        first = false;
+                    }
+                }
+                if (command == null) {
                     break;
                 }
                 //session.getConsole().println("Executing: " + line);
-                Object result = session.execute(line);
+                Object result = session.execute(command);
                 if (result != null)
                 {
                     session.getConsole().println(session.format(result, Converter.INSPECT));