View Javadoc

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   * Encapsulates the registration and retrieval of job runners.
16   *
17   * @since v1.0
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  }