1 package com.atlassian.scheduler.core.util;
2
3 import com.atlassian.scheduler.JobRunner;
4 import com.atlassian.scheduler.config.JobRunnerKey;
5 import com.google.common.collect.ImmutableSet;
6
7 import javax.annotation.Nonnull;
8 import java.util.Set;
9 import java.util.concurrent.ConcurrentHashMap;
10 import java.util.concurrent.ConcurrentMap;
11
12 import static com.atlassian.util.concurrent.Assertions.notNull;
13
14
15
16
17
18
19 public class JobRunnerRegistry {
20 private final ConcurrentMap<JobRunnerKey, JobRunner> jobRunnerRegistry = new ConcurrentHashMap<JobRunnerKey, JobRunner>();
21
22 public void registerJobRunner(final JobRunnerKey jobRunnerKey, final JobRunner jobRunner) {
23 jobRunnerRegistry.put(notNull("jobRunnerKey", jobRunnerKey), notNull("jobRunner", jobRunner));
24 }
25
26 public void unregisterJobRunner(final JobRunnerKey jobRunnerKey) {
27 jobRunnerRegistry.remove(notNull("jobRunnerKey", jobRunnerKey));
28 }
29
30 public JobRunner getJobRunner(final JobRunnerKey jobRunnerKey) {
31 return jobRunnerRegistry.get(notNull("jobRunnerKey", jobRunnerKey));
32 }
33
34 @Nonnull
35 public Set<JobRunnerKey> getRegisteredJobRunnerKeys() {
36 return ImmutableSet.copyOf(jobRunnerRegistry.keySet());
37 }
38 }