View Javadoc

1   package com.atlassian.messagequeue.internal.core;
2   
3   import com.atlassian.messagequeue.MessageValidatorKey;
4   import com.atlassian.messagequeue.registry.MessageValidator;
5   import com.atlassian.messagequeue.registry.MessageValidatorRegistryService;
6   
7   import javax.annotation.concurrent.ThreadSafe;
8   import java.util.Collection;
9   import java.util.concurrent.ConcurrentHashMap;
10  import java.util.concurrent.ConcurrentMap;
11  
12  /**
13   * A default message runner registry that stores registrations in memory in a concurrent data structure.
14   *
15   * It's important to realise that any validators registered here will only validate/filter messages received by the current node.
16   *
17   */
18  @ThreadSafe
19  public class DefaultMessageValidatorRegistryService implements MessageValidatorRegistryService, MessageValidatorRegistryHelper {
20      private final ConcurrentMap<MessageValidatorKey, MessageValidator> registry;
21  
22      public DefaultMessageValidatorRegistryService() {
23          this.registry = new ConcurrentHashMap<>();
24      }
25  
26      @Override
27      public void registerMessageValidator(MessageValidatorKey messageRunnerKey, MessageValidator messageRunner) {
28          registry.put(messageRunnerKey, messageRunner);
29      }
30  
31      @Override
32      public void unregisterMessageValidator(MessageValidatorKey messageRunnerKey) {
33          registry.remove(messageRunnerKey);
34      }
35  
36      @Override
37      public Collection<MessageValidator> getAllValidators() {
38          return registry.values();
39      }
40  }