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 2017/09/11 21:28:47 UTC

[1/6] karaf git commit: [KARAF-5360] Upgrade to Felix Gogo Runtime / JLine 1.0.8

Repository: karaf
Updated Branches:
  refs/heads/master 7f43c83b5 -> b4642cb65


[KARAF-5360] Upgrade to Felix Gogo Runtime / JLine 1.0.8


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

Branch: refs/heads/master
Commit: fc6f1611c40b8d327adba92a8a36fee6b1ce1fc3
Parents: c5d3a88
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon Sep 11 09:04:11 2017 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Mon Sep 11 09:04:11 2017 +0200

----------------------------------------------------------------------
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/fc6f1611/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8fa9035..c364d56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -193,8 +193,8 @@
         <felix.fileinstall.version>3.6.0</felix.fileinstall.version>
         <felix.framework.version>5.6.6</felix.framework.version>
         <felix.framework.security.version>2.6.0</felix.framework.security.version>
-        <felix.gogo.runtime.version>1.0.6</felix.gogo.runtime.version>
-        <felix.gogo.jline.version>1.0.6</felix.gogo.jline.version>
+        <felix.gogo.runtime.version>1.0.8</felix.gogo.runtime.version>
+        <felix.gogo.jline.version>1.0.8</felix.gogo.jline.version>
         <felix.httplite.version>0.1.6</felix.httplite.version>
         <felix.inventory.version>1.0.4</felix.inventory.version>
         <felix.plugin.version>3.3.0</felix.plugin.version>


[4/6] karaf git commit: Merge branch 'KARAF-5355', fixes #354

Posted by gn...@apache.org.
Merge branch 'KARAF-5355', fixes #354


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

Branch: refs/heads/master
Commit: 78d28256d98f015b8b524f39b5e1a30302c826d5
Parents: 7f43c83 af16cb3
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon Sep 11 23:25:03 2017 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Mon Sep 11 23:25:03 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/karaf/scheduler/command/Schedule.java |  6 +++++-
 .../apache/karaf/scheduler/command/support/ScriptJob.java | 10 +++++++---
 2 files changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------



[2/6] karaf git commit: [KARAF-5355] The scripts triggered with {{scheduler::schedule}} command fail to execute

Posted by gn...@apache.org.
[KARAF-5355] The scripts triggered with {{scheduler::schedule}} command fail to execute


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

Branch: refs/heads/master
Commit: af16cb353be58d8c417b8037e30e344e88182a76
Parents: c5d3a88
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon Sep 11 11:15:22 2017 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Mon Sep 11 11:15:22 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/karaf/scheduler/command/Schedule.java |  6 +++++-
 .../apache/karaf/scheduler/command/support/ScriptJob.java | 10 +++++++---
 2 files changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/af16cb35/scheduler/src/main/java/org/apache/karaf/scheduler/command/Schedule.java
----------------------------------------------------------------------
diff --git a/scheduler/src/main/java/org/apache/karaf/scheduler/command/Schedule.java b/scheduler/src/main/java/org/apache/karaf/scheduler/command/Schedule.java
index c17055f..b4c2d2e 100644
--- a/scheduler/src/main/java/org/apache/karaf/scheduler/command/Schedule.java
+++ b/scheduler/src/main/java/org/apache/karaf/scheduler/command/Schedule.java
@@ -31,6 +31,7 @@ import org.apache.karaf.shell.api.action.lifecycle.Reference;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.apache.karaf.shell.api.console.Function;
 import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.api.console.SessionFactory;
 
 @Command(scope = "scheduler", name = "schedule", description = "Schedule a script execution")
 @Service
@@ -63,6 +64,9 @@ public class Schedule implements Action {
     @Reference
     Session session;
 
+    @Reference
+    SessionFactory sessionFactory;
+
     @Override
     public Object execute() throws Exception {
         if (cron != null && (at != null || times != -1 || period != 0)) {
@@ -90,7 +94,7 @@ public class Schedule implements Action {
         if (concurrent) {
             options.canRunConcurrently(concurrent);
         }
-        scheduler.schedule(new ScriptJob(session, script), options);
+        scheduler.schedule(new ScriptJob(sessionFactory, session, script), options);
         return null;
     }
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/af16cb35/scheduler/src/main/java/org/apache/karaf/scheduler/command/support/ScriptJob.java
----------------------------------------------------------------------
diff --git a/scheduler/src/main/java/org/apache/karaf/scheduler/command/support/ScriptJob.java b/scheduler/src/main/java/org/apache/karaf/scheduler/command/support/ScriptJob.java
index b0f3341..c62a638 100644
--- a/scheduler/src/main/java/org/apache/karaf/scheduler/command/support/ScriptJob.java
+++ b/scheduler/src/main/java/org/apache/karaf/scheduler/command/support/ScriptJob.java
@@ -16,12 +16,14 @@
  */
 package org.apache.karaf.scheduler.command.support;
 
+import java.io.ByteArrayInputStream;
 import java.util.Collections;
 
 import org.apache.karaf.scheduler.Job;
 import org.apache.karaf.scheduler.JobContext;
 import org.apache.karaf.shell.api.console.Function;
 import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.api.console.SessionFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -29,18 +31,20 @@ public class ScriptJob implements Job {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ScriptJob.class);
 
+    private final SessionFactory sessionFactory;
     private final Session session;
     private final Function script;
 
-    public ScriptJob(Session session, Function script) {
+    public ScriptJob(SessionFactory sessionFactory, Session session, Function script) {
+        this.sessionFactory = sessionFactory;
         this.session = session;
         this.script = script;
     }
 
     @Override
     public void execute(JobContext context) {
-        try {
-            script.execute(session, Collections.singletonList(context));
+        try (Session s = sessionFactory.create(new ByteArrayInputStream(new byte[0]), session.getConsole(), session.getConsole(), session)) {
+            script.execute(s, Collections.singletonList(context));
         } catch (Exception e) {
             LOGGER.warn("Error executing script", e);
         }


[5/6] karaf git commit: Merge branch 'KARAF-5361', fixes #355

Posted by gn...@apache.org.
Merge branch 'KARAF-5361', fixes #355


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

Branch: refs/heads/master
Commit: bf8d2206add332086710b7901175181272616d4c
Parents: 78d2825 24ca7ee
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon Sep 11 23:27:41 2017 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Mon Sep 11 23:27:41 2017 +0200

----------------------------------------------------------------------
 .../karaf/shell/commands/impl/WatchAction.java  | 87 +++++++++++---------
 .../shell/impl/console/ConsoleSessionImpl.java  |  1 +
 .../shell/impl/console/HeadlessSessionImpl.java |  1 +
 .../shell/impl/console/SessionFactoryImpl.java  |  2 +-
 4 files changed, 50 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/bf8d2206/shell/core/src/main/java/org/apache/karaf/shell/impl/console/SessionFactoryImpl.java
----------------------------------------------------------------------
diff --cc shell/core/src/main/java/org/apache/karaf/shell/impl/console/SessionFactoryImpl.java
index e6c5a20,1640d86..d351753
--- a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/SessionFactoryImpl.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/SessionFactoryImpl.java
@@@ -72,7 -72,7 +72,7 @@@ public class SessionFactoryImpl extend
          }
  
          Posix posix = new Posix(commandProcessor);
-         for (String name : new String[]{"cat", "echo", "grep", "sort", "sleep", "cd", "pwd", "ls", "less", "watch", "nano", "head", "tail", "clear", "wc", "date", "tmux", "ttop"}) {
 -        for (String name : new String[]{"cat", "echo", "grep", "sort", "sleep", "cd", "pwd", "ls", "less", "nano", "head", "tail", "clear", "wc", "date"}) {
++        for (String name : new String[]{"cat", "echo", "grep", "sort", "sleep", "cd", "pwd", "ls", "less", "nano", "head", "tail", "clear", "wc", "date", "tmux", "ttop"}) {
              register(new ShellCommand(name, null, posix, name));
          }
      }


[3/6] karaf git commit: [KARAF-5361] shell:watch is broken

Posted by gn...@apache.org.
[KARAF-5361] shell:watch is broken


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

Branch: refs/heads/master
Commit: 24ca7ee7de7c267f56ea08db2a36ccc0b04b9418
Parents: c5d3a88
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon Sep 11 15:02:35 2017 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Mon Sep 11 15:02:35 2017 +0200

----------------------------------------------------------------------
 .../karaf/shell/commands/impl/WatchAction.java  | 87 +++++++++++---------
 .../shell/impl/console/ConsoleSessionImpl.java  |  1 +
 .../shell/impl/console/HeadlessSessionImpl.java |  1 +
 .../shell/impl/console/SessionFactoryImpl.java  |  2 +-
 4 files changed, 50 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/24ca7ee7/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java
----------------------------------------------------------------------
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java
index 7f46282..ddfc127 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java
@@ -18,8 +18,10 @@
  */
 package org.apache.karaf.shell.commands.impl;
 
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.InterruptedIOException;
 import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.List;
@@ -40,11 +42,15 @@ import org.apache.karaf.shell.api.console.Completer;
 import org.apache.karaf.shell.api.console.Parser;
 import org.apache.karaf.shell.api.console.Session;
 import org.apache.karaf.shell.api.console.SessionFactory;
+import org.apache.karaf.shell.api.console.Signal;
 import org.apache.karaf.shell.commands.impl.WatchAction.WatchParser;
 import org.apache.karaf.shell.support.ShellUtil;
 import org.apache.karaf.shell.support.completers.CommandsCompleter;
 import org.apache.karaf.shell.support.parsing.CommandLineImpl;
 import org.apache.karaf.shell.support.parsing.DefaultParser;
+import org.jline.terminal.Attributes;
+import org.jline.terminal.Terminal;
+import org.jline.utils.NonBlockingReader;
 
 @Command(scope = "shell", name = "watch", description = "Watches & refreshes the output of a command")
 @Parsing(WatchParser.class)
@@ -69,78 +75,79 @@ public class WatchAction implements Action {
 
     private ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
 
+    private boolean abort;
+    private Thread reading;
+    private Thread executing;
+
     @Override
     public Object execute() throws Exception {
         if (arguments == null || arguments.length() == 0) {
             System.err.println("Argument expected");
         } else {
-            WatchTask watchTask = new WatchTask(arguments.trim());
+            WatchTask watchTask = new WatchTask();
             executorService.scheduleAtFixedRate(watchTask, 0, interval, TimeUnit.SECONDS);
             try {
-                session.getKeyboard().read();
-                watchTask.abort();
+                Terminal terminal = (Terminal) session.get(".jline.terminal");
+                Terminal.SignalHandler prev = terminal.handle(Terminal.Signal.INT, this::abort);
+                Attributes attr = terminal.enterRawMode();
+                try {
+                    reading = Thread.currentThread();
+                    while (terminal.reader().read(1) == NonBlockingReader.READ_EXPIRED);
+                } finally {
+                    reading = null;
+                    terminal.setAttributes(attr);
+                    terminal.handle(Terminal.Signal.INT, prev);
+                }
+            } catch (InterruptedIOException e) {
+                // Ignore
             } finally {
+                abort = true;
                 executorService.shutdownNow();
-                watchTask.close();
             }
         }
         return null;
     }
 
-    public class WatchTask implements Runnable {
-
-        private final String command;
-
-        Session session;
-        ByteArrayOutputStream byteArrayOutputStream = null;
-        PrintStream printStream = null;
-        boolean doDisplay = true;
-
-        public WatchTask(String command) {
-            this.command = command;
+    private void abort(Terminal.Signal signal) {
+        abort = true;
+        if (reading != null) {
+            reading.interrupt();
         }
+        if (executing != null) {
+            executing.interrupt();
+        }
+    }
+
+    public class WatchTask implements Runnable {
 
         public void run() {
             try {
-                byteArrayOutputStream = new ByteArrayOutputStream();
-                printStream = new PrintStream(byteArrayOutputStream);
-                session = sessionFactory.create(null, printStream, printStream, WatchAction.this.session);
-                String output = "";
-                try {
-                    session.execute(command);
+                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+                PrintStream printStream = new PrintStream(byteArrayOutputStream);
+                try (Session session = sessionFactory.create(new ByteArrayInputStream(new byte[0]), printStream, printStream, WatchAction.this.session)) {
+                    executing = Thread.currentThread();
+                    session.execute(arguments.trim());
+                } catch (InterruptedException e) {
+                    abort(null);
                 } catch (Exception e) {
                     ShellUtil.logException(session, e);
+                } finally {
+                    executing = null;
                 }
-                output = byteArrayOutputStream.toString();
-                if (doDisplay) {
+                printStream.flush();
+                if (!abort) {
                     if (!append) {
                         System.out.print("\33[2J");
                         System.out.print("\33[1;1H");
                     }
-                    System.out.print(output);
+                    System.out.print(byteArrayOutputStream.toString());
                     System.out.flush();
                 }
-                byteArrayOutputStream.close();
-                session.close();
             } catch (Exception e) {
                 //Ingore
             }
         }
 
-        public void abort() {
-            doDisplay = false;
-        }
-        public void close() throws IOException {
-            if (this.session != null) {
-                this.session.close();
-            }
-            if (this.byteArrayOutputStream != null) {
-                this.byteArrayOutputStream.close();
-            }
-            if (this.printStream != null) {
-                printStream.close();
-            }
-        }
     }
 
     @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/24ca7ee7/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 01986e2..84bc764 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
@@ -197,6 +197,7 @@ public class ConsoleSessionImpl implements Session {
             session.put(key.toString(), sysProps.get(key));
         }
         session.put(".session", this);
+        session.put(".processor", processor);
         session.put(".commandSession", session);
         session.put(".jline.reader", reader);
         session.put(".jline.terminal", reader.getTerminal());

http://git-wip-us.apache.org/repos/asf/karaf/blob/24ca7ee7/shell/core/src/main/java/org/apache/karaf/shell/impl/console/HeadlessSessionImpl.java
----------------------------------------------------------------------
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/HeadlessSessionImpl.java b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/HeadlessSessionImpl.java
index cc2f6a7..28d9121 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/HeadlessSessionImpl.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/HeadlessSessionImpl.java
@@ -72,6 +72,7 @@ public class HeadlessSessionImpl implements Session {
                 session.put(key.toString(), sysProps.get(key));
             }
         }
+        session.put(".processor", processor);
         session.put(".session", this);
         session.put(".commandSession", session);
         if (parent == null) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/24ca7ee7/shell/core/src/main/java/org/apache/karaf/shell/impl/console/SessionFactoryImpl.java
----------------------------------------------------------------------
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/SessionFactoryImpl.java b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/SessionFactoryImpl.java
index 840e23a..1640d86 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/SessionFactoryImpl.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/SessionFactoryImpl.java
@@ -72,7 +72,7 @@ public class SessionFactoryImpl extends RegistryImpl implements SessionFactory,
         }
 
         Posix posix = new Posix(commandProcessor);
-        for (String name : new String[]{"cat", "echo", "grep", "sort", "sleep", "cd", "pwd", "ls", "less", "watch", "nano", "head", "tail", "clear", "wc", "date"}) {
+        for (String name : new String[]{"cat", "echo", "grep", "sort", "sleep", "cd", "pwd", "ls", "less", "nano", "head", "tail", "clear", "wc", "date"}) {
             register(new ShellCommand(name, null, posix, name));
         }
     }


[6/6] karaf git commit: Merge branch 'KARAF-5360', fixes #349

Posted by gn...@apache.org.
Merge branch 'KARAF-5360', fixes #349


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

Branch: refs/heads/master
Commit: b4642cb65b71535bc4b13fa5410fd18f910c6d8e
Parents: bf8d220 fc6f161
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon Sep 11 23:28:19 2017 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Mon Sep 11 23:28:19 2017 +0200

----------------------------------------------------------------------
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------