You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2017/08/01 11:37:01 UTC

karaf git commit: Refactor read and execute out of run

Repository: karaf
Updated Branches:
  refs/heads/master 5d6cd21b0 -> ff6d8a08d


Refactor read and execute out of run


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

Branch: refs/heads/master
Commit: ff6d8a08d5311e2fb9d91ba6a5f76a07ffae41d3
Parents: 5d6cd21
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Tue Aug 1 13:36:36 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Tue Aug 1 13:36:50 2017 +0200

----------------------------------------------------------------------
 .../shell/impl/console/ConsoleSessionImpl.java  | 58 +++++++++++---------
 1 file changed, 32 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/ff6d8a08/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java
----------------------------------------------------------------------
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java
index 05ab109..3efac34 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java
@@ -341,33 +341,11 @@ public class ConsoleSessionImpl implements Session {
             String scriptFileName = System.getProperty(SHELL_INIT_SCRIPT);
             executeScript(scriptFileName);
             while (running) {
-                String command = null;
-                reading.set(true);
-                try {
-                    command = reader.readLine(getPrompt(), getRPrompt(), null, null);
-                } catch (EndOfFileException e) {
-                    break;
-                } catch (UserInterruptException e) {
-                    // Ignore, loop again
-                    continue;
-                } catch (Throwable t) {
-                    ShellUtil.logException(this, t);
-                } finally {
-                    reading.set(false);
-                }
+                String command = readCommand(reading);
                 if (command == null) {
                     break;
                 }
-                try {
-                    Object result = session.execute(command);
-                    if (result != null) {
-                        session.getConsole().println(session.format(result, Converter.INSPECT));
-                    }
-                } catch (InterruptedException e) {
-                    LOGGER.debug("Console session is closed");
-                } catch (Throwable t) {
-                    ShellUtil.logException(this, t);
-                }
+                execute(command);
             }
             close();
         } finally {
@@ -400,6 +378,36 @@ public class ConsoleSessionImpl implements Session {
         return isLocal != null && isLocal;
     }
 
+    private String readCommand(AtomicBoolean reading) throws UserInterruptException {
+        String command = null;
+        reading.set(true);
+        try {
+            command = reader.readLine(getPrompt(), getRPrompt(), null, null);
+        } catch (EndOfFileException e) {
+            command = null;
+        } catch (UserInterruptException e) {
+            command = ""; // Do nothing
+        } catch (Throwable t) {
+            ShellUtil.logException(this, t);
+        } finally {
+            reading.set(false);
+        }
+        return command;
+    }
+
+    private void execute(String command) {
+        try {
+            Object result = session.execute(command);
+            if (result != null) {
+                session.getConsole().println(session.format(result, Converter.INSPECT));
+            }
+        } catch (InterruptedException e) {
+            LOGGER.debug("Console session is closed");
+        } catch (Throwable t) {
+            ShellUtil.logException(this, t);
+        }
+    }
+
     private String getStatusLine(Job job, int width, String status) {
         StringBuilder sb = new StringBuilder();
         for (int i = 0; i < width - 1; i++) {
@@ -501,8 +509,6 @@ public class ConsoleSessionImpl implements Session {
         }
     }
 
-
-
     protected void welcome(Properties brandingProps) {
         String welcome = brandingProps.getProperty("welcome");
         if (welcome != null && welcome.length() > 0) {