This is an automated email from the git hooks/post-receive script. New commit to branch feature/jdk11 in repository nuiton-utils. See https://gitlab.nuiton.org/nuiton/nuiton-utils.git commit bca90b7585f0547177a62ad06e70db7fd2f6e86e Author: Arnaud Thimel <thimel@codelutin.com> Date: Fri Jan 3 18:32:43 2020 +0100 Tests are conditionned to URLClassLoader presence. The library can be used with Java 9+ but org.nuiton.util.Resource will not be usable --- pom.xml | 2 +- src/main/java/org/nuiton/util/Resource.java | 25 +++++++++++++++++-------- src/test/java/org/nuiton/util/ResourceTest.java | 6 ++++++ 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index ffab262..20a0668 100644 --- a/pom.xml +++ b/pom.xml @@ -138,7 +138,7 @@ <signatureArtifactId>java18</signatureArtifactId> <signatureVersion>1.0</signatureVersion> - <nuitonI18nVersion>3.7</nuitonI18nVersion> + <nuitonI18nVersion>4.0-rc-1</nuitonI18nVersion> <!-- i18n configuration --> <i18n.bundles>fr_FR,en_GB,es_ES</i18n.bundles> diff --git a/src/main/java/org/nuiton/util/Resource.java b/src/main/java/org/nuiton/util/Resource.java index ed5fd40..ca7d6ab 100644 --- a/src/main/java/org/nuiton/util/Resource.java +++ b/src/main/java/org/nuiton/util/Resource.java @@ -93,13 +93,17 @@ public class Resource { // Resource * @param url l'url a ajouter */ public static void addClassLoader(ClassLoader classLoader, URL url) { - try { - Method method = URLClassLoader.class.getDeclaredMethod("addURL", - new Class[]{URL.class}); - method.setAccessible(true); - method.invoke(classLoader, url); - } catch (Exception eee) { - throw new RuntimeException(t("nuitonutil.error.add.url.in.classloader", classLoader, eee)); + if (classLoader instanceof URLClassLoader) { + try { + Method method = URLClassLoader.class.getDeclaredMethod("addURL", + new Class[]{URL.class}); + method.setAccessible(true); + method.invoke(classLoader, url); + } catch (Exception eee) { + throw new RuntimeException(t("nuitonutil.error.add.url.in.classloader", classLoader, eee)); + } + } else { + throw new UnsupportedOperationException(Resource.class.getName() + " is not compatible with Java 9+ so far. See https://gitlab.nuiton.org/nuiton/nuiton-utils/issues/319"); } } @@ -196,7 +200,12 @@ public class Resource { // Resource */ public static List<URL> getURLs(String pattern, URLClassLoader classLoader) { if (classLoader == null) { - classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader(); + ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); + if (systemClassLoader instanceof URLClassLoader) { + classLoader = (URLClassLoader) systemClassLoader; + } else { + throw new UnsupportedOperationException(Resource.class.getName() + " is not compatible with Java 9+ so far. See https://gitlab.nuiton.org/nuiton/nuiton-utils/issues/319"); + } } URL[] arrayURL = ClassLoaderUtil.getURLs(classLoader); return getURLs(pattern, arrayURL); diff --git a/src/test/java/org/nuiton/util/ResourceTest.java b/src/test/java/org/nuiton/util/ResourceTest.java index f8ea5e2..e047949 100644 --- a/src/test/java/org/nuiton/util/ResourceTest.java +++ b/src/test/java/org/nuiton/util/ResourceTest.java @@ -64,6 +64,12 @@ public class ResourceTest { // ResourceTest @Before public void beforeTest() throws NoSuchFieldException, IllegalAccessException { + String errorMessage = "Test is disabled because " + Resource.class.getName() + " is not compatible with Java 9+ so far. See https://gitlab.nuiton.org/nuiton/nuiton-utils/issues/319"; + boolean testEnabled = systemClassLoader instanceof URLClassLoader; + if (!testEnabled && log.isErrorEnabled()) { + log.error(errorMessage); + } + Assume.assumeTrue(errorMessage, testEnabled); URLClassLoader classLoader = (URLClassLoader) systemClassLoader; ClassLoader parent = classLoader.getParent(); ClassLoader currentClassLoader = new URLClassLoader(classLoader.getURLs(), parent); -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.