package software.amazon.amplifyuibuilder.component; import software.amazon.amplifyuibuilder.common.ClientWrapper; import software.amazon.awssdk.services.amplifyuibuilder.AmplifyUiBuilderClient; import software.amazon.awssdk.services.amplifyuibuilder.model.GetComponentResponse; 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 class ReadHandler extends BaseHandlerStd { private Logger logger; protected ProgressEvent<ResourceModel, CallbackContext> handleRequest( final AmazonWebServicesClientProxy proxy, final ResourceHandlerRequest<ResourceModel> request, final CallbackContext callbackContext, final ProxyClient<AmplifyUiBuilderClient> proxyClient, final Logger logger ) { this.logger = logger; ResourceModel model = request.getDesiredResourceState(); return proxy.initiate("AWS-AmplifyUIBuilder-Component::Read", proxyClient, model, callbackContext) .translateToServiceRequest(Translator::translateToReadRequest) .makeServiceCall((getComponentRequest, proxyInvocation) -> { GetComponentResponse response = (GetComponentResponse) ClientWrapper.execute( proxy, getComponentRequest, proxyInvocation.client()::getComponent, ResourceModel.TYPE_NAME, model.getId(), logger ); logger.log("getComponent succeeded with component ID: " + response.component().id()); return response; }) .done(this::constructResourceModelFromResponse); } private ProgressEvent<ResourceModel, CallbackContext> constructResourceModelFromResponse( GetComponentResponse response ) { logger.log("Translating from read response"); return ProgressEvent.defaultSuccessHandler( Translator.translateFromReadResponse(response) ); } }