github-code-scanning[bot] commented on code in PR #13877:
URL: https://github.com/apache/druid/pull/13877#discussion_r1123806649


##########
processing/src/main/java/org/apache/druid/guice/ExtensionsLoader.java:
##########
@@ -109,7 +116,7 @@
   }
 
   @VisibleForTesting
-  public Map<Pair<File, Boolean>, URLClassLoader> getLoadersMap()
+  public Map<String, URLClassLoader> getLoadersMap()

Review Comment:
   ## Exposing internal representation
   
   getLoadersMap exposes the internal representation stored in field loaders. 
The value may be modified [after this call to getLoadersMap](1).
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/4368)



##########
processing/src/test/java/org/apache/druid/guice/ExtensionsLoaderTest.java:
##########
@@ -217,58 +241,121 @@
 
     final File absolutePathExtension = temporaryFolder.newFolder();
 
-    final ExtensionsConfig config = new ExtensionsConfig()
-    {
-      @Override
-      public LinkedHashSet<String> getLoadList()
-      {
-        return Sets.newLinkedHashSet(Arrays.asList("mysql-metadata-storage", 
absolutePathExtension.getAbsolutePath()));
-      }
-
-      @Override
-      public String getDirectory()
-      {
-        return extensionsDir.getAbsolutePath();
-      }
-    };
+    final ExtensionsConfig config = ExtensionsConfig.builder()
+        .directory(extensionsDir.getAbsolutePath())
+        .loadList(Arrays.asList("mysql-metadata-storage", 
absolutePathExtension.getAbsolutePath()))
+        .build();
     final ExtensionsLoader extnLoader = new ExtensionsLoader(config);
     final File mysql_metadata_storage = new File(extensionsDir, 
"mysql-metadata-storage");
     final File random_extension = new File(extensionsDir, "random-extensions");
 
     mysql_metadata_storage.mkdir();
     random_extension.mkdir();
 
-    final File[] expectedFileList = new File[]{mysql_metadata_storage, 
absolutePathExtension};
-    final File[] actualFileList = extnLoader.getExtensionFilesToLoad();
-    Assert.assertArrayEquals(expectedFileList, actualFileList);
+    final List<File> expectedFileList = Arrays.asList(mysql_metadata_storage, 
absolutePathExtension);
+    final List<File> actualFileList = extnLoader.getExtensionFilesToLoad();
+    Assert.assertEquals(expectedFileList, actualFileList);
+  }
+
+  @Test
+  public void testGetExtensionFilesToLoad_with_load_list_and_path() throws 
IOException
+  {
+    // The loader only looks for directories: doesn't matter if they are empty.
+    final File extensionsDir1 = temporaryFolder.newFolder();
+    String extn1 = "extension1";
+    File extn1Dir = new File(extensionsDir1, extn1);
+    extn1Dir.mkdir();
+    final File extensionsDir2 = temporaryFolder.newFolder();
+    String extn2 = "extension2";
+    File extn2Dir = new File(extensionsDir2, extn2);
+    extn2Dir.mkdir();

Review Comment:
   ## Ignored error status of call
   
   Method testGetExtensionFilesToLoad_with_load_list_and_path ignores 
exceptional return value of File.mkdir.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/4373)



##########
processing/src/test/java/org/apache/druid/guice/ExtensionsLoaderTest.java:
##########
@@ -217,58 +241,121 @@
 
     final File absolutePathExtension = temporaryFolder.newFolder();
 
-    final ExtensionsConfig config = new ExtensionsConfig()
-    {
-      @Override
-      public LinkedHashSet<String> getLoadList()
-      {
-        return Sets.newLinkedHashSet(Arrays.asList("mysql-metadata-storage", 
absolutePathExtension.getAbsolutePath()));
-      }
-
-      @Override
-      public String getDirectory()
-      {
-        return extensionsDir.getAbsolutePath();
-      }
-    };
+    final ExtensionsConfig config = ExtensionsConfig.builder()
+        .directory(extensionsDir.getAbsolutePath())
+        .loadList(Arrays.asList("mysql-metadata-storage", 
absolutePathExtension.getAbsolutePath()))
+        .build();
     final ExtensionsLoader extnLoader = new ExtensionsLoader(config);
     final File mysql_metadata_storage = new File(extensionsDir, 
"mysql-metadata-storage");
     final File random_extension = new File(extensionsDir, "random-extensions");
 
     mysql_metadata_storage.mkdir();
     random_extension.mkdir();
 
-    final File[] expectedFileList = new File[]{mysql_metadata_storage, 
absolutePathExtension};
-    final File[] actualFileList = extnLoader.getExtensionFilesToLoad();
-    Assert.assertArrayEquals(expectedFileList, actualFileList);
+    final List<File> expectedFileList = Arrays.asList(mysql_metadata_storage, 
absolutePathExtension);
+    final List<File> actualFileList = extnLoader.getExtensionFilesToLoad();
+    Assert.assertEquals(expectedFileList, actualFileList);
+  }
+
+  @Test
+  public void testGetExtensionFilesToLoad_with_load_list_and_path() throws 
IOException
+  {
+    // The loader only looks for directories: doesn't matter if they are empty.
+    final File extensionsDir1 = temporaryFolder.newFolder();
+    String extn1 = "extension1";
+    File extn1Dir = new File(extensionsDir1, extn1);
+    extn1Dir.mkdir();

Review Comment:
   ## Ignored error status of call
   
   Method testGetExtensionFilesToLoad_with_load_list_and_path ignores 
exceptional return value of File.mkdir.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/4372)



##########
processing/src/test/java/org/apache/druid/guice/ExtensionsLoaderTest.java:
##########
@@ -217,58 +241,121 @@
 
     final File absolutePathExtension = temporaryFolder.newFolder();
 
-    final ExtensionsConfig config = new ExtensionsConfig()
-    {
-      @Override
-      public LinkedHashSet<String> getLoadList()
-      {
-        return Sets.newLinkedHashSet(Arrays.asList("mysql-metadata-storage", 
absolutePathExtension.getAbsolutePath()));
-      }
-
-      @Override
-      public String getDirectory()
-      {
-        return extensionsDir.getAbsolutePath();
-      }
-    };
+    final ExtensionsConfig config = ExtensionsConfig.builder()
+        .directory(extensionsDir.getAbsolutePath())
+        .loadList(Arrays.asList("mysql-metadata-storage", 
absolutePathExtension.getAbsolutePath()))
+        .build();
     final ExtensionsLoader extnLoader = new ExtensionsLoader(config);
     final File mysql_metadata_storage = new File(extensionsDir, 
"mysql-metadata-storage");
     final File random_extension = new File(extensionsDir, "random-extensions");
 
     mysql_metadata_storage.mkdir();
     random_extension.mkdir();
 
-    final File[] expectedFileList = new File[]{mysql_metadata_storage, 
absolutePathExtension};
-    final File[] actualFileList = extnLoader.getExtensionFilesToLoad();
-    Assert.assertArrayEquals(expectedFileList, actualFileList);
+    final List<File> expectedFileList = Arrays.asList(mysql_metadata_storage, 
absolutePathExtension);
+    final List<File> actualFileList = extnLoader.getExtensionFilesToLoad();
+    Assert.assertEquals(expectedFileList, actualFileList);
+  }
+
+  @Test
+  public void testGetExtensionFilesToLoad_with_load_list_and_path() throws 
IOException
+  {
+    // The loader only looks for directories: doesn't matter if they are empty.
+    final File extensionsDir1 = temporaryFolder.newFolder();
+    String extn1 = "extension1";
+    File extn1Dir = new File(extensionsDir1, extn1);
+    extn1Dir.mkdir();
+    final File extensionsDir2 = temporaryFolder.newFolder();
+    String extn2 = "extension2";
+    File extn2Dir = new File(extensionsDir2, extn2);
+    extn2Dir.mkdir();
+
+    final ExtensionsConfig config = ExtensionsConfig.builder()
+        .directory(extensionsDir1.getAbsolutePath())
+        .path(Collections.singletonList(extensionsDir2.getAbsolutePath()))
+        .loadList(Arrays.asList(extn1, extn2))
+        .build();
+    final ExtensionsLoader extnLoader = new ExtensionsLoader(config);
+
+    final List<File> expectedFileList = Arrays.asList(extn1Dir, extn2Dir);
+    final List<File> actualFileList = extnLoader.getExtensionFilesToLoad();
+    Assert.assertEquals(expectedFileList, actualFileList);
+  }
+
+  @Test
+  public void testGetExtensionFilesToLoad_with_load_list_with_path_only() 
throws IOException
+  {
+    // The loader only looks for directories: doesn't matter if they are empty.
+    final File extensionsDir1 = temporaryFolder.newFolder();
+    final File extensionsDir2 = temporaryFolder.newFolder();
+
+    // For fun, mix up the order
+    String extn1 = "extension1";
+    File extn1Dir = new File(extensionsDir2, extn1);
+    extn1Dir.mkdir();
+    String extn2 = "extension2";
+    File extn2Dir = new File(extensionsDir1, extn2);
+    extn2Dir.mkdir();

Review Comment:
   ## Ignored error status of call
   
   Method testGetExtensionFilesToLoad_with_load_list_with_path_only ignores 
exceptional return value of File.mkdir.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/4375)



##########
processing/src/test/java/org/apache/druid/guice/ExtensionsLoaderTest.java:
##########
@@ -217,58 +241,121 @@
 
     final File absolutePathExtension = temporaryFolder.newFolder();
 
-    final ExtensionsConfig config = new ExtensionsConfig()
-    {
-      @Override
-      public LinkedHashSet<String> getLoadList()
-      {
-        return Sets.newLinkedHashSet(Arrays.asList("mysql-metadata-storage", 
absolutePathExtension.getAbsolutePath()));
-      }
-
-      @Override
-      public String getDirectory()
-      {
-        return extensionsDir.getAbsolutePath();
-      }
-    };
+    final ExtensionsConfig config = ExtensionsConfig.builder()
+        .directory(extensionsDir.getAbsolutePath())
+        .loadList(Arrays.asList("mysql-metadata-storage", 
absolutePathExtension.getAbsolutePath()))
+        .build();
     final ExtensionsLoader extnLoader = new ExtensionsLoader(config);
     final File mysql_metadata_storage = new File(extensionsDir, 
"mysql-metadata-storage");
     final File random_extension = new File(extensionsDir, "random-extensions");
 
     mysql_metadata_storage.mkdir();
     random_extension.mkdir();
 
-    final File[] expectedFileList = new File[]{mysql_metadata_storage, 
absolutePathExtension};
-    final File[] actualFileList = extnLoader.getExtensionFilesToLoad();
-    Assert.assertArrayEquals(expectedFileList, actualFileList);
+    final List<File> expectedFileList = Arrays.asList(mysql_metadata_storage, 
absolutePathExtension);
+    final List<File> actualFileList = extnLoader.getExtensionFilesToLoad();
+    Assert.assertEquals(expectedFileList, actualFileList);
+  }
+
+  @Test
+  public void testGetExtensionFilesToLoad_with_load_list_and_path() throws 
IOException
+  {
+    // The loader only looks for directories: doesn't matter if they are empty.
+    final File extensionsDir1 = temporaryFolder.newFolder();
+    String extn1 = "extension1";
+    File extn1Dir = new File(extensionsDir1, extn1);
+    extn1Dir.mkdir();
+    final File extensionsDir2 = temporaryFolder.newFolder();
+    String extn2 = "extension2";
+    File extn2Dir = new File(extensionsDir2, extn2);
+    extn2Dir.mkdir();
+
+    final ExtensionsConfig config = ExtensionsConfig.builder()
+        .directory(extensionsDir1.getAbsolutePath())
+        .path(Collections.singletonList(extensionsDir2.getAbsolutePath()))
+        .loadList(Arrays.asList(extn1, extn2))
+        .build();
+    final ExtensionsLoader extnLoader = new ExtensionsLoader(config);
+
+    final List<File> expectedFileList = Arrays.asList(extn1Dir, extn2Dir);
+    final List<File> actualFileList = extnLoader.getExtensionFilesToLoad();
+    Assert.assertEquals(expectedFileList, actualFileList);
+  }
+
+  @Test
+  public void testGetExtensionFilesToLoad_with_load_list_with_path_only() 
throws IOException
+  {
+    // The loader only looks for directories: doesn't matter if they are empty.
+    final File extensionsDir1 = temporaryFolder.newFolder();
+    final File extensionsDir2 = temporaryFolder.newFolder();
+
+    // For fun, mix up the order
+    String extn1 = "extension1";
+    File extn1Dir = new File(extensionsDir2, extn1);
+    extn1Dir.mkdir();

Review Comment:
   ## Ignored error status of call
   
   Method testGetExtensionFilesToLoad_with_load_list_with_path_only ignores 
exceptional return value of File.mkdir.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/4374)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to