From 13c339ef4fca36b348a30c547d1b92e0e3625641 Mon Sep 17 00:00:00 2001 From: Baterka <3463591+Baterka@users.noreply.github.com> Date: Sat, 25 Nov 2023 16:45:56 +0100 Subject: [PATCH] - Fixed separators to also work on Windows (#2233) - Added missing `--add-opens=java.base/java.security=ALL-UNNAMED` - Added proper closing of AddonClassLoader --- pom.xml | 22 +++++++------------ .../bentobox/bentobox/api/addons/Addon.java | 6 ++--- .../api/addons/AddonClassLoaderTest.java | 12 ++++++---- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/pom.xml b/pom.xml index a351f034e..c657dc7a3 100644 --- a/pom.xml +++ b/pom.xml @@ -371,29 +371,23 @@ --add-opens java.base/java.math=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED - --add-opens - java.base/java.util.stream=ALL-UNNAMED + --add-opens java.base/java.util.stream=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED - --add-opens - java.base/java.util.regex=ALL-UNNAMED - --add-opens - java.base/java.nio.channels.spi=ALL-UNNAMED + --add-opens java.base/java.util.regex=ALL-UNNAMED + --add-opens java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED - --add-opens - java.base/java.util.concurrent=ALL-UNNAMED + --add-opens java.base/java.util.concurrent=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED --add-opens java.base/sun.nio.cs=ALL-UNNAMED --add-opens java.base/java.nio.file=ALL-UNNAMED - --add-opens - java.base/java.nio.charset=ALL-UNNAMED - --add-opens - java.base/java.lang.reflect=ALL-UNNAMED - --add-opens - java.logging/java.util.logging=ALL-UNNAMED + --add-opens java.base/java.nio.charset=ALL-UNNAMED + --add-opens java.base/java.lang.reflect=ALL-UNNAMED + --add-opens java.logging/java.util.logging=ALL-UNNAMED --add-opens java.base/java.lang.ref=ALL-UNNAMED --add-opens java.base/java.util.jar=ALL-UNNAMED --add-opens java.base/java.util.zip=ALL-UNNAMED + --add-opens=java.base/java.security=ALL-UNNAMED diff --git a/src/main/java/world/bentobox/bentobox/api/addons/Addon.java b/src/main/java/world/bentobox/bentobox/api/addons/Addon.java index 54e525b3e..4c823244c 100644 --- a/src/main/java/world/bentobox/bentobox/api/addons/Addon.java +++ b/src/main/java/world/bentobox/bentobox/api/addons/Addon.java @@ -263,7 +263,7 @@ public abstract class Addon { throw new IllegalArgumentException("ResourcePath cannot be null or empty"); } - jarResource = jarResource.replace('\\', '/'); + jarResource = jarResource.replace("\\", File.separator).replace("/", File.separator); try (JarFile jar = new JarFile(file)) { JarEntry jarConfig = jar.getJarEntry(jarResource); if (jarConfig != null) { @@ -308,7 +308,7 @@ public abstract class Addon { throw new IllegalArgumentException("jarResource cannot be null or empty"); } YamlConfiguration result = new YamlConfiguration(); - jarResource = jarResource.replace('\\', '/'); + jarResource = jarResource.replace("\\", File.separator).replace("/", File.separator); try (JarFile jar = new JarFile(file)) { JarEntry jarConfig = jar.getJarEntry(jarResource); if (jarConfig != null) { @@ -330,7 +330,7 @@ public abstract class Addon { throw new IllegalArgumentException("ResourcePath cannot be null or empty"); } - jarResource = jarResource.replace('\\', '/'); + jarResource = jarResource.replace("\\", File.separator).replace("/", File.separator); try (JarFile jar = new JarFile(file)) { JarEntry jarConfig = jar.getJarEntry(jarResource); if (jarConfig != null) { diff --git a/src/test/java/world/bentobox/bentobox/api/addons/AddonClassLoaderTest.java b/src/test/java/world/bentobox/bentobox/api/addons/AddonClassLoaderTest.java index 16eb982b1..f3fb90554 100644 --- a/src/test/java/world/bentobox/bentobox/api/addons/AddonClassLoaderTest.java +++ b/src/test/java/world/bentobox/bentobox/api/addons/AddonClassLoaderTest.java @@ -300,40 +300,44 @@ public class AddonClassLoaderTest { * Test method for {@link world.bentobox.bentobox.api.addons.AddonClassLoader#findClass(java.lang.String)}. */ @Test - public void testFindClassString() throws MalformedURLException { + public void testFindClassString() throws IOException { acl = new AddonClassLoader(testAddon, am, jarFile); assertNull(acl.findClass("")); assertNull(acl.findClass("world.bentobox.bentobox")); + acl.close(); } /** * Test method for {@link world.bentobox.bentobox.api.addons.AddonClassLoader#findClass(java.lang.String, boolean)}. */ @Test - public void testFindClassStringBoolean() throws MalformedURLException { + public void testFindClassStringBoolean() throws IOException { acl = new AddonClassLoader(testAddon, am, jarFile); assertNull(acl.findClass("", false)); assertNull(acl.findClass("world.bentobox.bentobox", false)); + acl.close(); } /** * Test method for {@link world.bentobox.bentobox.api.addons.AddonClassLoader#getAddon()}. */ @Test - public void testGetAddon() throws MalformedURLException { + public void testGetAddon() throws IOException { acl = new AddonClassLoader(testAddon, am, jarFile); Addon addon = acl.getAddon(); assertEquals(addon, testAddon); + acl.close(); } /** * Test method for {@link world.bentobox.bentobox.api.addons.AddonClassLoader#getClasses()}. */ @Test - public void testGetClasses() throws MalformedURLException { + public void testGetClasses() throws IOException { acl = new AddonClassLoader(testAddon, am, jarFile); Set set = acl.getClasses(); assertTrue(set.isEmpty()); + acl.close(); } }