This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch karaf-4.1.x
in repository https://gitbox.apache.org/repos/asf/karaf.git


The following commit(s) were added to refs/heads/karaf-4.1.x by this push:
     new 83c25f3  [KARAF-5787] Improve scheduler whiteboard handler to allow 
users to define scheduler service properties in raw String
83c25f3 is described below

commit 83c25f3e7220ba5daaedc23db70a1871e7e5eeea
Author: Jean-Baptiste Onofré <[email protected]>
AuthorDate: Mon Jun 18 14:38:22 2018 +0200

    [KARAF-5787] Improve scheduler whiteboard handler to allow users to define 
scheduler service properties in raw String
---
 .../karaf/scheduler/core/WhiteboardHandler.java    | 31 +++++++++++++++++-----
 1 file changed, 24 insertions(+), 7 deletions(-)

diff --git 
a/scheduler/src/main/java/org/apache/karaf/scheduler/core/WhiteboardHandler.java
 
b/scheduler/src/main/java/org/apache/karaf/scheduler/core/WhiteboardHandler.java
index 2d0a9df..3acfaae 100644
--- 
a/scheduler/src/main/java/org/apache/karaf/scheduler/core/WhiteboardHandler.java
+++ 
b/scheduler/src/main/java/org/apache/karaf/scheduler/core/WhiteboardHandler.java
@@ -20,6 +20,7 @@ import java.util.Date;
 
 import org.apache.karaf.scheduler.Job;
 import org.apache.karaf.scheduler.Scheduler;
+import org.apache.karaf.scheduler.command.Schedule;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
@@ -82,9 +83,9 @@ public class WhiteboardHandler {
      * Create unique identifier
      */
     private String getServiceIdentifier(final ServiceReference ref) {
-        String name = 
(String)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_NAME);
+        String name = (String) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_NAME);
         if ( name == null ) {
-            name = (String)ref.getProperty(Constants.SERVICE_PID);
+            name = (String) ref.getProperty(Constants.SERVICE_PID);
             if ( name == null ) {
                 name = "Registered Service";
             }
@@ -99,22 +100,38 @@ public class WhiteboardHandler {
      */
     private void register(final ServiceReference ref, final Object job) {
         final String name = getServiceIdentifier(ref);
-        final Boolean concurrent = (Boolean) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_CONCURRENT);
+        Boolean concurrent = true;
+        if (ref.getProperty(Scheduler.PROPERTY_SCHEDULER_CONCURRENT) != null) {
+            if (ref.getProperty(Scheduler.PROPERTY_SCHEDULER_CONCURRENT) 
instanceof Boolean) {
+                concurrent = (Boolean) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_CONCURRENT);
+            } else {
+                concurrent = new Boolean((String) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_CONCURRENT));
+            }
+        }
         final String expression = (String) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_EXPRESSION);
         try {
             if (expression != null) {
                 this.scheduler.schedule(job, this.scheduler.EXPR(expression)
                         .name(name)
-                        .canRunConcurrently((concurrent != null ? concurrent : 
true)));
+                        .canRunConcurrently(concurrent));
             } else {
-                final Long period = (Long) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_PERIOD);
-                if (period != null) {
+                Long period = null;
+                if (ref.getProperty(Scheduler.PROPERTY_SCHEDULER_PERIOD) != 
null) {
+                    if (ref.getProperty(Scheduler.PROPERTY_SCHEDULER_PERIOD) 
instanceof Long) {
+                        period = (Long) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_PERIOD);
+                    } else {
+                        period = new Long((String) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_PERIOD));
+                    }
                     if (period < 1) {
                         this.logger.debug("Ignoring service {} : scheduler 
period is less than 1.", ref);
                     } else {
                         boolean immediate = false;
                         if 
(ref.getProperty(Scheduler.PROPERTY_SCHEDULER_IMMEDIATE) != null) {
-                            immediate = (Boolean) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_IMMEDIATE);
+                            if 
(ref.getProperty(Scheduler.PROPERTY_SCHEDULER_IMMEDIATE) instanceof Boolean) {
+                                immediate = (Boolean) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_IMMEDIATE);
+                            } else {
+                                immediate = new Boolean((String) 
ref.getProperty(Scheduler.PROPERTY_SCHEDULER_IMMEDIATE));
+                            }
                         }
                         final Date date = new Date();
                         if (!immediate) {

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to