From a2a6bff8800e25f7dd47877846309b8a8f75d363 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 20 Jul 2026 14:54:14 +0200 Subject: [PATCH] CAMEL-24200: camel-aws2-timestream - createScheduledQuery sets the time column correctly (#24909) Time-column header now sets timeColumn instead of overwriting tableName; removes a duplicated role-ARN block. Co-authored-by: Claude Fable 5 --- .../timestream/query/Timestream2QueryProducer.java | 7 +------ .../query/AmazonTimestreamQueryClientMock.java | 10 ++++++++++ .../timestream/query/Timestream2QueryProducerTest.java | 7 +++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryProducer.java b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryProducer.java index 0ae079fa1667a..83496d74f6b5b 100644 --- a/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryProducer.java +++ b/components/camel-aws/camel-aws2-timestream/src/main/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryProducer.java @@ -199,11 +199,6 @@ private void createScheduledQuery(TimestreamQueryClient timestreamQueryClient, E = ErrorReportConfiguration.builder().s3Configuration(s3Configuration.build()).build(); builder.errorReportConfiguration(errorReportConfiguration); } - if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(Timestream2Constants.SCHEDULED_QUERY_EXECUTION_ROLE_ARN))) { - String roleArn - = exchange.getIn().getHeader(Timestream2Constants.SCHEDULED_QUERY_EXECUTION_ROLE_ARN, String.class); - builder.scheduledQueryExecutionRoleArn(roleArn); - } TargetConfiguration.Builder targetConfiguration = TargetConfiguration.builder(); TimestreamConfiguration.Builder timestreamConfigBuilder = TimestreamConfiguration.builder(); @@ -217,7 +212,7 @@ private void createScheduledQuery(TimestreamQueryClient timestreamQueryClient, E } if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(Timestream2Constants.TIME_COLUMN))) { String timeColumn = exchange.getIn().getHeader(Timestream2Constants.TIME_COLUMN, String.class); - timestreamConfigBuilder.tableName(timeColumn); + timestreamConfigBuilder.timeColumn(timeColumn); } if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(Timestream2Constants.MEASURE_NAME_COLUMN))) { String measureNameColumn = exchange.getIn().getHeader(Timestream2Constants.MEASURE_NAME_COLUMN, String.class); diff --git a/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/query/AmazonTimestreamQueryClientMock.java b/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/query/AmazonTimestreamQueryClientMock.java index 3cf54c21fae54..f3f39e9ebaa35 100644 --- a/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/query/AmazonTimestreamQueryClientMock.java +++ b/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/query/AmazonTimestreamQueryClientMock.java @@ -24,9 +24,18 @@ public class AmazonTimestreamQueryClientMock implements TimestreamQueryClient { + private CreateScheduledQueryRequest lastCreateScheduledQueryRequest; + public AmazonTimestreamQueryClientMock() { } + /** + * The last request passed to {@link #createScheduledQuery}, so tests can assert how it was built. + */ + public CreateScheduledQueryRequest getLastCreateScheduledQueryRequest() { + return lastCreateScheduledQueryRequest; + } + @Override public DescribeEndpointsResponse describeEndpoints(DescribeEndpointsRequest describeEndpointsRequest) { DescribeEndpointsResponse.Builder result = DescribeEndpointsResponse.builder(); @@ -47,6 +56,7 @@ public CancelQueryResponse cancelQuery(CancelQueryRequest cancelQueryRequest) { @Override public CreateScheduledQueryResponse createScheduledQuery(CreateScheduledQueryRequest createScheduledQueryRequest) { + this.lastCreateScheduledQueryRequest = createScheduledQueryRequest; CreateScheduledQueryResponse.Builder result = CreateScheduledQueryResponse.builder(); result.arn("aws-timestream:test:scheduled-query:arn"); return result.build(); diff --git a/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryProducerTest.java b/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryProducerTest.java index 846df528395c7..31018bfeacbb5 100644 --- a/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryProducerTest.java +++ b/components/camel-aws/camel-aws2-timestream/src/test/java/org/apache/camel/component/aws2/timestream/query/Timestream2QueryProducerTest.java @@ -107,6 +107,13 @@ public void process(Exchange exchange) { CreateScheduledQueryResponse resultGet = (CreateScheduledQueryResponse) exchange.getIn().getBody(); assertEquals("aws-timestream:test:scheduled-query:arn", resultGet.arn()); + + // The time-column header must land in timeColumn and must not overwrite the table name. + TimestreamConfiguration timestreamConfiguration + = clientMock.getLastCreateScheduledQueryRequest().targetConfiguration().timestreamConfiguration(); + assertEquals("TESTDB", timestreamConfiguration.databaseName()); + assertEquals("TESTTABLE", timestreamConfiguration.tableName()); + assertEquals("time", timestreamConfiguration.timeColumn()); } @Test