-/*-\r
- * ============LICENSE_START=======================================================\r
- * ONAP : DCAE\r
- * ================================================================================\r
- * Copyright 2018-2019 TechMahindra\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- */\r
-\r
-package org.onap.universalvesadapter.adapter;\r
-\r
-import java.io.ByteArrayInputStream;\r
-import java.io.IOException;\r
-import java.nio.charset.StandardCharsets;\r
-import java.util.Iterator;\r
-import java.util.Map;\r
-import java.util.concurrent.ConcurrentHashMap;\r
-\r
-import javax.annotation.PreDestroy;\r
-\r
-import org.milyn.Smooks;\r
-import org.onap.universalvesadapter.exception.ConfigFileSmooksConversionException;\r
-import org.onap.universalvesadapter.exception.VesException;\r
-import org.onap.universalvesadapter.service.VESAdapterInitializer;\r
-import org.onap.universalvesadapter.utils.CollectorConfigPropertyRetrival;\r
-import org.onap.universalvesadapter.utils.SmooksUtils;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.springframework.beans.factory.annotation.Value;\r
-import org.springframework.stereotype.Component;\r
-import org.xml.sax.SAXException;\r
-\r
-import com.fasterxml.jackson.core.JsonProcessingException;\r
-import com.fasterxml.jackson.databind.ObjectMapper;\r
-import com.google.gson.Gson;\r
-import com.google.gson.JsonElement;\r
-import com.google.gson.JsonObject;\r
-import com.google.gson.JsonParseException;\r
-import com.google.gson.JsonSyntaxException;\r
-\r
-/**\r
- * Default implementation of the Generic Adapter\r
- * \r
- * @author kmalbari\r
- *\r
- */\r
-\r
-@Component\r
-public class UniversalEventAdapter implements GenericAdapter {\r
- private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger");\r
- private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");\r
- \r
- @Value("${defaultConfigFilelocation}")\r
- private String defaultConfigFilelocation;\r
- private String collectorIdentifierValue;\r
- private String collectorIdentifierKey;\r
- private Map<String, Smooks> eventToSmooksMapping = new ConcurrentHashMap<>();\r
- \r
- public UniversalEventAdapter() {\r
- \r
- }\r
- \r
- /**\r
- * transforms JSON to VES format and and returns the ves Event\r
- * \r
- * @param IncomingJason,eventType\r
- * @return ves Event\r
- */\r
- @Override\r
- public String transform(String incomingJsonString)\r
- throws ConfigFileSmooksConversionException, VesException {\r
- String result = "";\r
- String configFileData;\r
- \r
- String identifier[] = CollectorConfigPropertyRetrival.getProperyArray("identifier",\r
- defaultConfigFilelocation);\r
- String defaultMappingFile =\r
- "defaultMappingFile-" + Thread.currentThread().getName();\r
- try {\r
- \r
- Gson gson = new Gson();\r
- JsonObject body = gson.fromJson(incomingJsonString, JsonObject.class);\r
- \r
- JsonElement results;\r
- for (int i = 0; i < identifier.length; i++) {\r
- JsonObject obj;\r
- if ((obj = keyObject(body, identifier[i])).has(identifier[i])) {\r
- collectorIdentifierKey = identifier[i];\r
- results = obj.get(identifier[i]);\r
- collectorIdentifierValue = results.getAsString();\r
- \r
- }\r
- \r
- }\r
- // collectorIdentifierValue = collectorIdentifierValue.substring(0,\r
- // collectorIdentifierValue.length() - 4);\r
- if (collectorIdentifierKey.equals("notify OID")) {\r
- collectorIdentifierValue = collectorIdentifierValue.substring(0,\r
- collectorIdentifierValue.length() - 4);\r
- }\r
- \r
- \r
- if (VESAdapterInitializer.getMappingFiles()\r
- .containsKey(collectorIdentifierValue)) {\r
- configFileData = VESAdapterInitializer.getMappingFiles()\r
- .get(collectorIdentifierValue);\r
- debugLogger.debug(\r
- "Using Mapping file as Mapping file is available for collector identifier:{}",\r
- collectorIdentifierValue);\r
- \r
- } else {\r
- \r
- configFileData = VESAdapterInitializer.getMappingFiles()\r
- .get(defaultMappingFile);\r
- \r
- debugLogger.debug(\r
- "Using Default Mapping file as Mapping file is not available for Enterprise Id / identifer ID:{}",\r
- collectorIdentifierValue);\r
- }\r
- \r
- Smooks smooksTemp = new Smooks(new ByteArrayInputStream(\r
- configFileData.getBytes(StandardCharsets.UTF_8)));\r
- eventToSmooksMapping.put(collectorIdentifierKey, smooksTemp);\r
- \r
- Object vesEvent = SmooksUtils.getTransformedObjectForInput(smooksTemp,\r
- incomingJsonString);\r
- debugLogger.info("Incoming json transformed to VES format successfully:"\r
- + Thread.currentThread().getName());\r
- ObjectMapper objectMapper = new ObjectMapper();\r
- result = objectMapper.writeValueAsString(vesEvent);\r
- debugLogger.info("Serialized VES json");\r
- } catch (JsonProcessingException exception) {\r
- throw new VesException("Unable to convert pojo to VES format, Reason :{}",\r
- exception);\r
- } catch (SAXException | IOException exception) {\r
- // Invalid Mapping file\r
- exception.printStackTrace();\r
- errorLogger.error("Dropping this Trap :{},Reason:{}", incomingJsonString,\r
- exception.getMessage());\r
- \r
- } catch (JsonSyntaxException exception) {\r
- // Invalid Trap\r
- errorLogger.error("Dropping this Invalid json Trap :{}, Reason:{}",\r
- incomingJsonString, exception);\r
- } catch (JsonParseException exception) {\r
- // Invalid Trap\r
- errorLogger.error("Dropping this Invalid json Trap :{}, Reason:{}",\r
- incomingJsonString, exception);\r
- } catch (RuntimeException exception) {\r
- \r
- exception.printStackTrace();\r
- errorLogger.error("Dropping this Trap :{},Reason:{}", incomingJsonString,\r
- exception.getMessage());\r
- \r
- }\r
- return result;\r
- }\r
- \r
- /**\r
- * Closes all open smooks' instances before bean is destroyed\r
- */\r
- @PreDestroy\r
- public void destroy() {\r
- for (Smooks smooks : eventToSmooksMapping.values())\r
- smooks.close();\r
- debugLogger.warn("All Smooks objects closed");\r
- }\r
- \r
- public JsonObject keyObject(JsonObject object, String searchedKey) {\r
- boolean exists = object.has(searchedKey);\r
- JsonObject jsonObject = object;\r
- \r
- if (!exists) {\r
- Iterator<?> keys = object.keySet().iterator();\r
- while (keys.hasNext()) {\r
- String key = (String) keys.next();\r
- if (object.get(key) instanceof JsonObject) {\r
- \r
- jsonObject = (JsonObject) object.get(key);\r
- JsonObject obj = keyObject(jsonObject, searchedKey);\r
- exists = obj.has(searchedKey);\r
- }\r
- }\r
- }\r
- \r
- return jsonObject;\r
- }\r
- \r
-}\r
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : DCAE
+ * ================================================================================
+ * Copyright 2018-2019 TechMahindra
+ * ================================================================================
+ * 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.universalvesadapter.adapter;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.annotation.PreDestroy;
+import org.milyn.Smooks;
+import org.onap.universalvesadapter.exception.ConfigFileSmooksConversionException;
+import org.onap.universalvesadapter.exception.VesException;
+import org.onap.universalvesadapter.service.VESAdapterInitializer;
+import org.onap.universalvesadapter.utils.CollectorConfigPropertyRetrieval;
+import org.onap.universalvesadapter.utils.SmooksUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.xml.sax.SAXException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonSyntaxException;
+
+/**
+ * Default implementation of the Generic Adapter
+ *
+ * @author kmalbari
+ *
+ */
+
+@Component
+public class UniversalEventAdapter implements GenericAdapter {
+ private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger");
+ private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
+
+ @Value("${defaultConfigFilelocation}")
+ private String defaultConfigFilelocation;
+ private String collectorIdentifierValue;
+ private String collectorIdentifierKey;
+ private Map<String, Smooks> eventToSmooksMapping = new ConcurrentHashMap<>();
+
+ public UniversalEventAdapter() {
+
+ }
+
+ /**
+ * transforms JSON to VES format and and returns the ves Event
+ *
+ * @param IncomingJason,eventType
+ * @return ves Event
+ */
+ @Override
+ public String transform(String incomingJsonString)
+ throws ConfigFileSmooksConversionException, VesException {
+ String result = "";
+ String configFileData;
+
+ String identifier[] = CollectorConfigPropertyRetrieval.getProperyArray("identifier",
+ defaultConfigFilelocation);
+ String defaultMappingFile =
+ "defaultMappingFile-" + Thread.currentThread().getName();
+ try {
+
+ Gson gson = new Gson();
+ JsonObject body = gson.fromJson(incomingJsonString, JsonObject.class);
+
+ JsonElement results;
+ for (int i = 0; i < identifier.length; i++) {
+ JsonObject obj;
+ if ((obj = keyObject(body, identifier[i])).has(identifier[i])) {
+ collectorIdentifierKey = identifier[i];
+ results = obj.get(identifier[i]);
+ collectorIdentifierValue = results.getAsString();
+
+ }
+
+ }
+ // collectorIdentifierValue = collectorIdentifierValue.substring(0,
+ // collectorIdentifierValue.length() - 4);
+ if (collectorIdentifierKey.equals("notify OID")) {
+ collectorIdentifierValue = collectorIdentifierValue.substring(0,
+ collectorIdentifierValue.length() - 4);
+ }
+
+ if (VESAdapterInitializer.getMappingFiles()
+ .containsKey(collectorIdentifierValue)) {
+ configFileData = VESAdapterInitializer.getMappingFiles()
+ .get(collectorIdentifierValue);
+ debugLogger.debug(
+ "Using Mapping file as Mapping file is available for collector identifier:{}",
+ collectorIdentifierValue);
+
+ } else {
+
+ configFileData = VESAdapterInitializer.getMappingFiles()
+ .get(defaultMappingFile);
+
+ debugLogger.debug(
+ "Using Default Mapping file as Mapping file is not available for Enterprise Id / identifer ID:{}",
+ collectorIdentifierValue);
+ }
+
+ Smooks smooksTemp = new Smooks(new ByteArrayInputStream(
+ configFileData.getBytes(StandardCharsets.UTF_8)));
+ eventToSmooksMapping.put(collectorIdentifierKey, smooksTemp);
+
+ Object vesEvent = SmooksUtils.getTransformedObjectForInput(smooksTemp,
+ incomingJsonString);
+ debugLogger.info("Incoming json transformed to VES format successfully:"
+ + Thread.currentThread().getName());
+ ObjectMapper objectMapper = new ObjectMapper();
+ result = objectMapper.writeValueAsString(vesEvent);
+ debugLogger.info("Serialized VES json");
+ } catch (JsonProcessingException exception) {
+ throw new VesException("Unable to convert pojo to VES format, Reason :{}",
+ exception);
+ } catch (SAXException | IOException exception) {
+ // Invalid Mapping file
+ exception.printStackTrace();
+ errorLogger.error("Dropping this Trap :{},Reason:{}", incomingJsonString,
+ exception.getMessage());
+
+ } catch (JsonSyntaxException exception) {
+ // Invalid Trap
+ errorLogger.error("Dropping this Invalid json Trap :{}, Reason:{}",
+ incomingJsonString, exception);
+ } catch (JsonParseException exception) {
+ // Invalid Trap
+ errorLogger.error("Dropping this Invalid json Trap :{}, Reason:{}",
+ incomingJsonString, exception);
+ } catch (RuntimeException exception) {
+
+ exception.printStackTrace();
+ errorLogger.error("Dropping this Trap :{},Reason:{}", incomingJsonString,
+ exception.getMessage());
+
+ }
+ return result;
+ }
+
+ /**
+ * Closes all open smooks' instances before bean is destroyed
+ */
+ @PreDestroy
+ public void destroy() {
+ for (Smooks smooks : eventToSmooksMapping.values())
+ smooks.close();
+ debugLogger.warn("All Smooks objects closed");
+ }
+
+ public JsonObject keyObject(JsonObject object, String searchedKey) {
+ boolean exists = object.has(searchedKey);
+ JsonObject jsonObject = object;
+
+ if (!exists) {
+ Iterator<?> keys = object.keySet().iterator();
+ while (keys.hasNext()) {
+ String key = (String) keys.next();
+ if (object.get(key) instanceof JsonObject) {
+
+ jsonObject = (JsonObject) object.get(key);
+ JsonObject obj = keyObject(jsonObject, searchedKey);
+ exists = obj.has(searchedKey);
+ }
+ }
+ }
+
+ return jsonObject;
+ }
+
+}