Resolved below sonar issues: 73/14273/2
authorBharat saraswal <bharat.saraswal@huawei.com>
Thu, 21 Sep 2017 14:21:48 +0000 (19:51 +0530)
committerBharat saraswal <bharat.saraswal@huawei.com>
Thu, 21 Sep 2017 15:37:50 +0000 (15:37 +0000)
reduced method complexitity.
handled null pointer exceptions.
creates static variables for string usability.

Issue-Id:AAI-211

Change-Id: Ia110923b3e157f73fbc65d5629b5bd22a872b3de
Signed-off-by: Bharat saraswal <bharat.saraswal@huawei.com>
ajsc-aai/src/main/java/org/openecomp/aai/ajsc_aai/JaxrsUserService.java
ajsc-aai/src/main/java/org/openecomp/aai/ajsc_aai/filemonitor/ServicePropertiesMap.java
ajsc-aai/src/main/java/org/openecomp/aai/audit/ListEndpoints.java

index 39c78f6..360a50c 100644 (file)
 
 package org.openecomp.aai.ajsc_aai;
 
+import java.util.HashMap;
+import java.util.Map;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
-import java.util.Map;
-import java.util.HashMap;
 
 @Path("/user")
 public class JaxrsUserService {
-       
-       private static final Map<String,String> userIdToNameMap;
-       static {
-               userIdToNameMap = new HashMap<String,String>();
-               userIdToNameMap.put("userID1","Name1");
-               userIdToNameMap.put("userID2","Name2");
-       }
-       
+
+    private static final Map<String, String> userIdToNameMap;
+
+    static {
+        userIdToNameMap = new HashMap<>();
+        userIdToNameMap.put("userID1", "Name1");
+        userIdToNameMap.put("userID2", "Name2");
+    }
+
     /**
      * Lookup user.
      *
@@ -47,8 +48,7 @@ public class JaxrsUserService {
     @Path("/{userId}")
     @Produces("text/plain")
     public String lookupUser(@PathParam("userId") String userId) {
-       String name = userIdToNameMap.get(userId);
+        String name = userIdToNameMap.get(userId);
         return name != null ? name : "unknown id";
     }
-    
 }
index 0ecdf22..9bfcad0 100644 (file)
 
 package org.openecomp.aai.ajsc_aai.filemonitor;
 
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.File;
 import java.io.FileInputStream;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
+public class ServicePropertiesMap {
+
+    private static HashMap<String, HashMap<String, String>> mapOfMaps = new HashMap<>();
+    private static final Logger logger = LoggerFactory.getLogger(ServicePropertiesMap.class);
+
+    /**
+     * Refresh.
+     *
+     * @param file the file
+     * @throws Exception the exception
+     */
+    public static void refresh(File file) throws Exception {
+        try {
+            logger.info(String.format("Loading properties - %s", file != null ? file.getName() : ""));
+
+            //Store .json & .properties files into map of maps
+            if (file != null) {
+                String filePath = file.getPath();
+
+                if (filePath.lastIndexOf(".json") > 0) {
+
+                    ObjectMapper om = new ObjectMapper();
+                    TypeReference<HashMap<String, String>> typeRef = new TypeReference<HashMap<String, String>>() {
+                    };
+                    HashMap<String, String> propMap = om.readValue(file, typeRef);
+                    HashMap<String, String> lcasePropMap = new HashMap<>();
+                    for (HashMap.Entry<String, String> entry : propMap.entrySet()) {
+                        String lcaseKey = ifNullThenEmpty(entry.getKey());
+                        lcasePropMap.put(lcaseKey, entry.getValue());
+                    }
+
+                    mapOfMaps.put(file.getName(), lcasePropMap);
+                } else if (filePath.lastIndexOf(".properties") > 0) {
+                    Properties prop = new Properties();
+                    FileInputStream fis = new FileInputStream(file);
+                    prop.load(fis);
+
+                    @SuppressWarnings("unchecked")
+                    HashMap<String, String> propMap = new HashMap<String, String>((Map) prop);
+
+                    mapOfMaps.put(file.getName(), propMap);
+                }
+
+                logger.info("File - " + file.getName()
+                    + " is loaded into the map and the corresponding system properties have been refreshed");
+            } else {
+                logger.error("File  cannot be loaded into the map ");
+            }
+        } catch (Exception e) {
+            logger.error("File " + (file != null ? file.getName() : "") + " cannot be loaded into the map ", e);
+            throw new Exception("Error reading map file " + (file != null ? file.getName() : ""), e);
+        }
+    }
 
-public class ServicePropertiesMap 
-{
-       private static HashMap<String, HashMap<String, String>> mapOfMaps = new HashMap<String, HashMap<String, String>>();
-       static final Logger logger = LoggerFactory.getLogger(ServicePropertiesMap.class);
-       
-       /**
-        * Refresh.
-        *
-        * @param file the file
-        * @throws Exception the exception
-        */
-       public static void refresh(File file) throws Exception
-       {
-               try
-               {
-                       logger.info("Loading properties - " + (file != null?file.getName():""));
-                       
-                       //Store .json & .properties files into map of maps
-                       String filePath = file.getPath();
-                       
-                       if(filePath.lastIndexOf(".json")>0){
-                               
-                               ObjectMapper om = new ObjectMapper();
-                               TypeReference<HashMap<String, String>> typeRef = new TypeReference<HashMap<String, String>>() {};
-                               HashMap<String, String> propMap = om.readValue(file, typeRef);
-                               HashMap<String, String> lcasePropMap = new HashMap<String, String>();
-                               for (String key : propMap.keySet() )
-                               {
-                                       String lcaseKey = ifNullThenEmpty(key);
-                                       lcasePropMap.put(lcaseKey, propMap.get(key));
-                               }
-                               
-                               mapOfMaps.put(file.getName(), lcasePropMap);
-                               
-                               
-                       }else if(filePath.lastIndexOf(".properties")>0){
-                               Properties prop = new Properties();
-                               FileInputStream fis = new FileInputStream(file);
-                               prop.load(fis);
-                               
-                               @SuppressWarnings("unchecked")
-                               HashMap<String, String> propMap = new HashMap<String, String>((Map)prop);
-                               
-                               mapOfMaps.put(file.getName(), propMap);
-                       }
+    /**
+     * Gets the property.
+     *
+     * @param fileName the file name
+     * @param propertyKey the property key
+     * @return the property
+     */
+    public static String getProperty(String fileName, String propertyKey) {
+        HashMap<String, String> propMap = mapOfMaps.get(fileName);
+        return propMap != null ? propMap.get(ifNullThenEmpty(propertyKey)) : "";
+    }
 
-                       logger.info("File - " + file.getName() + " is loaded into the map and the corresponding system properties have been refreshed");
-               }
-               catch (Exception e)
-               {
-                       logger.error("File " + (file != null?file.getName():"") + " cannot be loaded into the map ", e);
-                       throw new Exception("Error reading map file " + (file != null?file.getName():""), e);
-               }
-       }
-       
-       /**
-        * Gets the property.
-        *
-        * @param fileName the file name
-        * @param propertyKey the property key
-        * @return the property
-        */
-       public static String getProperty(String fileName, String propertyKey)
-       {
-               HashMap<String, String> propMap = mapOfMaps.get(fileName);
-               return propMap!=null?propMap.get(ifNullThenEmpty(propertyKey)):"";
-       }
-       
-       /**
-        * Gets the properties.
-        *
-        * @param fileName the file name
-        * @return the properties
-        */
-       public static HashMap<String, String> getProperties(String fileName){
-               return mapOfMaps.get(fileName);
-       }
-       
-       /**
-        * If null then empty.
-        *
-        * @param key the key
-        * @return the string
-        */
-       private static String ifNullThenEmpty(String key) {
-               if (key == null) {
-                       return "";
-               } else {                                        
-                       return key;
-               }               
-       }
+    /**
+     * Gets the properties.
+     *
+     * @param fileName the file name
+     * @return the properties
+     */
+    public static HashMap<String, String> getProperties(String fileName) {
+        return mapOfMaps.get(fileName);
+    }
 
+    /**
+     * If null then empty.
+     *
+     * @param key the key
+     * @return the string
+     */
+    private static String ifNullThenEmpty(String key) {
+        return key == null ? "" : key;
+    }
 }
index e354973..7665673 100644 (file)
 
 package org.openecomp.aai.audit;
 
+import com.google.common.base.CaseFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-
 import org.apache.commons.lang.StringUtils;
-import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
 import org.openecomp.aai.introspection.Introspector;
 import org.openecomp.aai.introspection.IntrospectorFactory;
 import org.openecomp.aai.introspection.Loader;
@@ -36,214 +35,216 @@ import org.openecomp.aai.introspection.LoaderFactory;
 import org.openecomp.aai.introspection.ModelType;
 import org.openecomp.aai.introspection.Version;
 import org.openecomp.aai.logging.LogLineBuilder;
-
-import com.google.common.base.CaseFormat;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * The Class ListEndpoints.
  */
 public class ListEndpoints {
 
-       
-       private DynamicJAXBContext context = null;
-       
-       private final String start = "inventory";
-       
-       private final String[] blacklist = { "search", "aai-internal", "models", "named-queries" };
-       
-       private List<String> endpoints = new ArrayList<>();
-       
-       private Map<String, String> endpointToLogicalName = new HashMap<String, String>();
-       
-       private final LogLineBuilder llBuilder = new LogLineBuilder();
-
-       /**
-        * Instantiates a new list endpoints.
-        *
-        * @param version the version
-        */
-       public ListEndpoints(Version version) {
-
-               Loader loader = LoaderFactory.createLoaderForVersion(ModelType.MOXY, version, llBuilder);
-               Introspector start = loader.introspectorFromName(this.start);
-
-               beginAudit(start, "/aai/" + version);
-
-       }
-
-       /**
-        * Begin audit.
-        *
-        * @param obj the obj
-        * @param uri the uri
-        */
-       private void beginAudit(Introspector obj, String uri) {
-               String currentUri = "";
-
-               if (!obj.getDbName().equals("inventory")) {
-                       currentUri = uri + obj.getGenericURI();
-               } else {
-                       currentUri = uri;
-               }
-               if (obj.getName().equals("relationship-data") || obj.getName().equals("related-to-property")) {
-                       return;
-               }
-               if (!obj.isContainer()) {
-                       endpoints.add(currentUri);
-               }
-               
-               populateLogicalName(obj, uri, currentUri);
-               
-               outer: for (String propName : obj.getProperties()) {
-                       for (String item : blacklist) {
-                               if (propName.equals(item)) {
-                                       continue outer;
-                               }
-                       }
-                       if (obj.isListType(propName)) {
-                               if (obj.isComplexGenericType(propName)) {
-                                       beginAudit(
-                                                       IntrospectorFactory.newInstance(ModelType.MOXY, obj.newInstanceOfNestedProperty(propName), llBuilder),
-                                                       currentUri);
-                               }
-                       } else if (obj.isComplexType(propName)) {
-                               beginAudit(IntrospectorFactory.newInstance(ModelType.MOXY, obj.newInstanceOfProperty(propName), llBuilder),
-                                               currentUri);
-                       }
-               }
-
-       }
-
-       /**
-        * Populate logical name.
-        *
-        * @param obj the obj
-        * @param uri the uri
-        * @param currentUri the current uri
-        */
-       private void populateLogicalName(Introspector obj, String uri, String currentUri) {
-
-               if (obj.getDbName().equals("inventory") || currentUri.split("/").length <= 4 || currentUri.endsWith("relationship-list")) {
-                       return;
-               }
-               
-               if (uri.endsWith("/relationship-list")) {
-                       uri = uri.substring(0, uri.lastIndexOf("/"));
-               }
-
-               String logicalName = "";
-               String keys = "";
-               
-
-               if (!obj.getAllKeys().isEmpty()) {
-                       
-                       Pattern p = Pattern.compile("/\\{[\\w\\d\\-]+\\}/\\{[\\w\\d\\-]+\\}+$");
-                       Matcher m = p.matcher(currentUri);
-                       
-                       if (m.find()) {
-                               keys = StringUtils.join(obj.getAllKeys(), "-and-");
-                       } else {
-                               keys = StringUtils.join(obj.getAllKeys(), "-or-");
-                       }
-                       keys = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, keys);
-                       if (!keys.isEmpty()) {
-                               keys = "With" + keys;
-                       }
-               }
-
-               logicalName = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, obj.getDbName()) + keys;
-               
-               if (endpointToLogicalName.containsKey(uri) && uri.endsWith("}")) {
-                       logicalName = logicalName + "From" + endpointToLogicalName.get(uri);
-               } else if (endpointToLogicalName.containsKey(uri.substring(0, uri.lastIndexOf("/")))) {
-                       logicalName = logicalName + "From" + endpointToLogicalName.get(uri.substring(0, uri.lastIndexOf("/")));
-               }
-
-               endpointToLogicalName.put(currentUri, logicalName);
-               
-       }
-       
-       /**
-        * Gets the logical names.
-        *
-        * @return the logical names
-        */
-       public Map<String, String> getLogicalNames() {
-               
-               return endpointToLogicalName;
-
-       }
-
-       /**
-        * Gets the endpoints.
-        *
-        * @return the endpoints
-        */
-       public List<String> getEndpoints() {
-
-               return this.getEndpoints("");
-
-       }
-
-       /**
-        * Gets the endpoints.
-        *
-        * @param filterOut the filter out
-        * @return the endpoints
-        */
-       public List<String> getEndpoints(String filterOut) {
-               List<String> result = new ArrayList<>();
-               Pattern p = null;
-               Matcher m = null;
-               if (!filterOut.equals("")) {
-                       p = Pattern.compile(filterOut);
-                       m = null;
-               }
-               for (String s : endpoints) {
-                       if (p != null) {
-                               m = p.matcher(s);
-                               if (m.find()) {
-                                       continue;
-                               }
-                       }
-
-                       result.add(s);
-               }
-
-               return result;
-
-       }
-
-       /** 
-        * {@inheritDoc}
-        */
-       @Override
-       public String toString() {
-               StringBuilder sb = new StringBuilder();
-               for (String s : endpoints) {
-                       sb.append(s + "\n");
-               }
-               return sb.toString();
-
-       }
-
-       /**
-        * To string.
-        *
-        * @param filterOut the filter out
-        * @return the string
-        */
-       public String toString(String filterOut) {
-               StringBuilder sb = new StringBuilder();
-               Pattern p = Pattern.compile(filterOut);
-               Matcher m = null;
-               for (String s : endpoints) {
-                       m = p.matcher(s);
-                       if (!m.find()) {
-                               sb.append(s + "\n");
-                       }
-               }
-               return sb.toString();
-       }
 
+    private static final Logger log = LoggerFactory.getLogger(ListEndpoints.class);
+    private static final String INVENTORY = "inventory";
+
+    private static final String[] blacklist = {"search", "aai-internal", "models", "named-queries"};
+
+    private List<String> endpoints = new ArrayList<>();
+
+    private Map<String, String> endpointToLogicalName = new HashMap<>();
+
+    private final LogLineBuilder llBuilder = new LogLineBuilder();
+
+    /**
+     * Instantiates a new list endpoints.
+     *
+     * @param version the version
+     */
+    public ListEndpoints(Version version) {
+
+        Loader loader = LoaderFactory.createLoaderForVersion(ModelType.MOXY, version, llBuilder);
+        if (loader != null) {
+            Introspector introspector = loader.introspectorFromName(INVENTORY);
+
+            beginAudit(introspector, "/aai/" + version);
+        } else {
+            log.error(String.format("failed to create logger for %s version", version));
+        }
+    }
+
+    /**
+     * Begin audit.
+     *
+     * @param obj the obj
+     * @param uri the uri
+     */
+    private void beginAudit(Introspector obj, String uri) {
+        String currentUri = getCurrentUri(obj, uri);
+
+        if (obj.getName().equals("relationship-data") || obj.getName().equals("related-to-property")) {
+            return;
+        }
+        if (!obj.isContainer()) {
+            endpoints.add(currentUri);
+        }
+
+        populateLogicalName(obj, uri, currentUri);
+
+        handleAudit(obj, currentUri);
+    }
+
+    private String getCurrentUri(Introspector obj, String uri) {
+        if (!obj.getDbName().equals(INVENTORY)) {
+            return uri + obj.getGenericURI();
+        }
+        return uri;
+    }
+
+    private void handleAudit(Introspector obj, String currentUri) {
+        outer:
+        for (String propName : obj.getProperties()) {
+            for (String item : blacklist) {
+                if (propName.equals(item)) {
+                    continue outer;
+                }
+            }
+            if (obj.isListType(propName)) {
+                if (obj.isComplexGenericType(propName)) {
+                    beginAudit(
+                        IntrospectorFactory
+                            .newInstance(ModelType.MOXY, obj.newInstanceOfNestedProperty(propName), llBuilder),
+                        currentUri);
+                }
+            } else if (obj.isComplexType(propName)) {
+                beginAudit(
+                    IntrospectorFactory.newInstance(ModelType.MOXY, obj.newInstanceOfProperty(propName), llBuilder),
+                    currentUri);
+            }
+        }
+    }
+
+    /**
+     * Populate logical name.
+     *
+     * @param obj the obj
+     * @param uriString the uri
+     * @param currentUri the current uri
+     */
+    private void populateLogicalName(Introspector obj, String uriString, String currentUri) {
+
+        if (obj.getDbName().equals(INVENTORY) || currentUri.split("/").length <= 4 || currentUri
+            .endsWith("relationship-list")) {
+            return;
+        }
+        String uri = "";
+        if (uriString.endsWith("/relationship-list")) {
+            uri = uriString.substring(0, uriString.lastIndexOf('/'));
+        }
+
+        String logicalName;
+        String keys = "";
+
+        if (!obj.getAllKeys().isEmpty()) {
+
+            Pattern p = Pattern.compile("/\\{[\\w\\d\\-]+\\}/\\{[\\w\\d\\-]+\\}+$");
+            Matcher m = p.matcher(currentUri);
+
+            if (m.find()) {
+                keys = StringUtils.join(obj.getAllKeys(), "-and-");
+            } else {
+                keys = StringUtils.join(obj.getAllKeys(), "-or-");
+            }
+            keys = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, keys);
+            if (!keys.isEmpty()) {
+                keys = "With" + keys;
+            }
+        }
+
+        logicalName = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, obj.getDbName()) + keys;
+
+        if (endpointToLogicalName.containsKey(uri) && uri.endsWith("}")) {
+            logicalName = logicalName + "From" + endpointToLogicalName.get(uri);
+        } else if (endpointToLogicalName.containsKey(uri.substring(0, uri.lastIndexOf('/')))) {
+            logicalName = logicalName + "From" + endpointToLogicalName.get(uri.substring(0, uri.lastIndexOf('/')));
+        }
+
+        endpointToLogicalName.put(currentUri, logicalName);
+    }
+
+    /**
+     * Gets the logical names.
+     *
+     * @return the logical names
+     */
+    public Map<String, String> getLogicalNames() {
+
+        return endpointToLogicalName;
+    }
+
+    /**
+     * Gets the endpoints.
+     *
+     * @return the endpoints
+     */
+    public List<String> getEndpoints() {
+
+        return this.getEndpoints("");
+    }
+
+    /**
+     * Gets the endpoints.
+     *
+     * @param filterOut the filter out
+     * @return the endpoints
+     */
+    public List<String> getEndpoints(String filterOut) {
+        List<String> result = new ArrayList<>();
+        Pattern p = null;
+        Matcher m;
+        if (!"".equals(filterOut)) {
+            p = Pattern.compile(filterOut);
+        }
+        for (String s : endpoints) {
+            if (p != null) {
+                m = p.matcher(s);
+                if (m.find()) {
+                    continue;
+                }
+            }
+            result.add(s);
+        }
+
+        return result;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : endpoints) {
+            sb.append(s).append("\n");
+        }
+        return sb.toString();
+    }
+
+    /**
+     * To string.
+     *
+     * @param filterOut the filter out
+     * @return the string
+     */
+    public String toString(String filterOut) {
+        StringBuilder sb = new StringBuilder();
+        Pattern p = Pattern.compile(filterOut);
+        Matcher m;
+        for (String s : endpoints) {
+            m = p.matcher(s);
+            if (!m.find()) {
+                sb.append(s).append("\n");
+            }
+        }
+        return sb.toString();
+    }
 }