You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2020/02/14 14:41:11 UTC
[camel] 05/11: CAMEL-14552 - Create an AWS-SNS component based on
SDK v2, Fixed CS
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 <an...@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() {