package software.amazon.opensearchserverless.accesspolicy; import software.amazon.awssdk.services.opensearchserverless.OpenSearchServerlessClient; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.ProgressEvent; import software.amazon.cloudformation.proxy.ProxyClient; import software.amazon.cloudformation.proxy.ResourceHandlerRequest; public abstract class BaseHandlerStd extends BaseHandler { private final OpenSearchServerlessClient openSearchServerlessClient; protected BaseHandlerStd() { this(ClientBuilder.getClient()); } protected BaseHandlerStd(OpenSearchServerlessClient openSearchServerlessClient ) { this.openSearchServerlessClient = openSearchServerlessClient; } protected OpenSearchServerlessClient getOpenSearchServerlessClient() { return openSearchServerlessClient; } @Override public final ProgressEvent handleRequest( final AmazonWebServicesClientProxy proxy, final ResourceHandlerRequest request, final CallbackContext callbackContext, final Logger logger) { return handleRequest( proxy, request, callbackContext != null ? callbackContext : new CallbackContext(), proxy.newProxy(this::getOpenSearchServerlessClient), logger); } protected abstract ProgressEvent handleRequest( final AmazonWebServicesClientProxy proxy, final ResourceHandlerRequest request, final CallbackContext callbackContext, final ProxyClient proxyClient, final Logger logger); }