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