@PutMapping(value = { "/{platformInstanceId}/v2/service_instances/{instanceId}", "/v2/service_instances/{instanceId}" }) public ResponseEntity<CreateServiceInstanceResponse> createServiceInstance( @PathVariable Map<String, String> pathVariables, @PathVariable(ServiceBrokerRequest.INSTANCE_ID_PATH_VARIABLE) String serviceInstanceId, @RequestParam(value = AsyncServiceBrokerRequest.ASYNC_REQUEST_PARAMETER, required = false) boolean acceptsIncomplete, @RequestHeader(value = ServiceBrokerRequest.API_INFO_LOCATION_HEADER, required = false) String apiInfoLocation, @RequestHeader(value = ServiceBrokerRequest.ORIGINATING_IDENTITY_HEADER, required = false) String originatingIdentityString, @Valid @RequestBody CreateServiceInstanceRequest request) { ServiceDefinition serviceDefinition = getRequiredServiceDefinition(request.getServiceDefinitionId()); Plan plan = getServiceDefinitionPlan(serviceDefinition, request.getPlanId()); request.setServiceInstanceId(serviceInstanceId); request.setServiceDefinition(serviceDefinition); request.setPlan(plan); setCommonRequestFields(request, pathVariables.get(ServiceBrokerRequest.PLATFORM_INSTANCE_ID_VARIABLE), apiInfoLocation, originatingIdentityString, acceptsIncomplete); logger.debug("Creating a service instance: request={}", request); CreateServiceInstanceResponse response = service.createServiceInstance(request); logger.debug("Creating a service instance succeeded: serviceInstanceId={}, response={}", serviceInstanceId, response); return new ResponseEntity<>(response, getCreateResponseCode(response)); }
.flatMap(serviceDefinition -> getServiceDefinitionPlan(serviceDefinition, request.getPlanId()) .map(plan -> { request.setPlan(plan); return request; })