Fix sonar issues in UniversalVesAdapter
[dcaegen2/services/mapper.git] / UniversalVesAdapter / src / main / java / org / onap / universalvesadapter / adapter / UniversalEventAdapter.java
index 483b19b..7e41f38 100644 (file)
-/*-\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;
+    }
+
+}