View Javadoc

1   package com.atlassian.messagequeue.internal.core.messagevalidators;
2   
3   import com.atlassian.messagequeue.MessageValidatorKey;
4   import com.atlassian.messagequeue.registry.MessageValidator;
5   import com.atlassian.messagequeue.TenantDataIdSupplier;
6   import com.atlassian.messagequeue.internal.core.NestedMessageConstants;
7   import com.atlassian.messagequeue.registry.MessageContext;
8   
9   import java.util.Map;
10  
11  /**
12   * Test validator that uses the data id attribute
13   */
14  public class MessageTenantDataIdValidator implements MessageValidator {
15      private TenantDataIdSupplier tenantDataIdSupplier;
16      public static final MessageValidatorKey KEY = MessageValidatorKey.of(MessageTenantDataIdValidator.class.toString());
17  
18      public MessageTenantDataIdValidator(TenantDataIdSupplier tenantDataIdSupplier) {
19          this.tenantDataIdSupplier = tenantDataIdSupplier;
20      }
21  
22      @Override
23      public boolean isValid(MessageContext messageContext, Map<String, String> messageAttributes) {
24          final String tenantDataId = messageAttributes.get(NestedMessageConstants.TENANT_DATA_ID_ATTRIBUTE_NAME);
25          return tenantDataId == null || tenantDataIdSupplier.get().equals(tenantDataId);
26      }
27  
28      @Override
29      public void handleInvalidMessage(MessageContext messageContext, Map<String, String> messageAttributes) {
30          messageContext.acknowledge();
31      }
32  }