private RemoveApplicationInstanceResponse deleteApplicationInstance()

in aws-panorama-applicationinstance/src/main/java/software/amazon/panorama/applicationinstance/DeleteHandler.java [80:117]


    private RemoveApplicationInstanceResponse deleteApplicationInstance(
            final RemoveApplicationInstanceRequest removeApplicationInstanceRequest,
            final ProxyClient<PanoramaClient> proxyClient
    ) {
        RemoveApplicationInstanceResponse removeApplicationInstanceResponse;
        try {
            removeApplicationInstanceResponse = proxyClient.injectCredentialsAndInvokeV2(
                    removeApplicationInstanceRequest, proxyClient.client()::removeApplicationInstance);
        }
        catch (final PanoramaException e){
            if (e instanceof ConflictException) {
                // removing an application instance in "Removal_Success" status will throw ConflictException, we need extra handling here
                DescribeApplicationInstanceRequest describeApplicationInstanceRequest = DescribeApplicationInstanceRequest.builder()
                        .applicationInstanceId(removeApplicationInstanceRequest.applicationInstanceId())
                        .build();
                DescribeApplicationInstanceResponse describeApplicationInstanceResponse = proxyClient.injectCredentialsAndInvokeV2(describeApplicationInstanceRequest, proxyClient.client()::describeApplicationInstance);
                ApplicationInstanceStatus applicationInstanceStatus = describeApplicationInstanceResponse.status();
                if (applicationInstanceStatus.equals(ApplicationInstanceStatus.REMOVAL_SUCCEEDED)) {
                    logger.info("ApplicationInstanceStatus.REMOVAL_SUCCEEDED!  throw CfnNotFoundException");
                    throw new CfnNotFoundException(ResourceModel.TYPE_NAME, removeApplicationInstanceRequest.applicationInstanceId(), e);
                }
            }
            logger.error(String.format("Exception happened when removing ApplicationInstance. ApplicationInstanceId: %s",
                    removeApplicationInstanceRequest.applicationInstanceId()));
            throw PanoramaExceptionTranslator.translateForAPIException(e,
                    "RemoveApplicationInstance",
                    ResourceModel.TYPE_NAME,
                    removeApplicationInstanceRequest.applicationInstanceId(),
                    removeApplicationInstanceRequest.toString());
        }  catch (final AwsServiceException e) {
            logger.error(String.format("Exception happened when removing ApplicationInstance. ApplicationInstanceId: %s",
                    removeApplicationInstanceRequest.applicationInstanceId()));
            throw new CfnGeneralServiceException("RemoveApplicationInstance", e);
        }

        logger.info(String.format("%s successfully removed with ApplicationInstanceId: %s.", ResourceModel.TYPE_NAME, removeApplicationInstanceRequest.applicationInstanceId()));
        return removeApplicationInstanceResponse;
    }