2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017-2018 Amdocs
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
21 package org.onap.crud.event.response;
23 import javax.ws.rs.core.Response.Status;
24 import org.onap.aai.cl.api.Logger;
25 import org.onap.aai.cl.eelf.LoggerFactory;
26 import org.onap.crud.event.GraphEvent;
27 import org.onap.crud.event.GraphEvent.GraphEventResult;
28 import org.onap.crud.event.envelope.GraphEventEnvelope;
29 import org.onap.crud.exception.CrudException;
30 import org.onap.crud.logging.CrudServiceMsgs;
31 import org.onap.crud.parser.CrudResponseBuilder;
32 import org.onap.schema.OxmModelValidator;
33 import org.onap.schema.RelationshipSchemaValidator;
36 * Reads event responses, logs and generates exceptions if errors are found.
39 public class GraphEventResponseHandler {
41 private static Logger logger = LoggerFactory.getInstance().getLogger(GraphEventResponseHandler.class.getName());
43 public String handleVertexResponse(String version, GraphEvent event, GraphEventEnvelope response)
44 throws CrudException {
45 validate(event, response);
47 return CrudResponseBuilder.buildUpsertVertexResponse(
48 OxmModelValidator.validateOutgoingPayload(version, response.getBody().getVertex().toVertex()), version);
51 public String handleEdgeResponse(String version, GraphEvent event, GraphEventEnvelope response)
52 throws CrudException {
53 validate(event, response);
55 return CrudResponseBuilder.buildUpsertEdgeResponse(
56 RelationshipSchemaValidator.validateOutgoingPayload(version, response.getBody().getEdge().toEdge()),
60 public String handleDeletionResponse(GraphEvent event, GraphEventEnvelope response) throws CrudException {
61 validate(event, response);
65 public void handleBulkEventResponse(GraphEvent event, GraphEventEnvelope response) throws CrudException {
66 validate(event, response);
69 public boolean hasPolicyViolations(GraphEventEnvelope event) {
70 return event.getPolicyViolations() != null && event.getPolicyViolations().isJsonArray()
71 && event.getPolicyViolations().getAsJsonArray().size() != 0;
74 private void validate(GraphEvent event, GraphEventEnvelope response) throws CrudException {
75 handlePolicyViolations(event, response);
76 logResponse(event, response.getBody());
78 if (isErrorResponse(response.getBody())) {
79 throw new CrudException(
80 GraphEventResponseMessage.OPERATION_ERROR_EXCEPTION_MESSAGE
81 .getMessage(response.getBody().getTransactionId(), response.getBody().getErrorMessage()),
82 response.getBody().getHttpErrorStatus());
86 private void handlePolicyViolations(GraphEvent event, GraphEventEnvelope response) throws CrudException {
87 if (hasPolicyViolations(response)) {
88 logPolicyViolation(event, response);
89 throw new CrudException(GraphEventResponseMessage.POLICY_VIOLATION_EXCEPTION_MESSAGE.getMessage(
90 response.getBody().getTransactionId(), response.getPolicyViolations()), Status.BAD_REQUEST);
94 private void logResponse(GraphEvent event, GraphEvent response) {
95 String message = GraphEventResponseMessage.BASE_OPERATION_LOG_MESSAGE.getMessage(response.getObjectType(),
96 response.getObjectKey(), response.getTransactionId(), event.getOperation().toString(),
97 response.getResult());
98 if (isErrorResponse(response)) {
99 message = GraphEventResponseMessage.OPERATION_ERROR_LOG_MESSAGE.getMessage(message,
100 response.getErrorMessage());
103 logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, message);
106 private void logPolicyViolation(GraphEvent event, GraphEventEnvelope response) {
108 logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO,
109 GraphEventResponseMessage.POLICY_VIOLATION_LOG_MESSAGE.getMessage(
110 response.getBody().getTransactionId(),
111 response.getHeader().getSourceName(),
112 response.getHeader().getEventType(),
113 response.getBody().getObjectKey(),
114 response.getBody().getObjectType(),
115 event.getOperation().toString(),
116 response.getPolicyViolations().toString()));
120 private boolean isErrorResponse(GraphEvent response) {
121 return GraphEventResult.FAILURE.equals(response.getResult());