aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/dcae/restapi/VesRestController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/dcae/restapi/VesRestController.java')
-rw-r--r--src/main/java/org/onap/dcae/restapi/VesRestController.java97
1 files changed, 60 insertions, 37 deletions
diff --git a/src/main/java/org/onap/dcae/restapi/VesRestController.java b/src/main/java/org/onap/dcae/restapi/VesRestController.java
index b07b58df..f6dde6d2 100644
--- a/src/main/java/org/onap/dcae/restapi/VesRestController.java
+++ b/src/main/java/org/onap/dcae/restapi/VesRestController.java
@@ -1,9 +1,9 @@
/*
* ============LICENSE_START=======================================================
- * PROJECT
+ * VES Collector
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * Copyright (C) 2018 Nokia. All rights reserved.s
+ * Copyright (C) 2020 Nokia. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,22 +21,18 @@
package org.onap.dcae.restapi;
-import static org.springframework.http.ResponseEntity.accepted;
-import static org.springframework.http.ResponseEntity.badRequest;
-
import com.att.nsa.clock.SaClock;
import com.att.nsa.logging.LoggingContext;
import com.att.nsa.logging.log4j.EcompFields;
-import java.util.Optional;
-import java.util.UUID;
-import javax.servlet.http.HttpServletRequest;
-import org.json.JSONArray;
import org.json.JSONObject;
import org.onap.dcae.ApplicationSettings;
import org.onap.dcae.common.EventSender;
-import org.onap.dcae.common.VESLogger;
import org.onap.dcae.common.EventUpdater;
import org.onap.dcae.common.HeaderUtils;
+import org.onap.dcae.common.VESLogger;
+import org.onap.dcae.common.model.StndDefinedNamespaceParameterHasEmptyValueException;
+import org.onap.dcae.common.model.StndDefinedNamespaceParameterNotDefinedException;
+import org.onap.dcae.common.model.VesEvent;
import org.onap.dcaegen2.services.sdk.standardization.header.CustomHeaderUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -48,6 +44,13 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.UUID;
+
+import static org.springframework.http.ResponseEntity.accepted;
+import static org.springframework.http.ResponseEntity.badRequest;
+
@RestController
public class VesRestController {
@@ -58,15 +61,19 @@ public class VesRestController {
private final Logger requestLogger;
private EventSender eventSender;
private final HeaderUtils headerUtils;
+ private final EventValidator eventValidator;
+ private final EventUpdater eventUpdater;
- @Autowired
- VesRestController(ApplicationSettings settings,
- @Qualifier("incomingRequestsLogger") Logger incomingRequestsLogger,
- @Qualifier("eventSender") EventSender eventSender, HeaderUtils headerUtils) {
+ @Autowired
+ VesRestController(ApplicationSettings settings,
+ @Qualifier("incomingRequestsLogger") Logger incomingRequestsLogger,
+ @Qualifier("eventSender") EventSender eventSender, HeaderUtils headerUtils) {
this.settings = settings;
this.requestLogger = incomingRequestsLogger;
this.eventSender = eventSender;
this.headerUtils = headerUtils;
+ this.eventValidator = new EventValidator(settings);
+ this.eventUpdater = new EventUpdater(settings);
}
@PostMapping(value = {"/eventListener/{version}"}, consumes = "application/json")
@@ -86,38 +93,54 @@ public class VesRestController {
return badRequest().contentType(MediaType.APPLICATION_JSON).body(String.format("API version %s is not supported", version));
}
- private ResponseEntity<String> process(String events, String version, HttpServletRequest request, String type) {
+ private ResponseEntity<String> process(String payload, String version, HttpServletRequest request, String type) {
CustomHeaderUtils headerUtils = createHeaderUtils(version, request);
- if(headerUtils.isOkCustomHeaders()){
- JSONObject jsonObject = new JSONObject(events);
-
- EventValidator eventValidator = new EventValidator(settings);
- Optional<ResponseEntity<String>> validationResult = eventValidator.validate(jsonObject, type, version);
-
- if (validationResult.isPresent()){
- return validationResult.get();
- }
- JSONArray arrayOfEvents = new EventUpdater(settings).convert(jsonObject,version, generateUUID(version, request.getRequestURI(), jsonObject), type);
- eventSender.send(arrayOfEvents);
- // TODO call service and return status, replace CambriaClient, split event to single object and list of them
- return accepted().headers(this.headerUtils.fillHeaders(headerUtils.getRspCustomHeader()))
- .contentType(MediaType.APPLICATION_JSON).body("Accepted");
+ if (headerUtils.isOkCustomHeaders()) {
+ final VesEvent vesEvent = new VesEvent(new JSONObject(payload));
+ final String requestURI = request.getRequestURI();
+ return handleEvent(vesEvent, version, type, headerUtils, requestURI);
}
return badRequest().body(String.format(ApiException.INVALID_CUSTOM_HEADER.toString()));
}
- private CustomHeaderUtils createHeaderUtils(String version, HttpServletRequest request){
- return new CustomHeaderUtils(version.toLowerCase().replace("v", ""),
- headerUtils.extractHeaders(request),
- headerUtils.getApiVerFilePath("api_version_config.json"),
- headerUtils.getRestApiIdentify(request.getRequestURI()));
+ private ResponseEntity<String> handleEvent(VesEvent vesEvent, String version, String type, CustomHeaderUtils headerUtils, String requestURI) {
+ try {
+ eventValidator.validate(vesEvent, type, version);
+ List<VesEvent> vesEvents = transformEvent(vesEvent, type, version, requestURI);
+ eventSender.send(vesEvents);
+ } catch (EventValidatorException e) {
+ return ResponseEntity.status(e.getApiException().httpStatusCode)
+ .body(e.getApiException().toJSON().toString());
+ } catch (StndDefinedNamespaceParameterNotDefinedException e) {
+ return ResponseEntity.status(ApiException.MISSING_NAMESPACE_PARAMETER.httpStatusCode)
+ .body(ApiException.MISSING_NAMESPACE_PARAMETER.toJSON().toString());
+ } catch (StndDefinedNamespaceParameterHasEmptyValueException e) {
+ return ResponseEntity.status(ApiException.MISSING_NAMESPACE_PARAMETER.httpStatusCode)
+ .body(ApiException.EMPTY_NAMESPACE_PARAMETER.toJSON().toString());
+ }
+
+ // TODO call service and return status, replace CambriaClient, split event to single object and list of them
+ return accepted().headers(this.headerUtils.fillHeaders(headerUtils.getRspCustomHeader()))
+ .contentType(MediaType.APPLICATION_JSON).body("Accepted");
+ }
+
+ private CustomHeaderUtils createHeaderUtils(String version, HttpServletRequest request) {
+ return new CustomHeaderUtils(version.toLowerCase().replace("v", ""),
+ headerUtils.extractHeaders(request),
+ headerUtils.getApiVerFilePath("api_version_config.json"),
+ headerUtils.getRestApiIdentify(request.getRequestURI()));
+
+ }
+ private List<VesEvent> transformEvent(VesEvent vesEvent, String type, String version, String requestURI) {
+ return this.eventUpdater.convert(
+ vesEvent, version, generateUUID(vesEvent, version, requestURI), type);
}
- private UUID generateUUID(String version, String uri, JSONObject jsonObject) {
+ private UUID generateUUID(VesEvent vesEvent, String version, String uri) {
UUID uuid = UUID.randomUUID();
setUpECOMPLoggingForRequest(uuid);
- requestLogger.info(String.format(VES_EVENT_MESSAGE, jsonObject, uuid, version, uri));
+ requestLogger.info(String.format(VES_EVENT_MESSAGE, vesEvent.asJsonObject(), uuid, version, uri));
return uuid;
}
@@ -125,4 +148,4 @@ public class VesRestController {
LoggingContext localLC = VESLogger.getLoggingContextForThread(uuid);
localLC.put(EcompFields.kBeginTimestampMs, SaClock.now());
}
-} \ No newline at end of file
+}