]> source.dussan.org Git - sonarqube.git/commitdiff
[NO JIRA] Remove unused ClassLoaderUtils
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Mon, 2 Jan 2023 22:46:39 +0000 (16:46 -0600)
committersonartech <sonartech@sonarsource.com>
Tue, 3 Jan 2023 20:03:04 +0000 (20:03 +0000)
server/sonar-webserver-core/src/main/java/org/sonar/server/util/ClassLoaderUtils.java [deleted file]
server/sonar-webserver-core/src/test/java/org/sonar/server/platform/ClassLoaderUtilsTest.java [deleted file]

diff --git a/server/sonar-webserver-core/src/main/java/org/sonar/server/util/ClassLoaderUtils.java b/server/sonar-webserver-core/src/main/java/org/sonar/server/util/ClassLoaderUtils.java
deleted file mode 100644 (file)
index 7a787ea..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.util;
-
-import com.google.common.base.Throwables;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.function.Predicate;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import javax.annotation.Nullable;
-import org.apache.commons.lang.StringUtils;
-import org.sonar.api.utils.log.Loggers;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-public class ClassLoaderUtils {
-
-  private ClassLoaderUtils() {
-    // only static methods
-  }
-
-  /**
-   * Finds files within a given directory and its subdirectories
-   *
-   * @param classLoader
-   * @param rootPath    the root directory, for example org/sonar/sqale
-   * @return a list of relative paths, for example {"org/sonar/sqale/foo/bar.txt}. Never null.
-   */
-  public static Collection<String> listFiles(ClassLoader classLoader, String rootPath) {
-    return listResources(classLoader, rootPath, path -> !StringUtils.endsWith(path, "/"));
-  }
-
-  /**
-   * Finds directories and files within a given directory and its subdirectories.
-   *
-   * @param classLoader
-   * @param rootPath    the root directory, for example org/sonar/sqale, or a file in this root directory, for example org/sonar/sqale/index.txt
-   * @param predicate
-   * @return a list of relative paths, for example {"org/sonar/sqale", "org/sonar/sqale/foo", "org/sonar/sqale/foo/bar.txt}. Never null.
-   */
-  public static Collection<String> listResources(ClassLoader classLoader, String rootPath, Predicate<String> predicate) {
-    String jarPath = null;
-    JarFile jar = null;
-    try {
-      Collection<String> paths = new ArrayList<>();
-      URL root = classLoader.getResource(rootPath);
-      if (root != null) {
-        checkJarFile(root);
-
-        // Path of the root directory
-        // Examples :
-        // org/sonar/sqale/index.txt -> rootDirectory is org/sonar/sqale
-        // org/sonar/sqale/ -> rootDirectory is org/sonar/sqale
-        // org/sonar/sqale -> rootDirectory is org/sonar/sqale
-        String rootDirectory = rootPath;
-        if (StringUtils.substringAfterLast(rootPath, "/").indexOf('.') >= 0) {
-          rootDirectory = StringUtils.substringBeforeLast(rootPath, "/");
-        }
-        // strip out only the JAR file
-        jarPath = root.getPath().substring(5, root.getPath().indexOf('!'));
-        jar = new JarFile(URLDecoder.decode(jarPath, UTF_8.name()));
-        Enumeration<JarEntry> entries = jar.entries();
-        while (entries.hasMoreElements()) {
-          String name = entries.nextElement().getName();
-          if (name.startsWith(rootDirectory) && predicate.test(name)) {
-            paths.add(name);
-          }
-        }
-      }
-      return paths;
-    } catch (Exception e) {
-      throw Throwables.propagate(e);
-    } finally {
-      closeJar(jar, jarPath);
-    }
-  }
-
-  private static void closeJar(@Nullable JarFile jar, String jarPath) {
-    if (jar != null) {
-      try {
-        jar.close();
-      } catch (Exception e) {
-        Loggers.get(ClassLoaderUtils.class).error("Fail to close JAR file: " + jarPath, e);
-      }
-    }
-  }
-
-  private static void checkJarFile(URL root) {
-    if (!"jar".equals(root.getProtocol())) {
-      throw new IllegalStateException("Unsupported protocol: " + root.getProtocol());
-    }
-  }
-}
diff --git a/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/ClassLoaderUtilsTest.java b/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/ClassLoaderUtilsTest.java
deleted file mode 100644 (file)
index 3f8215e..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform;
-
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Collection;
-import org.junit.Before;
-import org.junit.Test;
-import org.sonar.server.util.ClassLoaderUtils;
-
-import static org.apache.commons.lang.StringUtils.endsWith;
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class ClassLoaderUtilsTest {
-
-  private ClassLoader classLoader;
-
-  @Before
-  public void prepareClassLoader() {
-    // This JAR file has the three following files :
-    // org/sonar/sqale/app/copyright.txt
-    // org/sonar/sqale/app/README.md
-    // org/sonar/other/other.txt
-    URL jarUrl = getClass().getResource("/org/sonar/server/platform/ClassLoaderUtilsTest/ClassLoaderUtilsTest.jar");
-    classLoader = new URLClassLoader(new URL[] {jarUrl}, /* no parent classloader */null);
-  }
-
-  @Test
-  public void listResources_unknown_root() {
-    Collection<String> strings = ClassLoaderUtils.listResources(classLoader, "unknown/directory", s -> true);
-    assertThat(strings).isEmpty();
-  }
-
-  @Test
-  public void listResources_all() {
-    Collection<String> strings = ClassLoaderUtils.listResources(classLoader, "org/sonar/sqale", s -> true);
-    assertThat(strings).containsOnly(
-      "org/sonar/sqale/",
-      "org/sonar/sqale/app/",
-      "org/sonar/sqale/app/copyright.txt",
-      "org/sonar/sqale/app/README.md");
-  }
-
-  @Test
-  public void listResources_use_predicate() {
-    Collection<String> strings = ClassLoaderUtils.listResources(classLoader, "org/sonar/sqale", s -> endsWith(s, "md"));
-    assertThat(strings).containsOnly("org/sonar/sqale/app/README.md");
-  }
-
-  @Test
-  public void listFiles() {
-    Collection<String> strings = ClassLoaderUtils.listFiles(classLoader, "org/sonar/sqale");
-    assertThat(strings).containsOnly(
-      "org/sonar/sqale/app/copyright.txt",
-      "org/sonar/sqale/app/README.md");
-  }
-
-}