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 2018/01/18 15:23:05 UTC

[camel] branch master updated: CAMEL-12158 - Camel-AWS DdbStream: Use a configuration for the options like the other AWS components

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


The following commit(s) were added to refs/heads/master by this push:
     new 8cb4dd7  CAMEL-12158 - Camel-AWS DdbStream: Use a configuration for the options like the other AWS components
8cb4dd7 is described below

commit 8cb4dd7f2c8887e9f6ac3b2569845c445b338db8
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Jan 18 15:48:01 2018 +0100

    CAMEL-12158 - Camel-AWS DdbStream: Use a configuration for the options like the other AWS components
---
 .../aws/ddbstream/DdbStreamComponent.java          | 11 ++-
 ...amEndpoint.java => DdbStreamConfiguration.java} | 80 ++----------------
 .../component/aws/ddbstream/DdbStreamConsumer.java | 12 +--
 .../component/aws/ddbstream/DdbStreamEndpoint.java | 95 ++++------------------
 .../aws/ddbstream/ShardIteratorHandler.java        |  6 +-
 .../aws/ddbstream/DdbStreamConsumerTest.java       | 14 ++--
 .../aws/ddbstream/ShardIteratorHandlerTest.java    | 22 ++---
 .../camel-spring-boot-dependencies/pom.xml         |  2 +-
 8 files changed, 60 insertions(+), 182 deletions(-)

diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamComponent.java
index a0ef0a7..c948e41 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamComponent.java
@@ -39,7 +39,16 @@ public class DdbStreamComponent extends DefaultComponent {
 
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        DdbStreamEndpoint endpoint = new DdbStreamEndpoint(uri, remaining, this);
+        DdbStreamConfiguration configuration = new DdbStreamConfiguration();
+        configuration.setTableName(remaining);
+        setProperties(configuration, parameters);
+        
+        if (remaining == null || remaining.trim().length() == 0) {
+            throw new IllegalArgumentException("Table name must be specified.");
+        }
+        configuration.setTableName(remaining);
+        
+        DdbStreamEndpoint endpoint = new DdbStreamEndpoint(uri, configuration, this);
         return endpoint;
     }
 }
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamEndpoint.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConfiguration.java
similarity index 59%
copy from components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamEndpoint.java
copy to components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConfiguration.java
index fb4adf1..cb195e9 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamEndpoint.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConfiguration.java
@@ -17,26 +17,16 @@
 package org.apache.camel.component.aws.ddbstream;
 
 import com.amazonaws.services.dynamodbv2.AmazonDynamoDBStreams;
-import com.amazonaws.services.dynamodbv2.model.Record;
 import com.amazonaws.services.dynamodbv2.model.ShardIteratorType;
-import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.impl.ScheduledPollEndpoint;
+
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
 import org.apache.camel.spi.UriPath;
 
-/**
- * The aws-ddbstream component is used for working with Amazon DynamoDB Streams.
- */
-@UriEndpoint(firstVersion = "2.17.0", scheme = "aws-ddbstream", title = "AWS DynamoDB Streams",
-        consumerOnly = true, syntax = "aws-ddbstream:tableName",
-        consumerClass = DdbStreamConsumer.class, label = "cloud,messaging,streams")
-public class DdbStreamEndpoint extends ScheduledPollEndpoint {
-
+@UriParams
+public class DdbStreamConfiguration {
+    
     @UriPath(label = "consumer", description = "Name of the dynamodb table")
     @Metadata(required = "true")
     private String tableName;
@@ -61,64 +51,7 @@ public class DdbStreamEndpoint extends ScheduledPollEndpoint {
             + " using one of the two ShardIteratorType.{AT,AFTER}_SEQUENCE_NUMBER"
             + " iterator types. Can be a registry reference or a literal sequence number.")
     private SequenceNumberProvider sequenceNumberProvider;
-
-    public DdbStreamEndpoint(String uri, String tableName, DdbStreamComponent component) {
-        super(uri, component);
-        this.tableName = tableName;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        DdbStreamConsumer consumer = new DdbStreamConsumer(this, processor);
-        consumer.setSchedulerProperties(consumer.getEndpoint().getSchedulerProperties());
-        configureConsumer(consumer);
-        return consumer;
-    }
-
-    Exchange createExchange(Record record) {
-        Exchange ex = super.createExchange();
-        ex.getIn().setBody(record, Record.class);
-
-        return ex;
-    }
-
-    @Override
-    public boolean isSingleton() {
-        return true;
-    }
-
-    public String getSequenceNumber() {
-        switch (getIteratorType()) {
-        case AFTER_SEQUENCE_NUMBER:
-        case AT_SEQUENCE_NUMBER:
-            if (null == getSequenceNumberProvider()) {
-                throw new IllegalStateException("sequenceNumberProvider must be"
-                        + " provided, either as an implementation of"
-                        + " SequenceNumberProvider or a literal String.");
-            } else {
-                return getSequenceNumberProvider().getSequenceNumber();
-            }
-        default:
-            return "";
-        }
-    }
-
-    @Override
-    public String toString() {
-        return "DdbStreamEndpoint{"
-                + "tableName=" + tableName
-                + ", amazonDynamoDbStreamsClient=[redacted], maxResultsPerRequest=" + maxResultsPerRequest
-                + ", iteratorType=" + iteratorType
-                + ", sequenceNumberProvider=" + sequenceNumberProvider
-                + ", uri=" + getEndpointUri()
-                + '}';
-    }
-
+    
     AmazonDynamoDBStreams getClient() {
         return amazonDynamoDbStreamsClient;
     }
@@ -162,4 +95,5 @@ public class DdbStreamEndpoint extends ScheduledPollEndpoint {
     public void setSequenceNumberProvider(SequenceNumberProvider sequenceNumberProvider) {
         this.sequenceNumberProvider = sequenceNumberProvider;
     }
+
 }
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumer.java
index 07a481f..5dc9767 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumer.java
@@ -56,13 +56,13 @@ public class DdbStreamConsumer extends ScheduledBatchPollingConsumer {
         try {
             GetRecordsRequest req = new GetRecordsRequest()
                         .withShardIterator(shardIteratorHandler.getShardIterator(null))
-                        .withLimit(getEndpoint().getMaxResultsPerRequest());
+                        .withLimit(getEndpoint().getConfiguration().getMaxResultsPerRequest());
             result = getClient().getRecords(req);
         } catch (ExpiredIteratorException e) {
             LOG.warn("Expired Shard Iterator, attempting to resume from " + lastSeenSequenceNumber, e);
             GetRecordsRequest req = new GetRecordsRequest()
                         .withShardIterator(shardIteratorHandler.getShardIterator(lastSeenSequenceNumber))
-                        .withLimit(getEndpoint().getMaxResultsPerRequest());
+                        .withLimit(getEndpoint().getConfiguration().getMaxResultsPerRequest());
             result = getClient().getRecords(req);
         }
         List<Record> records = result.getRecords();
@@ -97,7 +97,7 @@ public class DdbStreamConsumer extends ScheduledBatchPollingConsumer {
     }
 
     private AmazonDynamoDBStreams getClient() {
-        return getEndpoint().getClient();
+        return getEndpoint().getConfiguration().getClient();
     }
 
     @Override
@@ -113,14 +113,14 @@ public class DdbStreamConsumer extends ScheduledBatchPollingConsumer {
             providedSeqNum = new BigInteger(lastSeenSequenceNumber);
             condition = BigIntComparisons.Conditions.LT;
         }
-        switch(getEndpoint().getIteratorType()) {
+        switch(getEndpoint().getConfiguration().getIteratorType()) {
         case AFTER_SEQUENCE_NUMBER:
             condition = BigIntComparisons.Conditions.LT;
-            providedSeqNum = new BigInteger(getEndpoint().getSequenceNumberProvider().getSequenceNumber());
+            providedSeqNum = new BigInteger(getEndpoint().getConfiguration().getSequenceNumberProvider().getSequenceNumber());
             break;
         case AT_SEQUENCE_NUMBER:
             condition = BigIntComparisons.Conditions.LTEQ;
-            providedSeqNum = new BigInteger(getEndpoint().getSequenceNumberProvider().getSequenceNumber());
+            providedSeqNum = new BigInteger(getEndpoint().getConfiguration().getSequenceNumberProvider().getSequenceNumber());
             break;
         default:
         }
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamEndpoint.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamEndpoint.java
index fb4adf1..5c9b985 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamEndpoint.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamEndpoint.java
@@ -16,15 +16,12 @@
  */
 package org.apache.camel.component.aws.ddbstream;
 
-import com.amazonaws.services.dynamodbv2.AmazonDynamoDBStreams;
 import com.amazonaws.services.dynamodbv2.model.Record;
-import com.amazonaws.services.dynamodbv2.model.ShardIteratorType;
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.impl.ScheduledPollEndpoint;
-import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
@@ -37,34 +34,12 @@ import org.apache.camel.spi.UriPath;
         consumerClass = DdbStreamConsumer.class, label = "cloud,messaging,streams")
 public class DdbStreamEndpoint extends ScheduledPollEndpoint {
 
-    @UriPath(label = "consumer", description = "Name of the dynamodb table")
-    @Metadata(required = "true")
-    private String tableName;
+    @UriParam
+    DdbStreamConfiguration configuration;
 
-    // For now, always assume that we've been supplied a client in the Camel registry.
-    @UriParam(label = "consumer", description = "Amazon DynamoDB client to use for all requests for this endpoint")
-    @Metadata(required = "true")
-    private AmazonDynamoDBStreams amazonDynamoDbStreamsClient;
-
-    @UriParam(label = "consumer", description = "Maximum number of records that will be fetched in each poll")
-    private int maxResultsPerRequest = 100;
-
-    @UriParam(label = "consumer", description = "Defines where in the DynaboDB stream"
-            + " to start getting records. Note that using TRIM_HORIZON can cause a"
-            + " significant delay before the stream has caught up to real-time."
-            + " if {AT,AFTER}_SEQUENCE_NUMBER are used, then a sequenceNumberProvider"
-            + " MUST be supplied.",
-            defaultValue = "LATEST")
-    private ShardIteratorType iteratorType = ShardIteratorType.LATEST;
-
-    @UriParam(label = "consumer", description = "Provider for the sequence number when"
-            + " using one of the two ShardIteratorType.{AT,AFTER}_SEQUENCE_NUMBER"
-            + " iterator types. Can be a registry reference or a literal sequence number.")
-    private SequenceNumberProvider sequenceNumberProvider;
-
-    public DdbStreamEndpoint(String uri, String tableName, DdbStreamComponent component) {
+    public DdbStreamEndpoint(String uri, DdbStreamConfiguration configuration, DdbStreamComponent component) {
         super(uri, component);
-        this.tableName = tableName;
+        this.configuration = configuration;
     }
 
     @Override
@@ -92,16 +67,20 @@ public class DdbStreamEndpoint extends ScheduledPollEndpoint {
         return true;
     }
 
+    public DdbStreamConfiguration getConfiguration() {
+        return configuration;
+    }
+
     public String getSequenceNumber() {
-        switch (getIteratorType()) {
+        switch (configuration.getIteratorType()) {
         case AFTER_SEQUENCE_NUMBER:
         case AT_SEQUENCE_NUMBER:
-            if (null == getSequenceNumberProvider()) {
+            if (null == configuration.getSequenceNumberProvider()) {
                 throw new IllegalStateException("sequenceNumberProvider must be"
                         + " provided, either as an implementation of"
                         + " SequenceNumberProvider or a literal String.");
             } else {
-                return getSequenceNumberProvider().getSequenceNumber();
+                return configuration.getSequenceNumberProvider().getSequenceNumber();
             }
         default:
             return "";
@@ -111,55 +90,11 @@ public class DdbStreamEndpoint extends ScheduledPollEndpoint {
     @Override
     public String toString() {
         return "DdbStreamEndpoint{"
-                + "tableName=" + tableName
-                + ", amazonDynamoDbStreamsClient=[redacted], maxResultsPerRequest=" + maxResultsPerRequest
-                + ", iteratorType=" + iteratorType
-                + ", sequenceNumberProvider=" + sequenceNumberProvider
+                + "tableName=" + configuration.getTableName()
+                + ", amazonDynamoDbStreamsClient=[redacted], maxResultsPerRequest=" + configuration.getMaxResultsPerRequest()
+                + ", iteratorType=" + configuration.getIteratorType()
+                + ", sequenceNumberProvider=" + configuration.getSequenceNumberProvider()
                 + ", uri=" + getEndpointUri()
                 + '}';
     }
-
-    AmazonDynamoDBStreams getClient() {
-        return amazonDynamoDbStreamsClient;
-    }
-
-    public AmazonDynamoDBStreams getAmazonDynamoDBStreamsClient() {
-        return amazonDynamoDbStreamsClient;
-    }
-
-    public void setAmazonDynamoDbStreamsClient(AmazonDynamoDBStreams amazonDynamoDbStreamsClient) {
-        this.amazonDynamoDbStreamsClient = amazonDynamoDbStreamsClient;
-    }
-
-    public int getMaxResultsPerRequest() {
-        return maxResultsPerRequest;
-    }
-
-    public void setMaxResultsPerRequest(int maxResultsPerRequest) {
-        this.maxResultsPerRequest = maxResultsPerRequest;
-    }
-
-    public String getTableName() {
-        return tableName;
-    }
-
-    public void setTableName(String tableName) {
-        this.tableName = tableName;
-    }
-
-    public ShardIteratorType getIteratorType() {
-        return iteratorType;
-    }
-
-    public void setIteratorType(ShardIteratorType iteratorType) {
-        this.iteratorType = iteratorType;
-    }
-
-    public SequenceNumberProvider getSequenceNumberProvider() {
-        return sequenceNumberProvider;
-    }
-
-    public void setSequenceNumberProvider(SequenceNumberProvider sequenceNumberProvider) {
-        this.sequenceNumberProvider = sequenceNumberProvider;
-    }
 }
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/ShardIteratorHandler.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/ShardIteratorHandler.java
index de6d242..94e4c06 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/ShardIteratorHandler.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/ShardIteratorHandler.java
@@ -44,7 +44,7 @@ class ShardIteratorHandler {
     }
 
     String getShardIterator(String resumeFromSequenceNumber) {
-        ShardIteratorType iteratorType = getEndpoint().getIteratorType();
+        ShardIteratorType iteratorType = getEndpoint().getConfiguration().getIteratorType();
         String sequenceNumber = getEndpoint().getSequenceNumber();
         if (resumeFromSequenceNumber != null) {
             // Reset things as we're in an error condition.
@@ -56,7 +56,7 @@ class ShardIteratorHandler {
         // either return a cached one or get a new one via a GetShardIterator request.
         if (currentShardIterator == null) {
             ListStreamsResult streamsListResult = getClient().listStreams(
-                    new ListStreamsRequest().withTableName(getEndpoint().getTableName())
+                    new ListStreamsRequest().withTableName(getEndpoint().getConfiguration().getTableName())
             );
             final String streamArn = streamsListResult.getStreams().get(0).getStreamArn(); // XXX assumes there is only one stream
             DescribeStreamResult streamDescriptionResult = getClient().describeStream(
@@ -136,6 +136,6 @@ class ShardIteratorHandler {
     }
    
     private AmazonDynamoDBStreams getClient() {
-        return getEndpoint().getClient();
+        return getEndpoint().getConfiguration().getClient();
     }
 }
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumerTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumerTest.java
index 051b53a..0da7f4c 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumerTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumerTest.java
@@ -67,12 +67,12 @@ public class DdbStreamConsumerTest {
 
     private final CamelContext context = new DefaultCamelContext();
     private final DdbStreamComponent component = new DdbStreamComponent(context);
-    private final DdbStreamEndpoint endpoint = new DdbStreamEndpoint(null, "table_name", component);
+    private final DdbStreamEndpoint endpoint = new DdbStreamEndpoint(null, new DdbStreamConfiguration(), component);
     private GetRecordsAnswer recordsAnswer;
 
     @Before
     public void setup() throws Exception {
-        endpoint.setAmazonDynamoDbStreamsClient(amazonDynamoDBStreams);
+        endpoint.getConfiguration().setAmazonDynamoDbStreamsClient(amazonDynamoDBStreams);
 
         undertest = new DdbStreamConsumer(endpoint, processor, shardIteratorHandler);
 
@@ -107,7 +107,7 @@ public class DdbStreamConsumerTest {
 
     @Test
     public void itResumesFromAfterTheLastSeenSequenceNumberWhenAShardIteratorHasExpired() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.LATEST);
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.LATEST);
         when(shardIteratorHandler.getShardIterator(ArgumentMatchers.isNull())).thenReturn("shard_iterator_b_000", "shard_iterator_b_001");
         when(shardIteratorHandler.getShardIterator(ArgumentMatchers.anyString())).thenReturn("shard_iterator_b_001");
         when(amazonDynamoDBStreams.getRecords(any(GetRecordsRequest.class)))
@@ -129,8 +129,8 @@ public class DdbStreamConsumerTest {
 
     @Test
     public void atSeqNumber35GivesFirstRecordWithSeq35() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.AT_SEQUENCE_NUMBER);
-        endpoint.setSequenceNumberProvider(new StaticSequenceNumberProvider("35"));
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.AT_SEQUENCE_NUMBER);
+        endpoint.getConfiguration().setSequenceNumberProvider(new StaticSequenceNumberProvider("35"));
         when(shardIteratorHandler.getShardIterator(ArgumentMatchers.isNull())).thenReturn("shard_iterator_d_001", "shard_iterator_d_002");
 
         for (int i = 0; i < 10; ++i) { // poll lots.
@@ -146,8 +146,8 @@ public class DdbStreamConsumerTest {
 
     @Test
     public void afterSeqNumber35GivesFirstRecordWithSeq40() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.AFTER_SEQUENCE_NUMBER);
-        endpoint.setSequenceNumberProvider(new StaticSequenceNumberProvider("35"));
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.AFTER_SEQUENCE_NUMBER);
+        endpoint.getConfiguration().setSequenceNumberProvider(new StaticSequenceNumberProvider("35"));
         when(shardIteratorHandler.getShardIterator(ArgumentMatchers.isNull())).thenReturn("shard_iterator_d_001", "shard_iterator_d_002");
 
         for (int i = 0; i < 10; ++i) { // poll lots.
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ddbstream/ShardIteratorHandlerTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ddbstream/ShardIteratorHandlerTest.java
index e247990..b76b283 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ddbstream/ShardIteratorHandlerTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ddbstream/ShardIteratorHandlerTest.java
@@ -50,11 +50,11 @@ public class ShardIteratorHandlerTest {
     private AmazonDynamoDBStreams amazonDynamoDBStreams;
     private final CamelContext context = new DefaultCamelContext();
     private final DdbStreamComponent component = new DdbStreamComponent(context);
-    private final DdbStreamEndpoint endpoint = new DdbStreamEndpoint(null, "table_name", component);
+    private final DdbStreamEndpoint endpoint = new DdbStreamEndpoint(null, new DdbStreamConfiguration(), component);
 
     @Before
     public void setup() throws Exception {
-        endpoint.setAmazonDynamoDbStreamsClient(amazonDynamoDBStreams);
+        endpoint.getConfiguration().setAmazonDynamoDbStreamsClient(amazonDynamoDBStreams);
         undertest = new ShardIteratorHandler(endpoint);
 
         when(amazonDynamoDBStreams.listStreams(any(ListStreamsRequest.class))).thenReturn(
@@ -93,7 +93,7 @@ public class ShardIteratorHandlerTest {
 
     @Test
     public void latestOnlyUsesTheLastShard() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.LATEST);
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.LATEST);
 
         String shardIterator = undertest.getShardIterator(null);
 
@@ -105,7 +105,7 @@ public class ShardIteratorHandlerTest {
 
     @Test
     public void cachesRecentShardId() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.LATEST);
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.LATEST);
 
         undertest.updateShardIterator("bar");
         String shardIterator = undertest.getShardIterator(null);
@@ -116,7 +116,7 @@ public class ShardIteratorHandlerTest {
 
     @Test
     public void trimHorizonStartsWithTheFirstShard() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.TRIM_HORIZON);
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.TRIM_HORIZON);
 
         String shardIterator = undertest.getShardIterator(null);
 
@@ -128,7 +128,7 @@ public class ShardIteratorHandlerTest {
 
     @Test
     public void trimHorizonWalksAllShards() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.TRIM_HORIZON);
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.TRIM_HORIZON);
 
         String[] shardIterators = new String[4];
 
@@ -149,8 +149,8 @@ public class ShardIteratorHandlerTest {
 
     @Test
     public void atSeqNumber12StartsWithShardB() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.AT_SEQUENCE_NUMBER);
-        endpoint.setSequenceNumberProvider(new StaticSequenceNumberProvider("12"));
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.AT_SEQUENCE_NUMBER);
+        endpoint.getConfiguration().setSequenceNumberProvider(new StaticSequenceNumberProvider("12"));
 
         String shardIterator = undertest.getShardIterator(null);
 
@@ -162,8 +162,8 @@ public class ShardIteratorHandlerTest {
 
     @Test
     public void afterSeqNumber16StartsWithShardD() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.AFTER_SEQUENCE_NUMBER);
-        endpoint.setSequenceNumberProvider(new StaticSequenceNumberProvider("16"));
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.AFTER_SEQUENCE_NUMBER);
+        endpoint.getConfiguration().setSequenceNumberProvider(new StaticSequenceNumberProvider("16"));
 
         String shardIterator = undertest.getShardIterator(null);
 
@@ -175,7 +175,7 @@ public class ShardIteratorHandlerTest {
 
     @Test
     public void resumingFromSomewhereActuallyUsesTheAfterSequenceNumber() throws Exception {
-        endpoint.setIteratorType(ShardIteratorType.LATEST);
+        endpoint.getConfiguration().setIteratorType(ShardIteratorType.LATEST);
 
         String shardIterator = undertest.getShardIterator("12");
 
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index 7fba780..e601887 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -3187,7 +3187,7 @@
       <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpcore-nio</artifactId>
-        <version>4.4.8</version>
+        <version>4.4.9</version>
       </dependency>
       <dependency>
         <groupId>org.apache.kafka</groupId>

-- 
To stop receiving notification emails like this one, please contact
['"commits@camel.apache.org" <co...@camel.apache.org>'].