Dme2Client sonar fixes 63/32563/2
authorJakub Dudycz <jakub.dudycz@nokia.com>
Thu, 22 Feb 2018 14:49:20 +0000 (15:49 +0100)
committerPatrick Brady <pb071s@att.com>
Thu, 22 Feb 2018 17:34:54 +0000 (17:34 +0000)
Change-Id: I0617290c2674398f3c483f2e0df7f74702bc62cf
Issue-ID: APPC-662
Signed-off-by: Jakub Dudycz <jakub.dudycz@nokia.com>
appc-outbound/appc-network-inventory-client/provider/src/main/java/org/onap/appc/instar/dme2client/Dme2Client.java

index 2e822d0..fc4003a 100644 (file)
  */
 
 package org.onap.appc.instar.dme2client;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.client.config.DefaultClientConfig;
+import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
+import com.sun.jersey.client.urlconnection.HTTPSProperties;
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
 import java.nio.charset.Charset;
-import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLContext;
 import javax.ws.rs.HttpMethod;
 import javax.ws.rs.core.MediaType;
-
 import org.apache.commons.io.IOUtils;
 import org.onap.appc.instar.utils.InstarClientConstant;
-
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
-
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 
 public class Dme2Client {
 
     private static final EELFLogger log = EELFManager.getInstance().getLogger(Dme2Client.class);
     private static final String SDNC_CONFIG_DIR_VAR = "SDNC_CONFIG_DIR";
-    //DME2Client client = null;
-    Properties props = new Properties();
-    String operationName ;
-    String appendContext;
-String mask;
-    String ipAddress;
-    public Dme2Client(String optName, String subCtxt, HashMap<String, String> data) throws Exception{
+    private Properties properties = new Properties();
+    private String operationName;
+    private String appendContext;
+    private String mask;
+    private String ipAddress;
+
+    public Dme2Client(String optName, String subCtxt, Map<String, String> data) throws IOException {
         log.info("Setting Properties for DME2 Client for INSTAR connection");
-        this.operationName=optName;
+        this.operationName = optName;
         this.appendContext = data.get(subCtxt);
-if("getVnfbyIpadress".equals(optName)){
+        if ("getVnfbyIpadress".equals(optName)) {
             this.ipAddress = data.get("ipAddress");
             this.mask = data.get("mask");
         }
         String propDir = System.getenv(SDNC_CONFIG_DIR_VAR);
-        if (propDir == null)
-            throw new Exception(" Cannot find Property file -" + SDNC_CONFIG_DIR_VAR);
+        if (propDir == null) {
+            throw new IOException("Cannot find Property file -" + SDNC_CONFIG_DIR_VAR);
+        }
         String propFile = propDir + InstarClientConstant.OUTBOUND_PROPERTIES;
         InputStream propStream = new FileInputStream(propFile);
-        try
-        {
-            props.load(propStream);
-        }
-        catch (Exception e)
-        {
-            throw new Exception("Could not load properties file " + propFile, e);
-        }
-        finally
-        {
-            try
-            {
+        try {
+            properties.load(propStream);
+        } catch (Exception e) {
+            throw new IOException("Could not load properties file " + propFile, e);
+        } finally {
+            try {
                 propStream.close();
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 log.warn("Could not close FileInputStream", e);
             }
         }
     }
 
-    public  ClientResponse  sendtoInstar() throws Exception {
-
-        log.info("Called Send with operation Name=" + this.operationName + "and = " + props.getProperty(operationName+InstarClientConstant.BASE_URL));
-        String resourceUri = props.getProperty(operationName+InstarClientConstant.BASE_URL)+
-                props.getProperty(operationName + InstarClientConstant.URL_SUFFIX);
-                if(this.ipAddress!=null && this.mask == null){
-            //resourceUri = resourceUri.substring(0,resourceUri.length() - 1) + "?";
-            resourceUri = resourceUri + props.getProperty(operationName+InstarClientConstant.SUB_CONTEXT_BYIPADDRESS);
-            resourceUri = resourceUri + ipAddress;
-        }else if(mask!=null){
-            //resourceUri = resourceUri.substring(0,resourceUri.length() - 1) + "?";
-            resourceUri = resourceUri + props.getProperty(operationName+InstarClientConstant.SUB_CONTEXT_BYIPADDRESS) + ipAddress+ props.getProperty(operationName+InstarClientConstant.SUB_CONTEXT_BYMASK);
-            resourceUri = resourceUri + mask ;
-        }else{
-            resourceUri=resourceUri+ props.getProperty(operationName + InstarClientConstant.SUB_CONTEXT)+ appendContext;
-        }
+    public ClientResponse sendtoInstar() throws SvcLogicException {
+
+        log.info("Called Send with operation Name=" + this.operationName + "and = " +
+            properties.getProperty(operationName + InstarClientConstant.BASE_URL));
+
+        String resourceUri = buildResourceUri();
 
         log.info("DME Endpoint URI:" + resourceUri);
+
         Client client = null;
-        WebResource webResource = null;
+        WebResource webResource;
         ClientResponse clientResponse = null;
-        String authorization = props.getProperty("authorization");
+        String authorization = properties.getProperty("authorization");
         String requestDataType = "application/json";
-        String responseDataType=    MediaType.APPLICATION_JSON;
-        String methodType =  props.getProperty("getIpAddressByVnf_method");
+        String responseDataType = MediaType.APPLICATION_JSON;
+        String methodType = properties.getProperty("getIpAddressByVnf_method");
         String request = "";
-        String userId=props.getProperty("MechID");
-        String password=props.getProperty("MechPass");
+        String userId = properties.getProperty("MechID");
+        String password = properties.getProperty("MechPass");
+
         log.info("authorization = " + authorization + "methodType= " + methodType);
-        try{
+
+        try {
             DefaultClientConfig defaultClientConfig = new DefaultClientConfig();
             System.setProperty("jsse.enableSNIExtension", "false");
-            SSLContext sslContext = null;
+            SSLContext sslContext;
             SecureRestClientTrustManager secureRestClientTrustManager = new SecureRestClientTrustManager();
             sslContext = SSLContext.getInstance("SSL");
-            sslContext.init(null, new javax.net.ssl.TrustManager[] { secureRestClientTrustManager }, null);
-            defaultClientConfig.getProperties().put(
-                    com.sun.jersey.client.urlconnection.HTTPSProperties.PROPERTY_HTTPS_PROPERTIES,
-                    new com.sun.jersey.client.urlconnection.HTTPSProperties(getHostnameVerifier(), sslContext));
+            sslContext.init(null, new javax.net.ssl.TrustManager[]{secureRestClientTrustManager}, null);
+            defaultClientConfig
+                .getProperties()
+                .put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(getHostnameVerifier(), sslContext));
             client = Client.create(defaultClientConfig);
             client.addFilter(new HTTPBasicAuthFilter(userId, password));
 
             webResource = client.resource(new URI(resourceUri));
             webResource.setProperty("Content-Type", "application/json;charset=UTF-8");
 
-            if(HttpMethod.GET.equalsIgnoreCase(methodType)){
+            if (HttpMethod.GET.equalsIgnoreCase(methodType)) {
                 clientResponse = webResource.accept(responseDataType).get(ClientResponse.class);
-            }else if(HttpMethod.POST.equalsIgnoreCase(methodType)){
+            } else if (HttpMethod.POST.equalsIgnoreCase(methodType)) {
                 clientResponse = webResource.type(requestDataType).post(ClientResponse.class, request);
-            }else if(HttpMethod.PUT.equalsIgnoreCase(methodType)){
-                clientResponse = webResource.type(requestDataType).put(ClientResponse.class,request);
-            }else if(HttpMethod.DELETE.equalsIgnoreCase(methodType)){
+            } else if (HttpMethod.PUT.equalsIgnoreCase(methodType)) {
+                clientResponse = webResource.type(requestDataType).put(ClientResponse.class, request);
+            } else if (HttpMethod.DELETE.equalsIgnoreCase(methodType)) {
                 clientResponse = webResource.delete(ClientResponse.class);
             }
-
             return clientResponse;
 
-        }catch (Exception e) {
-            log.info("failed in RESTCONT Action ("+methodType+") for the resource " + resourceUri + ", falut message :"+e.getMessage());
-            throw new Exception("Error While gettting Data from INSTAR" + e.getMessage());
-        }
-        finally {
+        } catch (Exception e) {
+            log.info(
+                "failed in RESTCONT Action (" + methodType + ") for the resource " + resourceUri + ", falut message :"
+                    + e.getMessage());
+            throw new SvcLogicException("Error While gettting Data from INSTAR", e);
+
+        } finally {
             // clean up.
-            webResource = null;
-            if(client != null){
+            if (client != null) {
                 client.destroy();
-                client = null;
             }
         }
+    }
 
-
+    private String buildResourceUri() {
+        String resourceUri = properties.getProperty(operationName + InstarClientConstant.BASE_URL) +
+            properties.getProperty(operationName + InstarClientConstant.URL_SUFFIX);
+
+        if (ipAddress != null && mask == null) {
+            resourceUri = resourceUri
+                + properties.getProperty(operationName + InstarClientConstant.SUB_CONTEXT_BYIPADDRESS) + ipAddress;
+        } else if (mask != null) {
+            resourceUri = resourceUri
+                + properties.getProperty(operationName + InstarClientConstant.SUB_CONTEXT_BYIPADDRESS)
+                + ipAddress + properties.getProperty(operationName + InstarClientConstant.SUB_CONTEXT_BYMASK) + mask;
+        } else {
+            resourceUri = resourceUri
+                + properties.getProperty(operationName + InstarClientConstant.SUB_CONTEXT) + appendContext;
+        }
+        return resourceUri;
     }
 
     public String send() {
         String response = null;
-        try{
-
-            if(props !=null &&
-                    props.getProperty(InstarClientConstant.MOCK_INSTAR) != null &&
-                    props.getProperty(InstarClientConstant.MOCK_INSTAR).equalsIgnoreCase("true"))
-                return  IOUtils.toString(Dme2Client.class.getClassLoader().getResourceAsStream("/tmp/sampleResponse"), Charset.defaultCharset());
-
+        try {
+            if (validateProperties()) {
+                return IOUtils.toString(Dme2Client.class.getClassLoader().getResourceAsStream("/tmp/sampleResponse"),
+                    Charset.defaultCharset());
+            }
             ClientResponse clientResponse = sendtoInstar();
-            if(clientResponse != null){
+            if (clientResponse != null) {
                 response = clientResponse.getEntity(String.class);
                 log.info(clientResponse.getStatus() + " Status, Response :" + response);
-
             }
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error("Failed to send response", e);
         }
         return response;
     }
 
-    private HostnameVerifier getHostnameVerifier() {
-        return new HostnameVerifier() {
-            @Override
-            public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) {
-                return true;
-            }
-        };
+    private boolean validateProperties() {
+        return properties != null
+            && properties.getProperty(InstarClientConstant.MOCK_INSTAR) != null
+            && "true".equalsIgnoreCase(properties.getProperty(InstarClientConstant.MOCK_INSTAR));
     }
 
-
+    private HostnameVerifier getHostnameVerifier() {
+        return (hostname, sslSession) -> true;
+    }
 }