aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java
diff options
context:
space:
mode:
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.java57
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