diff options
Diffstat (limited to 'src/main/java/org')
-rw-r--r-- | src/main/java/org/onap/aai/datarouter/policy/GapEventTransformer.java | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/main/java/org/onap/aai/datarouter/policy/GapEventTransformer.java b/src/main/java/org/onap/aai/datarouter/policy/GapEventTransformer.java new file mode 100644 index 0000000..6565fc2 --- /dev/null +++ b/src/main/java/org/onap/aai/datarouter/policy/GapEventTransformer.java @@ -0,0 +1,105 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2018 Amdocs + * ================================================================================ + * 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.aai.datarouter.policy; + +import java.io.FileNotFoundException; + +import org.apache.camel.Exchange; +import org.json.JSONException; +import org.json.JSONObject; +import org.onap.aai.cl.api.Logger; +import org.onap.aai.cl.eelf.LoggerFactory; +import org.onap.aai.datarouter.logging.EntityEventPolicyMsgs; + + + +public class GapEventTransformer { + protected Logger logger; + protected static final String additionalInfo = "Response of GapEvent to transform"; + + protected enum ResponseType { + SUCCESS, PARTIAL_SUCCESS, FAILURE; + } + + public GapEventTransformer() throws FileNotFoundException { + LoggerFactory loggerFactoryInstance = LoggerFactory.getInstance(); + logger = loggerFactoryInstance.getLogger(AbstractSpikeEntityEventProcessor.class.getName()); + } + + + public void process(Exchange exchange) throws Exception { + + String payload = getExchangeBody(exchange); + JSONObject newPayload = transformToSpikePattern(payload); + exchange.getOut().setBody(newPayload.toString()); + + } + + protected JSONObject transformToSpikePattern(String payload) { + JSONObject payloadJson = new JSONObject(payload); + JSONObject payloadEntity = payloadJson.getJSONObject("entity"); + JSONObject payloadProperties = payloadEntity.getJSONObject("properties"); + String payloadId = payloadEntity.getString("id"); + String payloadType = payloadEntity.getString("type"); + + JSONObject newPayload = new JSONObject(); + newPayload.put("operation", "UPDATE"); + JSONObject newPayloadVertex = new JSONObject(); + newPayloadVertex.put("key", payloadId); + newPayloadVertex.put("type", payloadType); + newPayloadVertex.put("properties", payloadProperties); + newPayload.put("vertex", newPayloadVertex); + return newPayload; + } + + protected String getExchangeBody(Exchange exchange) { + String uebPayload = exchange.getIn().getBody().toString(); + if (uebPayload == null || !isJSONValid(uebPayload)) { + uebPayload = exchange.getIn().getBody(String.class); + if (uebPayload == null || !isJSONValid(uebPayload)) { + returnWithError(exchange, uebPayload, "Invalid Payload"); + return null; + } + } + return uebPayload; + } + + private boolean isJSONValid(String test) { + try { + new JSONObject(test); + } catch (JSONException ex) { + return false; + } + return true; + } + + protected void returnWithError(Exchange exchange, String payload, String errorMsg) { + logger.error(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE, errorMsg); + logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE, errorMsg, payload); + setResponse(exchange, ResponseType.FAILURE, additionalInfo); + } + + protected void setResponse(Exchange exchange, ResponseType responseType, String additionalInfo) { + + exchange.getOut().setHeader("ResponseType", responseType.toString()); + exchange.getOut().setBody(additionalInfo); + } +} |