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:48 UTC

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

[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);
         }