diff options
Diffstat (limited to 'src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java')
-rw-r--r-- | src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java | 57 |
1 files changed, 43 insertions, 14 deletions
diff --git a/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java b/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java index 128bc6c..a0c27e7 100644 --- a/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java +++ b/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java @@ -16,22 +16,26 @@ package org.onap.nbi.apis.servicecatalog; +import java.net.URI; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.onap.nbi.OnapComponentsUrlPaths; +import org.onap.nbi.apis.servicecatalog.model.ServiceSpecificationRequest; import org.onap.nbi.commons.JsonRepresentation; import org.onap.nbi.commons.ResourceManagement; +import org.onap.nbi.exceptions.ValidationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.MultiValueMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import javax.validation.Valid; @RestController @RequestMapping(OnapComponentsUrlPaths.SERVICE_SPECIFICATION_PATH) @@ -42,17 +46,17 @@ public class ServiceSpecificationResource extends ResourceManagement { @GetMapping(value = "/{serviceSpecId}", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Object> getServiceSpecification(@PathVariable String serviceSpecId, - @RequestParam MultiValueMap<String, String> params) { + @RequestParam MultiValueMap<String, String> params) { Map response = serviceSpecificationService.get(serviceSpecId); if (response != null) { - ArrayList<Map<String, Object>> resourseSpecificationMap= (ArrayList<Map<String, Object>>) response.get("resourceSpecification"); - for (Map<String, Object> map : resourseSpecificationMap) { - map.remove("childResourceSpecification"); - map.remove("serviceInstanceParams"); - map.remove("InstanceSpecification"); - } - response.put("resourceSpecification", resourseSpecificationMap); + ArrayList<Map<String, Object>> resourseSpecificationMap= (ArrayList<Map<String, Object>>) response.get("resourceSpecification"); + for (Map<String, Object> map : resourseSpecificationMap) { + map.remove("childResourceSpecification"); + map.remove("serviceInstanceParams"); + map.remove("InstanceSpecification"); + } + response.put("resourceSpecification", resourseSpecificationMap); } JsonRepresentation filter = new JsonRepresentation(params); @@ -73,10 +77,35 @@ public class ServiceSpecificationResource extends ResourceManagement { @GetMapping(value = "/{serviceSpecId}/specificationInputSchema", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Object> findSpecificationInputSchema(@PathVariable String serviceSpecId, - @RequestParam MultiValueMap<String, String> params) { + @RequestParam MultiValueMap<String, String> params) { String response = serviceSpecificationService.getInputSchema(serviceSpecId); JsonRepresentation filter = new JsonRepresentation(params); return this.getResponse(response, filter); } + @PostMapping(value = "", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + public Object createServiceSpecification(@RequestHeader(value = "USER_ID", required = true) String userId, + @Valid @RequestBody ServiceSpecificationRequest serviceSpecificationRequest, BindingResult result) { + if (null == userId || userId.isEmpty()) { + result.addError(new ObjectError("USER_ID", "USER_ID is missing in header!")); + } + if (result.hasErrors()) { + throw new ValidationException(result.getAllErrors()); + } + Map serviceCatalogResponse = serviceSpecificationService.create(userId, serviceSpecificationRequest); + + return createResponse(serviceCatalogResponse); + } + /** + * + * @param resource + * @return + */ + private ResponseEntity<Object> createResponse(final Map resource) { + URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(resource.get("id")) + .toUri(); + return ResponseEntity.created(location).body(resource); + + } + }
\ No newline at end of file |