Fixes of sonar violations sdc and refactor 15/56015/9
authorkoblosz <sandra.koblosz@nokia.com>
Mon, 9 Jul 2018 11:42:31 +0000 (13:42 +0200)
committerTal Gitelman <tg851x@intl.att.com>
Mon, 6 Aug 2018 10:09:52 +0000 (10:09 +0000)
Issue-ID: SDC-1484
Change-Id: I3cf17454c533d3419c97af63cc6b5412976726fb
Signed-off-by: Sandra Koblosz <sandra.koblosz@nokia.com>
catalog-model/src/main/java/org/openecomp/sdc/be/model/ArtifactDefinition.java
common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/ProductMetadataDataDefinition.java
common/onap-common-configuration-management/onap-configuration-management-core/pom.xml
common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/ConfigurationUtils.java
common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/NonConfigResource.java
common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationImpl.java
common/onap-common-configuration-management/onap-configuration-management-core/src/test/java/org/onap/config/type/NonConfigResourceTest.java [new file with mode: 0644]

index bdffc8a..42e66c0 100644 (file)
@@ -89,12 +89,10 @@ public class ArtifactDefinition extends ArtifactDataDefinition {
     }
 
 
-    public boolean checkEsIdExist() {
-        if ((getEsId() != null) && (!getEsId().trim().isEmpty())) {
-            return true;
-        }
-        return false;
-    }
+
+       public boolean checkEsIdExist() {
+               return (getEsId() != null) && (!getEsId().trim().isEmpty());
+       }
 
     @Override
     public int hashCode() {
index cb9316d..7c38eb5 100644 (file)
@@ -110,7 +110,7 @@ public class ProductMetadataDataDefinition extends ComponentMetadataDataDefiniti
                                return false;
                } else if (!fullName.equals(other.fullName))
                        return false;
-               if (isActive == isActive) {
+               if (isActive == null) {
                        if (other.isActive != null)
                                return false;
                } else if (!isActive.equals(other.isActive))
index 78c3787..46e4579 100644 (file)
             <scope>test</scope>
             <version>${junit.version}</version>
         </dependency>
+        <dependency>
+            <groupId>io.vavr</groupId>
+            <artifactId>vavr</artifactId>
+            <version>0.9.2</version>
+        </dependency>
     </dependencies>
 
 </project>
index db64f7f..9782fc9 100644 (file)
@@ -670,7 +670,7 @@ public class ConfigurationUtils {
         Configuration dbConfig = ConfigurationRepository.lookup()
                 .getConfigurationFor(Constants.DEFAULT_TENANT, Constants.DB_NAMESPACE);
         BasicConfigurationBuilder<AgglomerateConfiguration> builder =
-                new BasicConfigurationBuilder<AgglomerateConfiguration>(AgglomerateConfiguration.class);
+                new BasicConfigurationBuilder<>(AgglomerateConfiguration.class);
         builder.configure(
                 new Parameters().database()
                         .setDataSource(ConfigurationDataSource.lookup())
index 830cdfe..a63b455 100644 (file)
 package org.onap.config;
 
+import io.vavr.Function1;
+import io.vavr.collection.HashSet;
+import io.vavr.collection.Set;
+import io.vavr.control.Option;
+
 import java.io.File;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.function.Predicate;
+
+import static io.vavr.API.Option;
 
 /**
  * The type Non config resource.
  */
 public class NonConfigResource {
 
-  private static Set<URL> urls = new HashSet<>();
-  private static Set<File> files = new HashSet<>();
+    private Function1<String, String> propertyGetter;
+    private Set<URL> urls;
+    private Set<Path> files;
 
-  /**
-   * Add.
-   *
-   * @param url the url
-   */
-  public static void add(URL url) {
-    urls.add(url);
-  }
+    private NonConfigResource(Function1<String, String> propertyGetter) {
+        this.propertyGetter = propertyGetter;
+        this.files = HashSet.empty();
+        this.urls = HashSet.empty();
+    }
 
-  /**
-   * Add.
-   *
-   * @param file the file
-   */
-  public static void add(File file) {
-    files.add(file);
-  }
+    public static NonConfigResource create(Function1<String, String> propertyGetter) {
+        return new NonConfigResource(propertyGetter);
+    }
 
-  /**
-   * Locate path.
-   *
-   * @param resource the resource
-   * @return the path
-   */
-  public static Path locate(String resource) {
-    try {
-      if (resource != null) {
-        File file = new File(resource);
-        if (file.exists()) {
-          return Paths.get(resource);
-        }
-        for (File availableFile : files) {
-          if (availableFile.getAbsolutePath().endsWith(resource) && availableFile.exists()) {
-            return Paths.get(availableFile.getAbsolutePath());
-          }
-        }
-        if (System.getProperty("node.config.location") != null) {
-          Path path = locate(new File(System.getProperty("node.config.location")), resource);
-          if (path != null) {
-            return path;
-          }
-        }
-        if (System.getProperty("config.location") != null) {
-          Path path = locate(new File(System.getProperty("config.location")), resource);
-          if (path != null) {
-            return path;
-          }
-        }
-        for (URL url : urls) {
-          if (url.getFile().endsWith(resource)) {
-            return Paths.get(url.toURI());
-          }
-        }
-      }
-    } catch (Exception exception) {
-      exception.printStackTrace();
+    /**
+     * Add.
+     *
+     * @param url the url
+     */
+    public void add(URL url) {
+        urls = urls.add(url);
+    }
+
+    /**
+     * Add.
+     *
+     * @param file the file
+     */
+    public void add(File file) {
+        files = files.add(file.toPath());
     }
-    return null;
-  }
 
-  private static Path locate(File root, String resource) {
-    if (root.exists()) {
-      Collection<File> filesystemResources = ConfigurationUtils.getAllFiles(root, true, false);
-      Predicate<File> f1 = ConfigurationUtils::isConfig;
-      for (File file : filesystemResources) {
-        if (!f1.test(file)) {
-          add(file);
-          if (file.getAbsolutePath().endsWith(resource)) {
-            return Paths.get(file.getAbsolutePath());
-          }
+    /**
+     * Locate path.
+     *
+     * @param resource the resource
+     * @return the path
+     */
+    public Path locate(String resource) {
+        Path toReturn = null;
+        try {
+            if (resource != null) {
+                toReturn = tryToLocateResource(resource).getOrNull();
+            }
+        } catch (Exception exception) {
+            exception.printStackTrace();
         }
-      }
+        return toReturn;
+    }
+
+    private Option<Path> tryToLocateResource(String resource) throws URISyntaxException {
+        return new File(resource).exists() ? Option(Paths.get(resource)) : getPathForResourceAmongFiles(resource)
+                .orElse(getPathForResourceBasedOnProperty(resource, "node.config.location"))
+                .orElse(getPathForResourceBasedOnProperty(resource, "config.location"))
+                .orElse(getPathForResourceAmongUrls(resource));
+    }
+
+    private Option<Path> getPathForResourceBasedOnProperty(String resource, String configPropertyKey) {
+        return Option(propertyGetter.apply(configPropertyKey))
+                .flatMap(el -> locate(new File(el), resource));
+    }
+
+    private Option<Path> getPathForResourceAmongFiles(String resource) {
+        return files.map(Path::toAbsolutePath)
+                .filter(path -> path.toFile().exists() && path.endsWith(resource))
+                .headOption();
+    }
+
+    private Option<Path> getPathForResourceAmongUrls(String resource) throws URISyntaxException {
+        return urls.filter(url -> url.getFile().endsWith(resource))
+                .headOption()
+                .flatMap(url -> Option(Paths.get(url.getPath())));
+    }
+
+    private Option<Path> locate(File root, String resource) {
+        return root.exists() ? Option.ofOptional(ConfigurationUtils.getAllFiles(root, true, false)
+                .stream()
+                .filter(file -> !ConfigurationUtils.isConfig(file))
+                .peek(this::add)
+                .filter(file -> file.getAbsolutePath().endsWith(resource))
+                .map(file -> Paths.get(file.getAbsolutePath()))
+                .findAny()) : Option.none();
     }
-    return null;
-  }
 }
index 00725b1..56390ea 100644 (file)
@@ -1,5 +1,6 @@
 package org.onap.config.impl;
 
+
 import org.apache.commons.configuration2.Configuration;
 import org.apache.commons.configuration2.DatabaseConfiguration;
 import org.onap.config.ConfigurationUtils;
@@ -39,6 +40,7 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration {
     ;
   };
   private static boolean instantiated = false;
+  private static NonConfigResource nonConfigResource = NonConfigResource.create(propertyName -> System.getProperties().getProperty(propertyName));
   /**
    * The Change notifier.
    */
@@ -66,7 +68,7 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration {
         }
         moduleConfig.addConfig(url);
       } else {
-        NonConfigResource.add(url);
+        nonConfigResource.add(url);
       }
     }
     String configLocation = System.getProperty("config.location");
@@ -84,7 +86,7 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration {
           }
           moduleConfig.addConfig(file);
         } else {
-          NonConfigResource.add(file);
+          nonConfigResource.add(file);
         }
       }
     }
@@ -453,7 +455,7 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration {
     if (String.class.equals(clazz)) {
       if (obj.toString().startsWith("@") && ConfigurationUtils.isExternalLookup(processingHint)) {
         String contents = ConfigurationUtils
-            .getFileContents(NonConfigResource.locate(obj.toString().substring(1).trim()));
+            .getFileContents(nonConfigResource.locate(obj.toString().substring(1).trim()));
         if (contents == null) {
           contents = ConfigurationUtils.getFileContents(obj.toString().substring(1).trim());
         }
diff --git a/common/onap-common-configuration-management/onap-configuration-management-core/src/test/java/org/onap/config/type/NonConfigResourceTest.java b/common/onap-common-configuration-management/onap-configuration-management-core/src/test/java/org/onap/config/type/NonConfigResourceTest.java
new file mode 100644 (file)
index 0000000..0671996
--- /dev/null
@@ -0,0 +1,82 @@
+package org.onap.config.type;
+
+import com.google.common.collect.ImmutableMap;
+import org.junit.Test;
+import org.onap.config.NonConfigResource;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Map;
+
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+public class NonConfigResourceTest {
+
+    private final URL sampleUrlResource = NonConfigResourceTest.class.getResource("NonConfigResourceTest.class");
+    private final String sampleResourcePath = sampleUrlResource.getPath();
+    private final File sampleResourceFile = new File(sampleResourcePath);
+
+    @Test
+    public void testShouldLocateResourceWhenAbsPathProvided2() {
+        Map<String, String> properties = ImmutableMap.of();
+        Path actualResourcePath = NonConfigResource.create(properties::get).locate(sampleResourceFile.toString());
+
+        assertTrue(actualResourcePath.compareTo(sampleResourceFile.toPath()) == 0);
+    }
+
+    @Test
+    public void testShouldLocateResourceWhenPresentInFiles2() {
+        Map<String, String> properties = ImmutableMap.of();
+        NonConfigResource testedObject = NonConfigResource.create(properties::get);
+        testedObject.add(sampleResourceFile);
+
+        Path thisFilePath = testedObject.locate("NonConfigResourceTest.class");
+
+        assertTrue(thisFilePath.compareTo(sampleResourceFile.toPath()) == 0);
+    }
+
+    @Test
+    public void testShouldLocateResourceWhenNodeConfigPropertyIsSet2() throws URISyntaxException, MalformedURLException {
+        Map<String, String> properties = ImmutableMap.of("node.config.location", new File(sampleResourcePath).getParentFile().getPath());
+        NonConfigResource testedNonConfigResource = NonConfigResource.create(properties::get);
+        System.getProperties().setProperty("node.config.location", new File(sampleResourcePath).getParentFile().getPath());
+        Path thisFilePath = testedNonConfigResource.locate("NonConfigResourceTest.class");
+
+        assertTrue(thisFilePath.compareTo(new File(sampleResourcePath).toPath()) == 0);
+    }
+
+    @Test
+    public void testShouldLocateResourceWhenConfigPropertyIsSet2() {
+        Map<String, String> properties = ImmutableMap.of("config.location", new File(sampleResourcePath).getParentFile().getPath());
+        NonConfigResource testedNonConfigResource = NonConfigResource.create(properties::get);
+        Path thisFilePath = testedNonConfigResource.locate("NonConfigResourceTest.class");
+
+        assertTrue(thisFilePath.compareTo(new File(sampleResourcePath).toPath()) == 0);
+    }
+
+    @Test
+    public void testShouldLocatePathWhenResourcePresentInUrls2() throws URISyntaxException {
+        Map<String, String> properties = ImmutableMap.of();
+        NonConfigResource testedObject = NonConfigResource.create(properties::get);
+        testedObject.add(sampleUrlResource);
+
+        Path thisFilePath = testedObject.locate("NonConfigResourceTest.class");
+
+        assertTrue(thisFilePath.compareTo(Paths.get(sampleUrlResource.toURI())) == 0);
+    }
+
+    @Test
+    public void testShouldNotLocateResource2() throws URISyntaxException {
+        Map<String, String> properties = ImmutableMap.of();
+        NonConfigResource testedObject = NonConfigResource.create(properties::get);
+
+        Path thisFilePath = testedObject.locate("nonexistingresource");
+
+        assertNull(thisFilePath);
+    }
+}