1 package com.atlassian.messagequeue.internal.core;
2
3 import com.atlassian.messagequeue.MessageRunnerKey;
4 import com.atlassian.messagequeue.registry.MessageRunner;
5 import com.atlassian.messagequeue.registry.MessageRunnerRegistryService;
6
7 import javax.annotation.concurrent.ThreadSafe;
8 import java.util.Optional;
9 import java.util.concurrent.ConcurrentHashMap;
10 import java.util.concurrent.ConcurrentMap;
11
12
13
14
15 @ThreadSafe
16 public class DefaultMessageRunnerRegistryService implements MessageRunnerRegistryService, MessageRunnerRegistryHelper {
17 private final ConcurrentMap<MessageRunnerKey, MessageRunner> registry;
18
19 public DefaultMessageRunnerRegistryService() {
20 this.registry = new ConcurrentHashMap<>();
21 }
22
23 @Override
24 public void registerMessageRunner(MessageRunnerKey messageRunnerKey, MessageRunner messageRunner) {
25 registry.put(messageRunnerKey, messageRunner);
26 }
27
28 @Override
29 public void unregisterMessageRunner(MessageRunnerKey messageRunnerKey) {
30 registry.remove(messageRunnerKey);
31 }
32
33 @Override
34 public Optional<MessageRunner> getMessageRunner(MessageRunnerKey messageRunnerKey) {
35 return Optional.ofNullable(registry.get(messageRunnerKey));
36 }
37 }