public CompletableFuture registerThing()

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;
    }