From f6a3c13197dc6f18bb3bb69239c8e2471e8ad4cd Mon Sep 17 00:00:00 2001 From: strangelookingnerd <49242855+strangelookingnerd@users.noreply.github.com> Date: Wed, 4 Sep 2024 09:22:01 +0200 Subject: [PATCH] [JENKINS-73714] Do not close filesystem before creating stream --- .../plugins/fontawesome/FontAwesomeIcons.java | 49 +++++++++---------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/src/main/java/io/jenkins/plugins/fontawesome/FontAwesomeIcons.java b/src/main/java/io/jenkins/plugins/fontawesome/FontAwesomeIcons.java index 2e8c37a..34b5d62 100644 --- a/src/main/java/io/jenkins/plugins/fontawesome/FontAwesomeIcons.java +++ b/src/main/java/io/jenkins/plugins/fontawesome/FontAwesomeIcons.java @@ -68,31 +68,7 @@ public static Map getAvailableIcons(@CheckForNull final FontAwes return getIconsFromClasspath(filter); } - private static Map getIconsFromClasspath(@CheckForNull final FontAwesomeStyle styleFilter) { - try { - return createIconStream(getIconFolder(), styleFilter) - .filter(Objects::nonNull) - .filter(icon -> icon.getFileName() != null) - .filter(FontAwesomeIcons::isSvgImage) - .filter(icon -> icon.getParent() != null) - .filter(icon -> icon.getParent().getFileName() != null) - .sorted() - .map(FontAwesomeIcons::createFileName) - .collect(Collectors.toMap(icon -> icon, FontAwesomeIcons::getIconClassName)); - } - catch (IOException exception) { - throw new IllegalStateException("Unable to find icons: Resource unavailable.", exception); - } - } - - private static Stream createIconStream(final Path iconFolder, @CheckForNull final FontAwesomeStyle filter) throws IOException { - if (filter == null) { - return Files.walk(iconFolder, 2); - } - return Files.walk(iconFolder.resolve(filter.name().toLowerCase(Locale.ENGLISH)), 1); - } - - private static Path getIconFolder() { + private static Map getIconsFromClasspath(@CheckForNull final FontAwesomeStyle filter) { try { Enumeration urls = FontAwesomeIcons.class.getClassLoader().getResources(IMAGES_SYMBOLS_PATH); @@ -104,10 +80,10 @@ private static Path getIconFolder() { if (StringUtils.equals(uri.getScheme(), "jar")) { try (FileSystem fileSystem = FileSystems.newFileSystem(uri, Collections.emptyMap())) { - return fileSystem.getPath(IMAGES_SYMBOLS_PATH); + return filterIcons(fileSystem.getPath(IMAGES_SYMBOLS_PATH), filter); } } - return Paths.get(uri); + return filterIcons(Paths.get(uri), filter); } } } @@ -117,6 +93,25 @@ private static Path getIconFolder() { throw new IllegalStateException("Unable to find icons: Resource unavailable."); } + private static Map filterIcons(final Path iconFolder, @CheckForNull final FontAwesomeStyle filter) throws IOException { + return createIconStream(iconFolder, filter) + .filter(Objects::nonNull) + .filter(icon -> icon.getFileName() != null) + .filter(FontAwesomeIcons::isSvgImage) + .filter(icon -> icon.getParent() != null) + .filter(icon -> icon.getParent().getFileName() != null) + .sorted() + .map(FontAwesomeIcons::createFileName) + .collect(Collectors.toMap(icon -> icon, FontAwesomeIcons::getIconClassName)); + } + + private static Stream createIconStream(final Path iconFolder, @CheckForNull final FontAwesomeStyle filter) throws IOException { + if (filter == null) { + return Files.walk(iconFolder, 2); + } + return Files.walk(iconFolder.resolve(filter.name().toLowerCase(Locale.ENGLISH)), 1); + } + private static String createFileName(final Path icon) { return icon.getParent().getFileName() + "/" + StringUtils.removeEnd(icon.getFileName().toString(), SVG_FILE_ENDING);