protected ProgressEvent handleRequest()

in aws-panorama-packageversion/src/main/java/software/amazon/panorama/packageversion/ReadHandler.java [19:56]


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

        this.logger = new LoggerWrapper(logger);

        final ResourceModel model = request.getDesiredResourceState();
        final DescribePackageVersionRequest describePackageVersionRequest = Translator.translateToReadRequest(model);
        DescribePackageVersionResponse describePackageVersionResponse;
        try {
            describePackageVersionResponse = proxyClient.injectCredentialsAndInvokeV2(
                    describePackageVersionRequest, proxyClient.client()::describePackageVersion);
        } catch (final PanoramaException e) {
            this.logger.error(String.format("API Exception is thrown from Panorama service. PackageId: %s, PackageVersion: %s, PatchVersion: %s. Request: %s",
                    model.getPackageId(), model.getPackageVersion(), model.getPatchVersion(), request.toString()));

            throw PanoramaExceptionTranslator.translateForAPIException(e,
                    OPERATION,
                    ResourceModel.TYPE_NAME,
                    String.format("%s-%s-%s", describePackageVersionRequest.packageId(), describePackageVersionRequest.packageVersion(), describePackageVersionRequest.patchVersion()),
                    describePackageVersionRequest.toString());
        } catch (final AwsServiceException e) {
            /*
             * While the handler contract states that the handler must always return a progress event,
             * you may throw any instance of BaseHandlerException, as the wrapper map it to a progress event.
             * Each BaseHandlerException maps to a specific error code, and you should map service exceptions as closely as possible
             * to more specific error codes
             */
            this.logger.error(String.format("Exception happened when reading PackageVersion. PackageId: %s, PackageVersion: %s, PatchVersion: %s. Request: %s",
                    model.getPackageId(), model.getPackageVersion(), model.getPatchVersion(), request.toString()));
            throw new CfnGeneralServiceException("DescribePackageVersion", e);
        }

        return ProgressEvent.defaultSuccessHandler(Translator.translateFromReadResponse(describePackageVersionResponse));
    }