Remove datarouter-node critical code smells
[dmaap/datarouter.git] / datarouter-node / src / main / java / org / onap / dmaap / datarouter / node / NodeUtils.java
index d5b15bc..da84ae5 100644 (file)
 
 package org.onap.dmaap.datarouter.node;
 
-import static com.att.eelf.configuration.Configuration.MDC_SERVER_FQDN;
-import static com.att.eelf.configuration.Configuration.MDC_SERVER_IP_ADDRESS;
-import static com.att.eelf.configuration.Configuration.MDC_SERVICE_NAME;
-
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
+
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.net.InetAddress;
@@ -40,19 +38,24 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.TimeZone;
+import java.util.UUID;
+import java.util.zip.GZIPInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.codec.binary.Base64;
-import org.apache.log4j.Logger;
+import org.apache.commons.lang3.StringUtils;
 import org.onap.dmaap.datarouter.node.eelf.EelfMsgs;
 import org.slf4j.MDC;
 
+import static com.att.eelf.configuration.Configuration.*;
+
 /**
  * Utility functions for the data router node
  */
 public class NodeUtils {
 
     private static EELFLogger eelfLogger = EELFManager.getInstance()
-        .getLogger("org.onap.dmaap.datarouter.node.NodeUtils");
-    private static Logger nodeUtilsLogger = Logger.getLogger("org.onap.dmaap.datarouter.node.NodeUtils");
+            .getLogger(NodeUtils.class);
 
     private NodeUtils() {
     }
@@ -60,7 +63,7 @@ public class NodeUtils {
     /**
      * Base64 encode a byte array
      *
-     * @param raw The bytes to be encoded
+     * @param  raw The bytes to be encoded
      * @return The encoded string
      */
     public static String base64Encode(byte[] raw) {
@@ -94,8 +97,9 @@ public class NodeUtils {
             md.update(key.getBytes());
             return (getAuthHdr(node, base64Encode(md.digest())));
         } catch (Exception exception) {
-            nodeUtilsLogger
-                .error("Exception in generating Credentials for given node name:= " + exception.toString(), exception);
+            eelfLogger
+                    .error("Exception in generating Credentials for given node name:= " + exception.toString(),
+                            exception);
             return (null);
         }
     }
@@ -116,14 +120,13 @@ public class NodeUtils {
             try (FileInputStream fileInputStream = new FileInputStream(ksfile)) {
                 ks.load(fileInputStream, kspass.toCharArray());
             } catch (IOException ioException) {
-                nodeUtilsLogger.error("IOException occurred while opening FileInputStream: " + ioException.getMessage(),
-                    ioException);
+                eelfLogger.error("IOException occurred while opening FileInputStream: " + ioException.getMessage(),
+                        ioException);
                 return (null);
             }
         } catch (Exception e) {
             setIpAndFqdnForEelf("getCanonicalName");
-            eelfLogger.error(EelfMsgs.MESSAGE_KEYSTORE_LOAD_ERROR, ksfile, e.toString());
-            nodeUtilsLogger.error("NODE0401 Error loading my keystore file + " + ksfile + " " + e.toString(), e);
+            eelfLogger.error(EelfMsgs.MESSAGE_KEYSTORE_LOAD_ERROR, e, ksfile);
             return (null);
         }
         return (getCanonicalName(ks));
@@ -158,7 +161,7 @@ public class NodeUtils {
                 }
             }
         } catch (Exception e) {
-            nodeUtilsLogger.error("NODE0402 Error extracting my name from my keystore file " + e.toString(), e);
+            eelfLogger.error("NODE0402 Error extracting my name from my keystore file " + e.toString(), e);
         }
         return (null);
     }
@@ -173,8 +176,9 @@ public class NodeUtils {
         try {
             return (InetAddress.getByName(ip).getAddress());
         } catch (Exception exception) {
-            nodeUtilsLogger
-                .error("Exception in generating byte array for given IP address := " + exception.toString(), exception);
+            eelfLogger
+                    .error("Exception in generating byte array for given IP address := " + exception.toString(),
+                            exception);
         }
         return (null);
     }
@@ -251,10 +255,53 @@ public class NodeUtils {
             MDC.put(MDC_SERVER_FQDN, InetAddress.getLocalHost().getHostName());
             MDC.put(MDC_SERVER_IP_ADDRESS, InetAddress.getLocalHost().getHostAddress());
         } catch (Exception exception) {
-            nodeUtilsLogger
-                .error("Exception in generating byte array for given IP address := " + exception.toString(), exception);
+            eelfLogger
+                    .error("Exception in generating byte array for given IP address := " + exception.toString(),
+                            exception);
+        }
+
+    }
+
+    /* Method sets RequestIs and InvocationId for se in EELF logs
+     * @Method - setIpAndFqdnForEelf
+     * @Params - Req, Request used to get RequestId and InvocationId
+     */
+    public static void setRequestIdAndInvocationId(HttpServletRequest req) {
+        String reqId = req.getHeader("X-ONAP-RequestID");
+        if (StringUtils.isBlank(reqId)) {
+            reqId = UUID.randomUUID().toString();
         }
+        MDC.put(MDC_KEY_REQUEST_ID, reqId);
+        String invId = req.getHeader("X-InvocationID");
+        if (StringUtils.isBlank(invId)) {
+            invId = UUID.randomUUID().toString();
+        }
+        MDC.put("InvocationId", invId);
+    }
 
+    public static void sendResponseError(HttpServletResponse response, int errorCode, EELFLogger intlogger) {
+        try {
+            response.sendError(errorCode);
+        } catch (IOException ioe) {
+            intlogger.error("IOException", ioe);
+        }
+    }
+
+    /**
+     * Method to check to see if file is of type gzip
+     *
+     * @param   file The name of the file to be checked
+     * @return  True if the file is of type gzip
+     */
+    public static boolean isFiletypeGzip(File file){
+        try(FileInputStream fileInputStream = new FileInputStream(file);
+            GZIPInputStream gzip = new GZIPInputStream(fileInputStream)) {
+
+            return true;
+        }catch (IOException e){
+            eelfLogger.error("NODE0403 " + file.toString() + " Not in gzip(gz) format: " + e.toString() + e);
+            return false;
+        }
     }