in aws-iotwireless-partneraccount/src/main/java/software/amazon/iotwireless/partneraccount/CreateHandler.java [21:58]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<IotWirelessClient> proxyClient,
final Logger logger) {
final ResourceModel model = request.getDesiredResourceState();
final ResourceModel previousModel = request.getPreviousResourceState();
String clientRequestToken = request.getClientRequestToken();
if ( model.getArn() != null || model.getSidewalkResponse() != null ) {
throw new CfnInvalidRequestException("Attempting to set a ReadOnly Property.");
}
if (previousModel != null) {
if (previousModel.getPartnerAccountId().equals(model.getPartnerAccountId())) {
throw new ResourceAlreadyExistsException(ResourceModel.TYPE_NAME, model.getPartnerAccountId());
}
}
return ProgressEvent.progress(model, callbackContext)
.then(progress -> proxy.initiate("AWS-IoTWireless-PartnerAccount::Read", proxyClient, model, callbackContext)
.translateToServiceRequest(Translator::translateToReadRequest)
.makeServiceCall(this::getResource)
.progress())
.then(progress ->
proxy.initiate("AWS-IoTWireless-PartnerAccount::Create", proxyClient, model, callbackContext)
.translateToServiceRequest(resourceModel -> Translator.translateToCreateRequest(resourceModel, clientRequestToken))
.makeServiceCall(this::createResource)
.done((response) -> {
model.setSidewalk(Translator.translateToSidewalk(response.sidewalk()));
model.setPartnerAccountId(response.sidewalk().amazonId());
model.setArn(response.arn());
return progress;
}))
.then(progress -> ProgressEvent.defaultSuccessHandler(Translator.setModel(model)));
}