diff options
author | krishnaa96 <krishna.moorthy6@wipro.com> | 2021-02-26 13:14:09 +0530 |
---|---|---|
committer | krishnaa96 <krishna.moorthy6@wipro.com> | 2021-03-03 18:50:34 +0530 |
commit | 00b90746ce2c65de3e7b50ef1b87af3933c895e7 (patch) | |
tree | 07d51a001b7fd7539c4781b243b90a92d0dfd080 /cps-tbdmt-rest/src/main | |
parent | eb514d63eb47f335a1eb3119124a56225ac730cc (diff) |
Add cps-tbdmt-rest code
Issue-ID: CPS-243
Signed-off-by: krishnaa96 <krishna.moorthy6@wipro.com>
Change-Id: I473135bc026a63cb6d644a42e54ffe45d1389fbd
Diffstat (limited to 'cps-tbdmt-rest/src/main')
3 files changed, 230 insertions, 0 deletions
diff --git a/cps-tbdmt-rest/src/main/java/org/onap/cps/tbdmt/exception/TemplateExceptionHandler.java b/cps-tbdmt-rest/src/main/java/org/onap/cps/tbdmt/exception/TemplateExceptionHandler.java new file mode 100644 index 0000000..fa6fa28 --- /dev/null +++ b/cps-tbdmt-rest/src/main/java/org/onap/cps/tbdmt/exception/TemplateExceptionHandler.java @@ -0,0 +1,82 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2021 Wipro Limited. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.tbdmt.exception; + +import java.util.ArrayList; +import java.util.List; +import org.onap.cps.tbdmt.model.ErrorResponse; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; + +@ControllerAdvice +public class TemplateExceptionHandler extends ResponseEntityExceptionHandler { + + /** + * Handle TemplateNotFoundException. + * + * @param templateNotFoundException Exception + * @param webRequest web request + * @return response entity + */ + @ExceptionHandler(TemplateNotFoundException.class) + public final ResponseEntity<Object> handleTemplateNotFoundException( + final TemplateNotFoundException templateNotFoundException, final WebRequest webRequest) { + final List<String> details = new ArrayList<>(); + details.add(templateNotFoundException.getLocalizedMessage()); + final ErrorResponse ErrorResponse = new ErrorResponse("Template Not found", details); + return new ResponseEntity<>(ErrorResponse, HttpStatus.NOT_FOUND); + } + + /** + * Handle ExecuteException. + * + * @param executeException Exception + * @param webRequest web request + * @return response entity + */ + @ExceptionHandler(ExecuteException.class) + public final ResponseEntity<Object> handleExecutionException(final ExecuteException executeException, + final WebRequest webRequest) { + final List<String> details = new ArrayList<>(); + details.add(executeException.getLocalizedMessage()); + final ErrorResponse ErrorResponse = new ErrorResponse("Error while executing template", details); + return new ResponseEntity<>(ErrorResponse, HttpStatus.OK); + } + + @Override + protected ResponseEntity<Object> handleMethodArgumentNotValid( + final MethodArgumentNotValidException methodArgumentNotValidException, final HttpHeaders httpHeaders, + final HttpStatus httpStatus, final WebRequest webRequest) { + final List<String> details = new ArrayList<>(); + for (final ObjectError objectError : methodArgumentNotValidException.getBindingResult().getAllErrors()) { + details.add(objectError.getDefaultMessage()); + } + final ErrorResponse ErrorResponse = new ErrorResponse("Validation Failed", details); + return new ResponseEntity<>(ErrorResponse, HttpStatus.BAD_REQUEST); + } +} diff --git a/cps-tbdmt-rest/src/main/java/org/onap/cps/tbdmt/rest/ExecutionController.java b/cps-tbdmt-rest/src/main/java/org/onap/cps/tbdmt/rest/ExecutionController.java new file mode 100644 index 0000000..b7dc4f6 --- /dev/null +++ b/cps-tbdmt-rest/src/main/java/org/onap/cps/tbdmt/rest/ExecutionController.java @@ -0,0 +1,56 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2021 Wipro Limited. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.tbdmt.rest; + +import javax.validation.Valid; +import org.onap.cps.tbdmt.model.ExecutionRequest; +import org.onap.cps.tbdmt.service.ExecutionBusinessLogic; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class ExecutionController { + + @Autowired + private ExecutionBusinessLogic executionBusinessLogic; + + /** + * Execute a template by model and templateId. + * + * @param model model to find the template + * @param templateId Id to find the template + * @param executionRequest execution request + * @return result of the execution + */ + @PostMapping(path = "/execute/{model}/{templateId}") + public ResponseEntity<String> executeTemplate(@Valid @PathVariable final String model, + @Valid @PathVariable final String templateId, + @Valid @RequestBody final ExecutionRequest executionRequest) { + final String result = executionBusinessLogic.executeTemplate(model, templateId, executionRequest); + return new ResponseEntity<>(result, HttpStatus.OK); + } + +} diff --git a/cps-tbdmt-rest/src/main/java/org/onap/cps/tbdmt/rest/TemplateController.java b/cps-tbdmt-rest/src/main/java/org/onap/cps/tbdmt/rest/TemplateController.java new file mode 100644 index 0000000..15efdc5 --- /dev/null +++ b/cps-tbdmt-rest/src/main/java/org/onap/cps/tbdmt/rest/TemplateController.java @@ -0,0 +1,92 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2021 Wipro Limited. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.tbdmt.rest; + +import java.util.Collection; +import javax.validation.Valid; +import org.onap.cps.tbdmt.exception.TemplateNotFoundException; +import org.onap.cps.tbdmt.model.Template; +import org.onap.cps.tbdmt.model.TemplateKey; +import org.onap.cps.tbdmt.model.TemplateRequest; +import org.onap.cps.tbdmt.service.TemplateBusinessLogic; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class TemplateController { + + @Autowired + private TemplateBusinessLogic templateBusinessLogic; + + @PostMapping(path = "/templates") + public ResponseEntity<Template> createTemplate(@Valid @RequestBody final TemplateRequest templateRequest) { + return new ResponseEntity<>(templateBusinessLogic.createTemplate(templateRequest), + HttpStatus.CREATED); + } + + /** + * Get All Templates. + * + * @return templates + */ + @GetMapping(path = "/templates") + public ResponseEntity<Collection<Template>> getAllTemplates() { + final Collection<Template> templates = templateBusinessLogic.getAllTemplates(); + if (templates.isEmpty()) { + throw new TemplateNotFoundException("Template repository is empty"); + } + return new ResponseEntity<>(templates, HttpStatus.OK); + } + + /** + * Get Template by model and templateId. + * + * @param templateId Id to find the template + * @param model schema set to find the template + * @return template + */ + @GetMapping(path = "/templates/{model}/{templateId}") + public ResponseEntity<Template> getTemplate(@PathVariable final String templateId, + @PathVariable final String model) { + return new ResponseEntity<>( + templateBusinessLogic.getTemplate(new TemplateKey(templateId, model)), + HttpStatus.OK); + + } + + /** + * Delete Template by model and templateId. + * + * @param templateId Id to find the template + * @param model schema set to find the template + */ + @DeleteMapping(path = "/templates/{model}/{templateId}") + public void deleteTemplate(@PathVariable final String templateId, @PathVariable final String model) { + templateBusinessLogic.deleteTemplate(new TemplateKey(templateId, model)); + } +} |