You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2022/09/14 21:07:35 UTC

[flink] 02/04: [FLINK-29301] loadFromResources works as jar

This is an automated email from the ASF dual-hosted git repository.

chesnay pushed a commit to branch release-1.16
in repository https://gitbox.apache.org/repos/asf/flink.git

commit e9e072c41ad340ec0bffd54d7eb8a8d190263faa
Author: Chesnay Schepler <ch...@apache.org>
AuthorDate: Wed Sep 14 13:32:38 2022 +0200

    [FLINK-29301] loadFromResources works as jar
    
    loadFromResource implicitly relied on being called in the context of the java-ci-tools module, directly accessing the resources directly from the source.
    
    When packaged as a jar this approach doesn't work, because then you'd load files from a jar filesystem that you have to create explicitly.
    
    Instead we now load the resource as an InputStream which works in all cases.
---
 .../tools/ci/licensecheck/NoticeFileChecker.java   | 26 +++++++++++++++-------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/tools/ci/java-ci-tools/src/main/java/org/apache/flink/tools/ci/licensecheck/NoticeFileChecker.java b/tools/ci/java-ci-tools/src/main/java/org/apache/flink/tools/ci/licensecheck/NoticeFileChecker.java
index 719c9c6198e..8ea2cec2945 100644
--- a/tools/ci/java-ci-tools/src/main/java/org/apache/flink/tools/ci/licensecheck/NoticeFileChecker.java
+++ b/tools/ci/java-ci-tools/src/main/java/org/apache/flink/tools/ci/licensecheck/NoticeFileChecker.java
@@ -26,11 +26,12 @@ import com.google.common.collect.Multimap;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -38,6 +39,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -317,13 +319,21 @@ public class NoticeFileChecker {
 
     private static List<String> loadFromResources(String fileName) {
         try {
-            Path resource = Paths.get(NoticeFileChecker.class.getResource("/" + fileName).toURI());
-            List<String> result =
-                    Files.readAllLines(resource).stream()
-                            .filter(line -> !line.startsWith("#") && !line.isEmpty())
-                            .collect(Collectors.toList());
-            LOG.debug("Loaded {} items from resource {}", result.size(), fileName);
-            return result;
+            try (BufferedReader bufferedReader =
+                    new BufferedReader(
+                            new InputStreamReader(
+                                    Objects.requireNonNull(
+                                            NoticeFileChecker.class.getResourceAsStream(
+                                                    "/" + fileName))))) {
+
+                List<String> result =
+                        bufferedReader
+                                .lines()
+                                .filter(line -> !line.startsWith("#") && !line.isEmpty())
+                                .collect(Collectors.toList());
+                LOG.debug("Loaded {} items from resource {}", result.size(), fileName);
+                return result;
+            }
         } catch (Throwable e) {
             // wrap anything in a RuntimeException to be callable from the static initializer
             throw new RuntimeException("Error while loading resource", e);