Author: chetanm
Date: Fri Nov 11 14:22:16 2016
New Revision: 1769288

URL: http://svn.apache.org/viewvc?rev=1769288&view=rev
Log:
OAK-5097 - Allow passing custom service prop while registering scheduled jobs

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java?rev=1769288&r1=1769287&r2=1769288&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
 Fri Nov 11 14:22:16 2016
@@ -53,7 +53,15 @@ public class WhiteboardUtils {
     public static Registration scheduleWithFixedDelay(
             Whiteboard whiteboard, Runnable runnable, long delayInSeconds, 
boolean runOnSingleClusterNode,
             boolean useDedicatedPool) {
+        return scheduleWithFixedDelay(whiteboard, runnable, 
Collections.<String, Object>emptyMap(),
+                delayInSeconds, runOnSingleClusterNode, useDedicatedPool);
+    }
+
+    public static Registration scheduleWithFixedDelay(
+            Whiteboard whiteboard, Runnable runnable, Map<String, Object> 
extraProps, long delayInSeconds, boolean runOnSingleClusterNode,
+            boolean useDedicatedPool) {
         ImmutableMap.Builder<String, Object> builder = ImmutableMap.<String, 
Object>builder()
+                .putAll(extraProps)
                 .put("scheduler.period", delayInSeconds)
                 .put("scheduler.concurrent", false);
         if (runOnSingleClusterNode) {

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java?rev=1769288&r1=1769287&r2=1769288&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java
 Fri Nov 11 14:22:16 2016
@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.Atomi
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.jmx.QueryEngineSettingsMBean;
@@ -109,6 +110,23 @@ public class WhiteboardUtilsTest {
         assertEquals("SINGLE", props.get().get("scheduler.runOn"));
     }
 
+    @Test
+    public void scheduledJobWithExtraProps() throws Exception{
+        final AtomicReference<Map<?, ?>> props = new AtomicReference<Map<?, 
?>>();
+        Whiteboard wb = new DefaultWhiteboard(){
+            @Override
+            public <T> Registration register(Class<T> type, T service, Map<?, 
?> properties) {
+                props.set(properties);
+                return super.register(type, service, properties);
+            }
+        };
+
+        Map<String, Object> config = ImmutableMap.<String, Object>of("foo", 
"bar");
+        WhiteboardUtils.scheduleWithFixedDelay(wb, new TestRunnable(), config, 
1, false, true);
+        assertNotNull(props.get().get("scheduler.threadPool"));
+        assertEquals("bar", props.get().get("foo"));
+    }
+
     public interface HelloMBean {
         boolean isRunning();
         int getCount();


Reply via email to