You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2021/05/04 06:43:55 UTC

[karaf] branch karaf-4.2.x updated: [KARAF-7113] Improve scheduler whiteboard name handling

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

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


The following commit(s) were added to refs/heads/karaf-4.2.x by this push:
     new 9218521  [KARAF-7113] Improve scheduler whiteboard name handling
9218521 is described below

commit 9218521c8ee4c5bec1cb61bd2463917d049e510c
Author: jbonofre <jb...@apache.org>
AuthorDate: Mon Apr 26 08:51:02 2021 +0200

    [KARAF-7113] Improve scheduler whiteboard name handling
    
    (cherry picked from commit 7e8b5171b5672470c76ef7749bdacf84e25f78f6)
---
 .../src/main/feature/feature.xml                            |  8 ++++++++
 .../scheduler/{RunnableService.java => OtherService.java}   | 13 +++++--------
 .../apache/karaf/examples/scheduler/RunnableService.java    |  2 +-
 .../apache/karaf/itests/examples/SchedulerExampleTest.java  |  3 ++-
 .../org/apache/karaf/scheduler/core/WhiteboardHandler.java  | 12 ++++++++++--
 5 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/examples/karaf-scheduler-example/karaf-scheduler-example-features/src/main/feature/feature.xml b/examples/karaf-scheduler-example/karaf-scheduler-example-features/src/main/feature/feature.xml
index f6a174d..38c1cc4 100644
--- a/examples/karaf-scheduler-example/karaf-scheduler-example-features/src/main/feature/feature.xml
+++ b/examples/karaf-scheduler-example/karaf-scheduler-example-features/src/main/feature/feature.xml
@@ -19,6 +19,14 @@
 <features name="karaf-scheduler-example-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.4.0">
 
     <feature name="karaf-scheduler-example" version="${project.version}">
+        <config name="org.apache.karaf.example.scheduler.foo">
+            scheduler.time=5
+            scheduler.period=10
+        </config>
+        <config name="org.apache.karaf.example.scheduler.bar">
+            scheduler.time=5
+            scheduler.period=10
+        </config>
         <feature prerequisite="true">scheduler</feature>
         <feature prerequisite="true">scr</feature>
         <bundle>mvn:org.apache.karaf.examples/karaf-scheduler-example-runnable/${project.version}</bundle>
diff --git a/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/RunnableService.java b/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/OtherService.java
similarity index 74%
copy from examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/RunnableService.java
copy to examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/OtherService.java
index 31b8597..bd4490e 100644
--- a/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/RunnableService.java
+++ b/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/OtherService.java
@@ -17,20 +17,17 @@
 package org.apache.karaf.examples.scheduler;
 
 import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
 
 @Component(
-        property = {
-                "scheduler.name=example",
-                "scheduler.period:Long=10",
-                "scheduler.times:Integer=5",
-                "scheduler.concurrent:Boolean=false"
-        }
+        configurationPid = { "org.apache.karaf.example.scheduler.foo", "org.apache.karaf.example.scheduler.bar" },
+        configurationPolicy = ConfigurationPolicy.REQUIRE
 )
-public class RunnableService implements Runnable {
+public class OtherService implements Runnable {
 
     @Override
     public void run() {
-        System.out.print("Hello Karaf user !");
+        System.out.print("Hello others !");
     }
 
 }
diff --git a/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/RunnableService.java b/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/RunnableService.java
index 31b8597..ad4b6aa 100644
--- a/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/RunnableService.java
+++ b/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/src/main/java/org/apache/karaf/examples/scheduler/RunnableService.java
@@ -20,7 +20,7 @@ import org.osgi.service.component.annotations.Component;
 
 @Component(
         property = {
-                "scheduler.name=example",
+                "scheduler.name=org.apache.karaf.example.scheduler.runnable",
                 "scheduler.period:Long=10",
                 "scheduler.times:Integer=5",
                 "scheduler.concurrent:Boolean=false"
diff --git a/itests/test/src/test/java/org/apache/karaf/itests/examples/SchedulerExampleTest.java b/itests/test/src/test/java/org/apache/karaf/itests/examples/SchedulerExampleTest.java
index bd1e45b..a3c3328 100644
--- a/itests/test/src/test/java/org/apache/karaf/itests/examples/SchedulerExampleTest.java
+++ b/itests/test/src/test/java/org/apache/karaf/itests/examples/SchedulerExampleTest.java
@@ -34,7 +34,8 @@ public class SchedulerExampleTest extends BaseTest {
 
         String output = executeCommand("scheduler:list");
         System.out.println(output);
-        assertContains("example", output);
+        assertContains("org.apache.karaf.example.scheduler.runnable", output);
+        assertContains("org.apache.karaf.example.scheduler.foo", output);
     }
 
 }
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 218f396..51f8976 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
@@ -16,6 +16,8 @@
  */
 package org.apache.karaf.scheduler.core;
 
+import java.lang.reflect.Array;
+import java.util.ArrayList;
 import java.util.Date;
 
 import org.apache.karaf.scheduler.Job;
@@ -84,8 +86,14 @@ public class WhiteboardHandler {
     private String getServiceIdentifier(final ServiceReference ref) {
         String name = (String) ref.getProperty(Scheduler.PROPERTY_SCHEDULER_NAME);
         if ( name == null ) {
-            name = (String) ref.getProperty(Constants.SERVICE_PID);
-            if ( name == null ) {
+            if (ref.getProperty(Constants.SERVICE_PID) instanceof String) {
+                name = (String) ref.getProperty(Constants.SERVICE_PID);
+            } else if (ref.getProperty(Constants.SERVICE_PID) instanceof ArrayList) {
+                if (((ArrayList) ref.getProperty(Constants.SERVICE_PID)).size() > 0) {
+                    name = ((ArrayList) ref.getProperty(Constants.SERVICE_PID)).get(0).toString();
+                }
+            }
+            if (name == null) {
                 name = "Registered Service";
             }
         }