in sdk/src/main/java/software/amazon/awssdk/iot/iotjobs/IotJobsV2Client.java [285:340]
public CompletableFuture<UpdateJobExecutionResponse> updateJobExecution(UpdateJobExecutionRequest request) {
V2ClientFuture<UpdateJobExecutionResponse> responseFuture = new V2ClientFuture<>();
try {
if (request.thingName == null) {
throw new CrtRuntimeException("UpdateJobExecutionRequest.thingName cannot be null");
}
if (request.jobId == null) {
throw new CrtRuntimeException("UpdateJobExecutionRequest.jobId cannot be null");
}
RequestResponseOperation.RequestResponseOperationBuilder builder = RequestResponseOperation.builder();
// Correlation Token
String correlationToken = UUID.randomUUID().toString();
request.clientToken = correlationToken;
builder.withCorrelationToken(correlationToken);
// Publish Topic
String publishTopic = "$aws/things/{thingName}/jobs/{jobId}/update";
publishTopic = publishTopic.replace("{thingName}", request.thingName);
publishTopic = publishTopic.replace("{jobId}", request.jobId);
builder.withPublishTopic(publishTopic);
// Payload
String payloadJson = gson.toJson(request);
builder.withPayload(payloadJson.getBytes(StandardCharsets.UTF_8));
// Subscriptions
String subscription0 = "$aws/things/{thingName}/jobs/{jobId}/update/+";
subscription0 = subscription0.replace("{thingName}", request.thingName);
subscription0 = subscription0.replace("{jobId}", request.jobId);
builder.withSubscription(subscription0);
// Response paths
ResponsePath.ResponsePathBuilder pathBuilder1 = ResponsePath.builder();
String responseTopic1 = publishTopic + "/accepted";
pathBuilder1.withResponseTopic(publishTopic + "/accepted");
pathBuilder1.withCorrelationTokenJsonPath("clientToken");
builder.withResponsePath(pathBuilder1.build());
ResponsePath.ResponsePathBuilder pathBuilder2 = ResponsePath.builder();
String responseTopic2 = publishTopic + "/rejected";
pathBuilder2.withResponseTopic(publishTopic + "/rejected");
pathBuilder2.withCorrelationTokenJsonPath("clientToken");
builder.withResponsePath(pathBuilder2.build());
// Submit
submitOperation(responseFuture, builder.build(), responseTopic1, UpdateJobExecutionResponse.class, responseTopic2, V2ErrorResponse.class, IotJobsV2Client::createV2ErrorResponseException);
} catch (Exception e) {
responseFuture.completeExceptionally(createV2ErrorResponseException(e.getMessage(), null));
}
return responseFuture;
}