protected abstract ProgressEvent handleRequest()

in aws-sns-topicpolicy/src/main/java/software/amazon/sns/topicpolicy/BaseHandlerStd.java [49:99]


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

    /**
     * Invocation of doCreate calls setTopicAttributes to set topic-policy on a given topic ARN.
     *
     * @param proxy
     *            {@link AmazonWebServicesClientProxy} to initiate proxy chain
     * @param proxyClient
     *            the aws service client {@link ProxyClient} to make the call
     * @param request
     *            {@link ResourceHandlerRequest}
     * @param progress
     *            {@link ProgressEvent} to place hold the current progress data
     * @param action
     *             Action Performed by the Resource Handler (CREATE / UPDATE)
     * @param handler
     *            The handler invoking doCreate
     * @param logger
     *             {@link Logger}
     * @return {@link ProgressEvent}
     */
    protected ProgressEvent<ResourceModel, CallbackContext> doCreate(
            final AmazonWebServicesClientProxy proxy,
            final ProxyClient<SnsClient> proxyClient,
            final ResourceHandlerRequest<ResourceModel> request,
            ProgressEvent<ResourceModel, CallbackContext> progress,
            final String action,
            final String handler,
            final Logger logger) {
        final ResourceModel model = request.getDesiredResourceState();
        final CallbackContext callbackContext = progress.getCallbackContext();
        final String policy = getPolicyDocument(request);
        List<String> topics = model.getTopics();
        for (final String topicArn : topics) {
            final ProgressEvent<ResourceModel, CallbackContext> progressEvent = proxy
                    .initiate(handler + topicArn.hashCode(), proxyClient, model, callbackContext)
                    .translateToServiceRequest((resourceModel) -> Translator.translateToRequest(topicArn, policy))
                    .makeServiceCall(
                            (topicRequest, snsClient) -> invokeSetTopicAttributes(topicRequest, snsClient, action, logger))
                    .success();
            if (!progressEvent.isSuccess()) {
                return progressEvent;
            }
        }
        return ProgressEvent.progress(model, callbackContext);
    }