protected abstract ProgressEvent handleRequest()

in aws-ec2-enclavecertificateiamroleassociation/src/main/java/software/amazon/ec2/enclavecertificateiamroleassociation/BaseHandlerStd.java [45:99]


    protected abstract ProgressEvent<ResourceModel, CallbackContext> handleRequest(final AmazonWebServicesClientProxy proxy,
                                                                                   final ResourceHandlerRequest<ResourceModel> request,
                                                                                   final CallbackContext callbackContext,
                                                                                   final ProxyClient<Ec2Client> proxyClient,
                                                                                   final Logger logger);

    protected ProgressEvent<ResourceModel, CallbackContext> handleException(final Throwable e,
                                                                            final Logger logger) {
        logger.log(String.format("Error during operation: %s, Error message: %s",
                this.getClass().getSimpleName(),
                e.getMessage()));
        logger.log(Arrays.toString(e.getStackTrace()));

        if (e instanceof AwsServiceException) {
            final String errorCode = ((AwsServiceException) e).awsErrorDetails().errorCode();

            switch (errorCode) {
                case ERROR_CODE_CERTIFICATE_TOO_MANY_ASSOCIATED_ROLES:
                    return ProgressEvent.defaultFailureHandler(new CfnServiceLimitExceededException(e),
                            HandlerErrorCode.ServiceLimitExceeded);
                case ERROR_CODE_CERTIFICATE_ARN_MALFORMED:
                case ERROR_CODE_CERTIFICATE_ARN_NOT_FOUND:
                case ERROR_CODE_ROLE_ARN_MALFORMED:
                case ERROR_CODE_ROLE_ARN_NOT_FOUND:
                    return ProgressEvent.defaultFailureHandler(new CfnInvalidRequestException(e),
                            HandlerErrorCode.InvalidRequest);
                case ERROR_CODE_SERVER_INTERNAL:
                    return ProgressEvent.defaultFailureHandler(new CfnInternalFailureException(e),
                            HandlerErrorCode.InternalFailure);
                case ERROR_CODE_SERVICE_UNAVAILABLE:
                    return ProgressEvent.defaultFailureHandler(new CfnServiceInternalErrorException(e),
                            HandlerErrorCode.ServiceInternalError);
                case ERROR_CODE_UNAUTHORIZED_OPERATION:
                    return ProgressEvent.defaultFailureHandler(new CfnAccessDeniedException(e),
                            HandlerErrorCode.AccessDenied);
            }

            // For all the exceptions not captured by error code above
            final int statusCode = ((AwsServiceException) e).statusCode();
            if (statusCode >= 400 && statusCode < 500) {
                return ProgressEvent.defaultFailureHandler(new CfnInvalidRequestException(e),
                        HandlerErrorCode.InvalidRequest);
            } else if (statusCode >= 500 && statusCode < 600) {
                return ProgressEvent.defaultFailureHandler(new CfnServiceInternalErrorException(e),
                        HandlerErrorCode.ServiceInternalError);
            }

        } else if (e instanceof CfnInvalidRequestException) {
            return ProgressEvent.defaultFailureHandler(new CfnInvalidRequestException(e),
                    HandlerErrorCode.InvalidRequest);
        }

        return ProgressEvent.defaultFailureHandler(new CfnGeneralServiceException(e),
                HandlerErrorCode.GeneralServiceException);
    }