in sdk/src/main/java/software/amazon/awssdk/iot/iotidentity/IotIdentityV2Client.java [196:242]
public CompletableFuture<RegisterThingResponse> registerThing(RegisterThingRequest request) {
V2ClientFuture<RegisterThingResponse> responseFuture = new V2ClientFuture<>();
try {
if (request.templateName == null) {
throw new CrtRuntimeException("RegisterThingRequest.templateName cannot be null");
}
RequestResponseOperation.RequestResponseOperationBuilder builder = RequestResponseOperation.builder();
// Publish Topic
String publishTopic = "$aws/provisioning-templates/{templateName}/provision/json";
publishTopic = publishTopic.replace("{templateName}", request.templateName);
builder.withPublishTopic(publishTopic);
// Payload
String payloadJson = gson.toJson(request);
builder.withPayload(payloadJson.getBytes(StandardCharsets.UTF_8));
// Subscriptions
String subscription0 = "$aws/provisioning-templates/{templateName}/provision/json/accepted";
subscription0 = subscription0.replace("{templateName}", request.templateName);
builder.withSubscription(subscription0);
String subscription1 = "$aws/provisioning-templates/{templateName}/provision/json/rejected";
subscription1 = subscription1.replace("{templateName}", request.templateName);
builder.withSubscription(subscription1);
// Response paths
ResponsePath.ResponsePathBuilder pathBuilder1 = ResponsePath.builder();
String responseTopic1 = publishTopic + "/accepted";
pathBuilder1.withResponseTopic(publishTopic + "/accepted");
builder.withResponsePath(pathBuilder1.build());
ResponsePath.ResponsePathBuilder pathBuilder2 = ResponsePath.builder();
String responseTopic2 = publishTopic + "/rejected";
pathBuilder2.withResponseTopic(publishTopic + "/rejected");
builder.withResponsePath(pathBuilder2.build());
// Submit
submitOperation(responseFuture, builder.build(), responseTopic1, RegisterThingResponse.class, responseTopic2, V2ErrorResponse.class, IotIdentityV2Client::createV2ErrorResponseException);
} catch (Exception e) {
responseFuture.completeExceptionally(createV2ErrorResponseException(e.getMessage(), null));
}
return responseFuture;
}