diff --git a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Producer.java b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Producer.java index d9194ee7e5613..3442f855efa3c 100644 --- a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Producer.java +++ b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Producer.java @@ -633,6 +633,10 @@ private void listExecutions(SfnClient sfnClient, Exchange exchange) throws Inval } } else { ListExecutionsRequest.Builder builder = ListExecutionsRequest.builder(); + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(StepFunctions2Constants.STATE_MACHINE_ARN))) { + String stateMachineArn = exchange.getIn().getHeader(StepFunctions2Constants.STATE_MACHINE_ARN, String.class); + builder.stateMachineArn(stateMachineArn); + } if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(StepFunctions2Constants.EXECUTIONS_MAX_RESULTS))) { int maxRes = exchange.getIn().getHeader(StepFunctions2Constants.EXECUTIONS_MAX_RESULTS, Integer.class); builder.maxResults(maxRes); diff --git a/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/AmazonStepFunctionsClientMock.java b/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/AmazonStepFunctionsClientMock.java index 3e07a0d8186d4..ed3f27d955ad7 100644 --- a/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/AmazonStepFunctionsClientMock.java +++ b/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/AmazonStepFunctionsClientMock.java @@ -25,9 +25,18 @@ public class AmazonStepFunctionsClientMock implements SfnClient { + private ListExecutionsRequest lastListExecutionsRequest; + public AmazonStepFunctionsClientMock() { } + /** + * The last request passed to {@link #listExecutions}, so tests can assert how it was built. + */ + public ListExecutionsRequest getLastListExecutionsRequest() { + return lastListExecutionsRequest; + } + @Override public CreateActivityResponse createActivity(CreateActivityRequest createActivityRequest) { CreateActivityResponse.Builder result = CreateActivityResponse.builder(); @@ -102,6 +111,7 @@ public ListActivitiesResponse listActivities(ListActivitiesRequest listActivitie @Override public ListExecutionsResponse listExecutions(ListExecutionsRequest listExecutionsRequest) { + this.lastListExecutionsRequest = listExecutionsRequest; ListExecutionsResponse.Builder result = ListExecutionsResponse.builder(); List executionListItems = new ArrayList<>(); executionListItems.add(ExecutionListItem.builder().executionArn("aws:sfn-execution::test-arn").build()); diff --git a/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2ProducerTest.java b/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2ProducerTest.java index 4e2872568935a..7dc58171855f4 100644 --- a/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2ProducerTest.java +++ b/components/camel-aws/camel-aws2-step-functions/src/test/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2ProducerTest.java @@ -308,6 +308,7 @@ public void sfnListExecutionsTest() throws Exception { @Override public void process(Exchange exchange) { exchange.getIn().setHeader(StepFunctions2Constants.OPERATION, StepFunctions2Operations.listExecutions); + exchange.getIn().setHeader(StepFunctions2Constants.STATE_MACHINE_ARN, "aws:sfn::test-state-machine"); } }); @@ -316,6 +317,8 @@ public void process(Exchange exchange) { ListExecutionsResponse resultGet = (ListExecutionsResponse) exchange.getIn().getBody(); assertEquals(1, resultGet.executions().size()); assertEquals("aws:sfn-execution::test-arn", resultGet.executions().get(0).executionArn()); + // ListExecutions requires the state machine ARN; it must be taken from the header. + assertEquals("aws:sfn::test-state-machine", clientMock.getLastListExecutionsRequest().stateMachineArn()); } @Test