This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 4c380814bfc55c36c91adf2260cec62cd94fe8e3 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Fri Feb 14 14:45:21 2020 +0100 CAMEL-14552 - Create an AWS-SNS component based on SDK v2, Fixed CS --- .../camel/component/aws2/sns/Sns2Component.java | 19 ++--- .../aws2/sns/Sns2ComponentVerifierExtension.java | 1 - .../component/aws2/sns/Sns2Configuration.java | 8 +- .../camel/component/aws2/sns/Sns2Constants.java | 4 +- .../camel/component/aws2/sns/Sns2Endpoint.java | 41 +++++----- .../aws2/sns/Sns2HeaderFilterStrategy.java | 4 +- .../camel/component/aws2/sns/Sns2Producer.java | 22 +++--- .../component/aws2/sns/AmazonSNSClientMock.java | 33 ++++---- .../aws2/sns/SNSComponentClientRegistryTest.java | 8 +- .../aws2/sns/SnsComponentConfigurationTest.java | 92 +++++++++++----------- .../component/aws2/sns/SnsComponentSpringTest.java | 9 +-- .../camel/component/aws2/sns/SnsComponentTest.java | 12 ++- .../camel/component/aws2/sns/SnsProducerTest.java | 4 - .../integration/SnsComponentIntegrationTest.java | 12 +-- .../SnsTopicWithKmsEncryptionIntegrationTest.java | 10 +-- 15 files changed, 133 insertions(+), 146 deletions(-) diff --git a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java index 84143d0..059a2d9 100644 --- a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java +++ b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java @@ -19,36 +19,33 @@ package org.apache.camel.component.aws2.sns; import java.util.Map; import java.util.Set; - import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.annotations.Component; import org.apache.camel.support.DefaultComponent; -import org.apache.camel.util.ObjectHelper; - import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; @Component("aws2-sns") public class Sns2Component extends DefaultComponent { - + @Metadata private String accessKey; @Metadata private String secretKey; @Metadata private String region; - @Metadata(label = "advanced") + @Metadata(label = "advanced") private Sns2Configuration configuration; - + public Sns2Component() { this(null); } public Sns2Component(CamelContext context) { super(context); - + registerExtension(new Sns2ComponentVerifierExtension()); } @@ -58,7 +55,7 @@ public class Sns2Component extends DefaultComponent { if (remaining == null || remaining.trim().length() == 0) { throw new IllegalArgumentException("Topic name must be specified."); } - Sns2Configuration configuration = this.configuration != null ? this.configuration.copy() : new Sns2Configuration(); + Sns2Configuration configuration = this.configuration != null ? this.configuration.copy() : new Sns2Configuration(); if (remaining.startsWith("arn:")) { String[] parts = remaining.split(":"); if (parts.length != 6 || !parts[2].equals("sns")) { @@ -81,7 +78,7 @@ public class Sns2Component extends DefaultComponent { return endpoint; } - + public Sns2Configuration getConfiguration() { return configuration; } @@ -114,7 +111,7 @@ public class Sns2Component extends DefaultComponent { public void setSecretKey(String secretKey) { this.secretKey = secretKey; } - + /** * The region in which SNS client needs to work */ @@ -125,7 +122,7 @@ public class Sns2Component extends DefaultComponent { public void setRegion(String region) { this.region = region; } - + private void checkAndSetRegistryClient(Sns2Configuration configuration) { Set<SnsClient> clients = getCamelContext().getRegistry().findByType(SnsClient.class); if (clients.size() == 1) { diff --git a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2ComponentVerifierExtension.java b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2ComponentVerifierExtension.java index 46c3d45..0af6085 100644 --- a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2ComponentVerifierExtension.java +++ b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2ComponentVerifierExtension.java @@ -22,7 +22,6 @@ import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExt import org.apache.camel.component.extension.verifier.ResultBuilder; import org.apache.camel.component.extension.verifier.ResultErrorBuilder; import org.apache.camel.component.extension.verifier.ResultErrorHelper; - import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.core.exception.SdkClientException; diff --git a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Configuration.java b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Configuration.java index 205e831..19785a3 100644 --- a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Configuration.java +++ b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Configuration.java @@ -19,7 +19,6 @@ package org.apache.camel.component.aws2.sns; import org.apache.camel.RuntimeCamelException; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; - import software.amazon.awssdk.core.Protocol; import software.amazon.awssdk.services.sns.SnsClient; @@ -151,7 +150,7 @@ public class Sns2Configuration implements Cloneable { public void setMessageStructure(String messageStructure) { this.messageStructure = messageStructure; } - + public Protocol getProxyProtocol() { return proxyProtocol; } @@ -190,8 +189,9 @@ public class Sns2Configuration implements Cloneable { } /** - * The region in which SNS client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) - * You'll need to use the name Regions.EU_WEST_1.name() + * The region in which SNS client needs to work. When using this parameter, + * the configuration will expect the capitalized name of the region (for + * example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() */ public void setRegion(String region) { this.region = region; diff --git a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Constants.java b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Constants.java index 9ca469e..8a7cb30 100644 --- a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Constants.java +++ b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Constants.java @@ -20,8 +20,8 @@ package org.apache.camel.component.aws2.sns; * Constants used in Camel AWS SNS module */ public interface Sns2Constants { - + String MESSAGE_ID = "CamelAwsSnsMessageId"; String SUBJECT = "CamelAwsSnsSubject"; String MESSAGE_STRUCTURE = "CamelAwsSnsMessageStructure"; -} \ No newline at end of file +} diff --git a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Endpoint.java b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Endpoint.java index c8a39e9..410b778 100644 --- a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Endpoint.java +++ b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Endpoint.java @@ -34,7 +34,6 @@ import org.apache.camel.support.DefaultEndpoint; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.awscore.exception.AwsServiceException; @@ -53,10 +52,10 @@ import software.amazon.awssdk.services.sns.model.SubscribeResponse; import software.amazon.awssdk.services.sns.model.Topic; /** - * The aws-sns component is used for sending messages to an Amazon Simple Notification Topic. + * The aws-sns component is used for sending messages to an Amazon Simple + * Notification Topic. */ -@UriEndpoint(firstVersion = "3.1.0", scheme = "aws2-sns", title = "AWS 2 Simple Notification System", syntax = "aws2-sns:topicNameOrArn", - producerOnly = true, label = "cloud,mobile,messaging") +@UriEndpoint(firstVersion = "3.1.0", scheme = "aws2-sns", title = "AWS 2 Simple Notification System", syntax = "aws2-sns:topicNameOrArn", producerOnly = true, label = "cloud,mobile,messaging") public class Sns2Endpoint extends DefaultEndpoint implements HeaderFilterStrategyAware { private static final Logger LOG = LoggerFactory.getLogger(Sns2Endpoint.class); @@ -102,20 +101,19 @@ public class Sns2Endpoint extends DefaultEndpoint implements HeaderFilterStrateg @Override public void doInit() throws Exception { super.doInit(); - snsClient = configuration.getAmazonSNSClient() != null - ? configuration.getAmazonSNSClient() : createSNSClient(); + snsClient = configuration.getAmazonSNSClient() != null ? configuration.getAmazonSNSClient() : createSNSClient(); // check the setting the headerFilterStrategy if (headerFilterStrategy == null) { headerFilterStrategy = new Sns2HeaderFilterStrategy(); } - + if (configuration.getTopicArn() == null) { try { String nextToken = null; final String arnSuffix = ":" + configuration.getTopicName(); do { - ListTopicsRequest request = ListTopicsRequest.builder().nextToken(nextToken).build(); + ListTopicsRequest request = ListTopicsRequest.builder().nextToken(nextToken).build(); final ListTopicsResponse response = snsClient.listTopics(request); nextToken = response.nextToken(); @@ -135,7 +133,7 @@ public class Sns2Endpoint extends DefaultEndpoint implements HeaderFilterStrateg if (configuration.getTopicArn() == null && configuration.isAutoCreateTopic()) { // creates a new topic, or returns the URL of an existing one CreateTopicRequest.Builder builder = CreateTopicRequest.builder().name(configuration.getTopicName()); - + if (configuration.isServerSideEncryptionEnabled()) { if (ObjectHelper.isNotEmpty(configuration.getKmsMasterKeyId())) { Map<String, String> attributes = new HashMap<>(); @@ -151,26 +149,28 @@ public class Sns2Endpoint extends DefaultEndpoint implements HeaderFilterStrateg LOG.trace("Topic created with Amazon resource name: {}", configuration.getTopicArn()); } - + if (ObjectHelper.isNotEmpty(configuration.getPolicy())) { LOG.trace("Updating topic [{}] with policy [{}]", configuration.getTopicArn(), configuration.getPolicy()); - - snsClient.setTopicAttributes(SetTopicAttributesRequest.builder().topicArn(configuration.getTopicArn()).attributeName("Policy").attributeValue(configuration.getPolicy()).build()); - + + snsClient.setTopicAttributes(SetTopicAttributesRequest.builder().topicArn(configuration.getTopicArn()).attributeName("Policy").attributeValue(configuration.getPolicy()) + .build()); + LOG.trace("Topic policy updated"); } - + if (configuration.isSubscribeSNStoSQS()) { if (ObjectHelper.isNotEmpty(ObjectHelper.isNotEmpty(configuration.getQueueUrl()))) { - SubscribeResponse resp = snsClient.subscribe(SubscribeRequest.builder().topicArn(configuration.getTopicArn()).protocol("sqs").endpoint(configuration.getQueueUrl()).returnSubscriptionArn(true).build()); + SubscribeResponse resp = snsClient.subscribe(SubscribeRequest.builder().topicArn(configuration.getTopicArn()).protocol("sqs").endpoint(configuration.getQueueUrl()) + .returnSubscriptionArn(true).build()); LOG.trace("Subscription of SQS Queue to SNS Topic done with Amazon resource name: {}", resp.subscriptionArn()); } else { throw new IllegalArgumentException("Using the SubscribeSNStoSQS option require both AmazonSQSClient and Queue URL options"); } } - + } - + @Override public void doStop() throws Exception { if (ObjectHelper.isEmpty(configuration.getAmazonSNSClient())) { @@ -188,17 +188,18 @@ public class Sns2Endpoint extends DefaultEndpoint implements HeaderFilterStrateg public void setConfiguration(Sns2Configuration configuration) { this.configuration = configuration; } - + public void setSNSClient(SnsClient snsClient) { this.snsClient = snsClient; } - + public SnsClient getSNSClient() { return snsClient; } /** - * Provide the possibility to override this method for an mock implementation + * Provide the possibility to override this method for an mock + * implementation * * @return AmazonSNSClient */ diff --git a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2HeaderFilterStrategy.java b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2HeaderFilterStrategy.java index 756d5da..5ecf688 100644 --- a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2HeaderFilterStrategy.java +++ b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2HeaderFilterStrategy.java @@ -20,11 +20,11 @@ import org.apache.camel.support.DefaultHeaderFilterStrategy; public class Sns2HeaderFilterStrategy extends DefaultHeaderFilterStrategy { public Sns2HeaderFilterStrategy() { - initialize(); + initialize(); } protected void initialize() { // filter headers begin with "Camel" or "org.apache.camel" - setOutFilterPattern("(breadcrumbId|Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*"); + setOutFilterPattern("(breadcrumbId|Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*"); } } diff --git a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Producer.java b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Producer.java index b6871c0..4bc2499 100644 --- a/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Producer.java +++ b/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Producer.java @@ -33,15 +33,14 @@ import org.apache.camel.support.DefaultProducer; import org.apache.camel.util.URISupport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.services.sns.model.MessageAttributeValue; import software.amazon.awssdk.services.sns.model.PublishRequest; import software.amazon.awssdk.services.sns.model.PublishResponse; /** - * A Producer which sends messages to the Amazon Web Service Simple Notification Service - * <a href="http://aws.amazon.com/sns/">AWS SNS</a> + * A Producer which sends messages to the Amazon Web Service Simple Notification + * Service <a href="http://aws.amazon.com/sns/">AWS SNS</a> */ public class Sns2Producer extends DefaultProducer { @@ -95,7 +94,8 @@ public class Sns2Producer extends DefaultProducer { Map<String, MessageAttributeValue> result = new HashMap<>(); HeaderFilterStrategy headerFilterStrategy = getEndpoint().getHeaderFilterStrategy(); for (Entry<String, Object> entry : headers.entrySet()) { - // only put the message header which is not filtered into the message attribute + // only put the message header which is not filtered into the + // message attribute if (!headerFilterStrategy.applyFilterToCamelHeaders(entry.getKey(), entry.getValue(), exchange)) { Object value = entry.getValue(); if (value instanceof String && !((String)value).isEmpty()) { @@ -104,25 +104,25 @@ public class Sns2Producer extends DefaultProducer { mav.stringValue((String)value); result.put(entry.getKey(), mav.build()); } else if (value instanceof ByteBuffer) { - MessageAttributeValue.Builder mav = MessageAttributeValue.builder(); + MessageAttributeValue.Builder mav = MessageAttributeValue.builder(); mav.dataType("Binary"); mav.binaryValue(SdkBytes.fromByteBuffer((ByteBuffer)value)); result.put(entry.getKey(), mav.build()); } else if (value instanceof Date) { - MessageAttributeValue.Builder mav = MessageAttributeValue.builder(); + MessageAttributeValue.Builder mav = MessageAttributeValue.builder(); mav.dataType("String"); mav.stringValue(value.toString()); result.put(entry.getKey(), mav.build()); } else if (value instanceof List) { - String resultString = ((List<?>) value).stream() - .map(o -> o instanceof String ? String.format("\"%s\"", o) : Objects.toString(o)) - .collect(Collectors.joining(", ")); + String resultString = ((List<?>)value).stream().map(o -> o instanceof String ? String.format("\"%s\"", o) : Objects.toString(o)) + .collect(Collectors.joining(", ")); MessageAttributeValue.Builder mav = MessageAttributeValue.builder(); mav.dataType("String.Array"); mav.stringValue("[" + resultString + "]"); result.put(entry.getKey(), mav.build()); } else { - // cannot translate the message header to message attribute value + // cannot translate the message header to message attribute + // value LOG.warn("Cannot put the message header key={}, value={} into Sns MessageAttribute", entry.getKey(), entry.getValue()); } } @@ -144,7 +144,7 @@ public class Sns2Producer extends DefaultProducer { @Override public Sns2Endpoint getEndpoint() { - return (Sns2Endpoint) super.getEndpoint(); + return (Sns2Endpoint)super.getEndpoint(); } public static Message getMessageForResponse(final Exchange exchange) { diff --git a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/AmazonSNSClientMock.java b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/AmazonSNSClientMock.java index f442786..48142ec 100644 --- a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/AmazonSNSClientMock.java +++ b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/AmazonSNSClientMock.java @@ -19,6 +19,7 @@ package org.apache.camel.component.aws2.sns; import java.util.ArrayList; import java.util.List; +import org.junit.Assert; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.CreateTopicRequest; import software.amazon.awssdk.services.sns.model.CreateTopicResponse; @@ -30,12 +31,10 @@ import software.amazon.awssdk.services.sns.model.SetTopicAttributesRequest; import software.amazon.awssdk.services.sns.model.SetTopicAttributesResponse; import software.amazon.awssdk.services.sns.model.Topic; -import org.junit.Assert; - public class AmazonSNSClientMock implements SnsClient { - + private static final String DEFAULT_TOPIC_ARN = "arn:aws:sns:us-east-1:541925086079:MyTopic"; - + public AmazonSNSClientMock() { } @@ -56,26 +55,26 @@ public class AmazonSNSClientMock implements SnsClient { public PublishResponse publish(PublishRequest publishRequest) { return PublishResponse.builder().messageId("dcc8ce7a-7f18-4385-bedd-b97984b4363c").build(); } - + @Override public ListTopicsResponse listTopics(ListTopicsRequest listTopicRequest) { - ListTopicsResponse.Builder res = ListTopicsResponse.builder(); - Topic topic = Topic.builder().topicArn(DEFAULT_TOPIC_ARN).build(); + ListTopicsResponse.Builder res = ListTopicsResponse.builder(); + Topic topic = Topic.builder().topicArn(DEFAULT_TOPIC_ARN).build(); List<Topic> list = new ArrayList<>(); list.add(topic); res.topics(list); return res.build(); } - @Override - public String serviceName() { - // TODO Auto-generated method stub - return null; - } + @Override + public String serviceName() { + // TODO Auto-generated method stub + return null; + } - @Override - public void close() { - // TODO Auto-generated method stub - - } + @Override + public void close() { + // TODO Auto-generated method stub + + } } diff --git a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SNSComponentClientRegistryTest.java b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SNSComponentClientRegistryTest.java index cf6ce6e..f4c19e4 100644 --- a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SNSComponentClientRegistryTest.java +++ b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SNSComponentClientRegistryTest.java @@ -16,8 +16,6 @@ */ package org.apache.camel.component.aws2.sns; -import org.apache.camel.component.aws2.sns.Sns2Component; -import org.apache.camel.component.aws2.sns.Sns2Endpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; @@ -29,15 +27,15 @@ public class SNSComponentClientRegistryTest extends CamelTestSupport { AmazonSNSClientMock awsSNSClient = new AmazonSNSClientMock(); context.getRegistry().bind("awsSNSClient", awsSNSClient); Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); - Sns2Endpoint endpoint = (Sns2Endpoint) component.createEndpoint("aws2-sns://MyTopic"); + Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://MyTopic"); assertNotNull(endpoint.getConfiguration().getAmazonSNSClient()); } - + @Test(expected = IllegalArgumentException.class) public void createEndpointWithMinimalSNSClientMisconfiguration() throws Exception { Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); - Sns2Endpoint endpoint = (Sns2Endpoint) component.createEndpoint("aws2-sns://MyTopic"); + Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://MyTopic"); } } diff --git a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentConfigurationTest.java b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentConfigurationTest.java index ea9064f..7ed0b0f 100644 --- a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentConfigurationTest.java +++ b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentConfigurationTest.java @@ -16,25 +16,23 @@ */ package org.apache.camel.component.aws2.sns; -import org.apache.camel.component.aws2.sns.Sns2Component; -import org.apache.camel.component.aws2.sns.Sns2Endpoint; + import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; - import software.amazon.awssdk.core.Protocol; import software.amazon.awssdk.regions.Region; public class SnsComponentConfigurationTest extends CamelTestSupport { - + @Test public void createEndpointWithMinimalConfiguration() throws Exception { AmazonSNSClientMock mock = new AmazonSNSClientMock(); - + context.getRegistry().bind("amazonSNSClient", mock); Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); - Sns2Endpoint endpoint = (Sns2Endpoint) component.createEndpoint("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient&accessKey=xxx&secretKey=yyy"); - + Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient&accessKey=xxx&secretKey=yyy"); + assertEquals("MyTopic", endpoint.getConfiguration().getTopicName()); assertEquals("xxx", endpoint.getConfiguration().getAccessKey()); assertEquals("yyy", endpoint.getConfiguration().getSecretKey()); @@ -43,11 +41,11 @@ public class SnsComponentConfigurationTest extends CamelTestSupport { assertNull(endpoint.getConfiguration().getSubject()); assertNull(endpoint.getConfiguration().getPolicy()); } - + @Test public void createEndpointWithOnlyAccessKeyAndSecretKey() throws Exception { Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); - Sns2Endpoint endpoint = (Sns2Endpoint) component.createEndpoint("aws2-sns://MyTopic?accessKey=xxx&secretKey=yyy"); + Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://MyTopic?accessKey=xxx&secretKey=yyy"); assertEquals("MyTopic", endpoint.getConfiguration().getTopicName()); assertEquals("xxx", endpoint.getConfiguration().getAccessKey()); @@ -61,11 +59,12 @@ public class SnsComponentConfigurationTest extends CamelTestSupport { @Test public void createEndpointWithMinimalArnConfiguration() throws Exception { AmazonSNSClientMock mock = new AmazonSNSClientMock(); - + context.getRegistry().bind("amazonSNSClient", mock); Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); - Sns2Endpoint endpoint = (Sns2Endpoint) component.createEndpoint("aws2-sns://arn:aws:sns:us-east-1:account:MyTopic?amazonSNSClient=#amazonSNSClient&accessKey=xxx&secretKey=yyy"); + Sns2Endpoint endpoint = (Sns2Endpoint)component + .createEndpoint("aws2-sns://arn:aws:sns:us-east-1:account:MyTopic?amazonSNSClient=#amazonSNSClient&accessKey=xxx&secretKey=yyy"); assertNull(endpoint.getConfiguration().getTopicName()); assertEquals("arn:aws:sns:us-east-1:account:MyTopic", endpoint.getConfiguration().getTopicArn()); @@ -74,12 +73,12 @@ public class SnsComponentConfigurationTest extends CamelTestSupport { @Test public void createEndpointWithMinimalConfigurationAndProvidedClient() throws Exception { AmazonSNSClientMock mock = new AmazonSNSClientMock(); - + context.getRegistry().bind("amazonSNSClient", mock); - + Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); - Sns2Endpoint endpoint = (Sns2Endpoint) component.createEndpoint("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient"); - + Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient"); + assertEquals("MyTopic", endpoint.getConfiguration().getTopicName()); assertNull(endpoint.getConfiguration().getAccessKey()); assertNull(endpoint.getConfiguration().getSecretKey()); @@ -87,44 +86,44 @@ public class SnsComponentConfigurationTest extends CamelTestSupport { assertNull(endpoint.getConfiguration().getSubject()); assertNull(endpoint.getConfiguration().getPolicy()); endpoint.start(); - + assertEquals("arn:aws:sns:us-east-1:541925086079:MyTopic", endpoint.getConfiguration().getTopicArn()); - + endpoint.stop(); } - + @Test public void createEndpointWithMaximalConfiguration() throws Exception { - + AmazonSNSClientMock mock = new AmazonSNSClientMock(); - + context.getRegistry().bind("amazonSNSClient", mock); - + Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); - Sns2Endpoint endpoint = (Sns2Endpoint) component.createEndpoint("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient&accessKey=xxx&secretKey=yyy" - + "&policy=%7B%22Version%22%3A%222008-10-17%22,%22Statement%22%3A%5B%7B%22Sid%22%3A%221%22,%22Effect%22%3A%22Allow%22,%22Principal%22%3A%7B%22AWS%22%3A%5B%22*%22%5D%7D," - + "%22Action%22%3A%5B%22sns%3ASubscribe%22%5D%7D%5D%7D&subject=The+subject+message"); - + Sns2Endpoint endpoint = (Sns2Endpoint)component + .createEndpoint("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient&accessKey=xxx&secretKey=yyy" + + "&policy=%7B%22Version%22%3A%222008-10-17%22,%22Statement%22%3A%5B%7B%22Sid%22%3A%221%22,%22Effect%22%3A%22Allow%22,%22Principal%22%3A%7B%22AWS%22%3A%5B%22*%22%5D%7D," + + "%22Action%22%3A%5B%22sns%3ASubscribe%22%5D%7D%5D%7D&subject=The+subject+message"); + assertEquals("MyTopic", endpoint.getConfiguration().getTopicName()); assertEquals("xxx", endpoint.getConfiguration().getAccessKey()); assertEquals("yyy", endpoint.getConfiguration().getSecretKey()); assertNull(endpoint.getConfiguration().getTopicArn()); assertNotNull(endpoint.getConfiguration().getAmazonSNSClient()); assertEquals("The subject message", endpoint.getConfiguration().getSubject()); - assertEquals( - "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"1\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"sns:Subscribe\"]}]}", - endpoint.getConfiguration().getPolicy()); + assertEquals("{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"1\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"sns:Subscribe\"]}]}", + endpoint.getConfiguration().getPolicy()); } - + @Test public void createEndpointWithSQSSubscription() throws Exception { AmazonSNSClientMock mock = new AmazonSNSClientMock(); - + context.getRegistry().bind("amazonSNSClient", mock); Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); - Sns2Endpoint endpoint = (Sns2Endpoint) component.createEndpoint("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient&" - + "accessKey=xxx&secretKey=yyy&queueUrl=arn:aws:sqs:us-east-1:541925086079:MyQueue&subscribeSNStoSQS=true"); - + Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient&" + + "accessKey=xxx&secretKey=yyy&queueUrl=arn:aws:sqs:us-east-1:541925086079:MyQueue&subscribeSNStoSQS=true"); + assertEquals("MyTopic", endpoint.getConfiguration().getTopicName()); assertEquals("xxx", endpoint.getConfiguration().getAccessKey()); assertEquals("yyy", endpoint.getConfiguration().getSecretKey()); @@ -134,31 +133,31 @@ public class SnsComponentConfigurationTest extends CamelTestSupport { assertNull(endpoint.getConfiguration().getSubject()); assertNull(endpoint.getConfiguration().getPolicy()); } - + @Test(expected = IllegalArgumentException.class) public void createEndpointWithoutAccessKeyConfiguration() throws Exception { Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); component.createEndpoint("aws-sns://MyTopic?secretKey=yyy"); } - + @Test(expected = IllegalArgumentException.class) public void createEndpointWithoutSecretKeyConfiguration() throws Exception { Sns2Component component = new Sns2Component(context); component.createEndpoint("aws2-sns://MyTopic?accessKey=xxx"); } - + @Test public void createEndpointWithComponentElements() throws Exception { Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); component.setAccessKey("XXX"); component.setSecretKey("YYY"); Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://MyTopic"); - + assertEquals("MyTopic", endpoint.getConfiguration().getTopicName()); assertEquals("XXX", endpoint.getConfiguration().getAccessKey()); assertEquals("YYY", endpoint.getConfiguration().getSecretKey()); } - + @Test public void createEndpointWithComponentAndEndpointElements() throws Exception { Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); @@ -166,13 +165,13 @@ public class SnsComponentConfigurationTest extends CamelTestSupport { component.setSecretKey("YYY"); component.setRegion(Region.US_WEST_1.toString()); Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://MyTopic?accessKey=xxxxxx&secretKey=yyyyy®ion=US_EAST_1"); - + assertEquals("MyTopic", endpoint.getConfiguration().getTopicName()); assertEquals("xxxxxx", endpoint.getConfiguration().getAccessKey()); assertEquals("yyyyy", endpoint.getConfiguration().getSecretKey()); assertEquals("US_EAST_1", endpoint.getConfiguration().getRegion()); } - + @Test public void createEndpointWithoutAutocreation() throws Exception { Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); @@ -180,22 +179,23 @@ public class SnsComponentConfigurationTest extends CamelTestSupport { component.setSecretKey("YYY"); component.setRegion(Region.US_WEST_1.toString()); Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://MyTopic?accessKey=xxxxxx&secretKey=yyyyy®ion=US_EAST_1&autoCreateTopic=false"); - + assertEquals("MyTopic", endpoint.getConfiguration().getTopicName()); assertEquals("xxxxxx", endpoint.getConfiguration().getAccessKey()); assertEquals("yyyyy", endpoint.getConfiguration().getSecretKey()); assertEquals("US_EAST_1", endpoint.getConfiguration().getRegion()); assertEquals(false, endpoint.getConfiguration().isAutoCreateTopic()); } - + @Test public void createEndpointWithComponentEndpointElementsAndProxy() throws Exception { Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); component.setAccessKey("XXX"); component.setSecretKey("YYY"); component.setRegion(Region.US_WEST_1.toString()); - Sns2Endpoint endpoint = (Sns2Endpoint)component.createEndpoint("aws2-sns://label?accessKey=xxxxxx&secretKey=yyyyy®ion=US_EAST_1&proxyHost=localhost&proxyPort=9000&proxyProtocol=HTTP"); - + Sns2Endpoint endpoint = (Sns2Endpoint)component + .createEndpoint("aws2-sns://label?accessKey=xxxxxx&secretKey=yyyyy®ion=US_EAST_1&proxyHost=localhost&proxyPort=9000&proxyProtocol=HTTP"); + assertEquals("xxxxxx", endpoint.getConfiguration().getAccessKey()); assertEquals("yyyyy", endpoint.getConfiguration().getSecretKey()); assertEquals("US_EAST_1", endpoint.getConfiguration().getRegion()); @@ -203,11 +203,11 @@ public class SnsComponentConfigurationTest extends CamelTestSupport { assertEquals("localhost", endpoint.getConfiguration().getProxyHost()); assertEquals(Integer.valueOf(9000), endpoint.getConfiguration().getProxyPort()); } - + @Test public void createEndpointWithoutSecretKeyAndAccessKeyConfiguration() throws Exception { AmazonSNSClientMock mock = new AmazonSNSClientMock(); - + context.getRegistry().bind("amazonSNSClient", mock); Sns2Component component = context.getComponent("aws2-sns", Sns2Component.class); diff --git a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentSpringTest.java b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentSpringTest.java index 822960c..eb17fe5 100644 --- a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentSpringTest.java +++ b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentSpringTest.java @@ -19,13 +19,12 @@ package org.apache.camel.component.aws2.sns; import org.apache.camel.Exchange; import org.apache.camel.ExchangePattern; import org.apache.camel.Processor; -import org.apache.camel.component.aws2.sns.Sns2Constants; import org.apache.camel.test.spring.CamelSpringTestSupport; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SnsComponentSpringTest extends CamelSpringTestSupport { - + @Test public void sendInOnly() throws Exception { Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() { @@ -34,10 +33,10 @@ public class SnsComponentSpringTest extends CamelSpringTestSupport { exchange.getIn().setBody("This is my message text."); } }); - + assertEquals("dcc8ce7a-7f18-4385-bedd-b97984b4363c", exchange.getIn().getHeader(Sns2Constants.MESSAGE_ID)); } - + @Test public void sendInOut() throws Exception { Exchange exchange = template.send("direct:start", ExchangePattern.InOut, new Processor() { @@ -46,7 +45,7 @@ public class SnsComponentSpringTest extends CamelSpringTestSupport { exchange.getIn().setBody("This is my message text."); } }); - + assertEquals("dcc8ce7a-7f18-4385-bedd-b97984b4363c", exchange.getMessage().getHeader(Sns2Constants.MESSAGE_ID)); } diff --git a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentTest.java b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentTest.java index d9e6462..ebf1fdb 100644 --- a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentTest.java +++ b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsComponentTest.java @@ -21,7 +21,6 @@ import org.apache.camel.Exchange; import org.apache.camel.ExchangePattern; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.aws2.sns.Sns2Constants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; @@ -29,7 +28,7 @@ public class SnsComponentTest extends CamelTestSupport { @BindToRegistry("amazonSNSClient") AmazonSNSClientMock client = new AmazonSNSClientMock(); - + @Test public void sendInOnly() throws Exception { Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() { @@ -38,10 +37,10 @@ public class SnsComponentTest extends CamelTestSupport { exchange.getIn().setBody("This is my message text."); } }); - + assertEquals("dcc8ce7a-7f18-4385-bedd-b97984b4363c", exchange.getIn().getHeader(Sns2Constants.MESSAGE_ID)); } - + @Test public void sendInOut() throws Exception { Exchange exchange = template.send("direct:start", ExchangePattern.InOut, new Processor() { @@ -50,7 +49,7 @@ public class SnsComponentTest extends CamelTestSupport { exchange.getIn().setBody("This is my message text."); } }); - + assertEquals("dcc8ce7a-7f18-4385-bedd-b97984b4363c", exchange.getMessage().getHeader(Sns2Constants.MESSAGE_ID)); } @@ -59,8 +58,7 @@ public class SnsComponentTest extends CamelTestSupport { return new RouteBuilder() { @Override public void configure() throws Exception { - from("direct:start") - .to("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient&policy=XXX"); + from("direct:start").to("aws2-sns://MyTopic?amazonSNSClient=#amazonSNSClient&policy=XXX"); } }; } diff --git a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsProducerTest.java b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsProducerTest.java index 6b98100..c268c01 100644 --- a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsProducerTest.java +++ b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/SnsProducerTest.java @@ -21,15 +21,11 @@ import java.util.HashMap; import java.util.Map; import org.apache.camel.Exchange; -import org.apache.camel.component.aws2.sns.Sns2Endpoint; -import org.apache.camel.component.aws2.sns.Sns2HeaderFilterStrategy; -import org.apache.camel.component.aws2.sns.Sns2Producer; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; - import software.amazon.awssdk.services.sns.model.MessageAttributeValue; import static org.hamcrest.CoreMatchers.is; diff --git a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/integration/SnsComponentIntegrationTest.java b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/integration/SnsComponentIntegrationTest.java index fedc451..f43f942 100644 --- a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/integration/SnsComponentIntegrationTest.java +++ b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/integration/SnsComponentIntegrationTest.java @@ -27,7 +27,7 @@ import org.junit.Test; @Ignore("Must be manually tested. Provide your own accessKey and secretKey!") public class SnsComponentIntegrationTest extends CamelTestSupport { - + @Test public void sendInOnly() throws Exception { Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() { @@ -36,10 +36,10 @@ public class SnsComponentIntegrationTest extends CamelTestSupport { exchange.getIn().setBody("This is my message text."); } }); - + assertNotNull(exchange.getIn().getHeader(Sns2Constants.MESSAGE_ID)); } - + @Test public void sendInOut() throws Exception { Exchange exchange = template.send("direct:start", ExchangePattern.InOut, new Processor() { @@ -48,10 +48,10 @@ public class SnsComponentIntegrationTest extends CamelTestSupport { exchange.getIn().setBody("This is my message text."); } }); - + assertNotNull(exchange.getMessage().getHeader(Sns2Constants.MESSAGE_ID)); } - + @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @@ -59,7 +59,7 @@ public class SnsComponentIntegrationTest extends CamelTestSupport { public void configure() throws Exception { from("direct:start") .to("aws2-sns://MyNewTopic?accessKey=xxx&secretKey=yyy&policy=%7B%22Version%22%3A%222008-10-17%22,%22Statement%22%3A%5B%7B%22Sid%22%3A%221%22,%22Effect%22%3A%22Allow%22," - + "%22Principal%22%3A%7B%22AWS%22%3A%5B%22*%22%5D%7D,%22Action%22%3A%5B%22sns%3ASubscribe%22%5D%7D%5D%7D&subject=The+subject+message"); + + "%22Principal%22%3A%7B%22AWS%22%3A%5B%22*%22%5D%7D,%22Action%22%3A%5B%22sns%3ASubscribe%22%5D%7D%5D%7D&subject=The+subject+message"); } }; } diff --git a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/integration/SnsTopicWithKmsEncryptionIntegrationTest.java b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/integration/SnsTopicWithKmsEncryptionIntegrationTest.java index 08c95bf..6388684 100644 --- a/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/integration/SnsTopicWithKmsEncryptionIntegrationTest.java +++ b/components/camel-aws2-sns/src/test/java/org/apache/camel/component/aws2/sns/integration/SnsTopicWithKmsEncryptionIntegrationTest.java @@ -27,7 +27,7 @@ import org.junit.Test; @Ignore("Must be manually tested. Provide your own accessKey and secretKey!") public class SnsTopicWithKmsEncryptionIntegrationTest extends CamelTestSupport { - + @Test public void sendInOnly() throws Exception { Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() { @@ -36,10 +36,10 @@ public class SnsTopicWithKmsEncryptionIntegrationTest extends CamelTestSupport { exchange.getIn().setBody("This is my message text."); } }); - + assertNotNull(exchange.getIn().getHeader(Sns2Constants.MESSAGE_ID)); } - + @Test public void sendInOut() throws Exception { Exchange exchange = template.send("direct:start", ExchangePattern.InOut, new Processor() { @@ -48,10 +48,10 @@ public class SnsTopicWithKmsEncryptionIntegrationTest extends CamelTestSupport { exchange.getIn().setBody("This is my message text."); } }); - + assertNotNull(exchange.getMessage().getHeader(Sns2Constants.MESSAGE_ID)); } - + @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() {