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();