From 3781a725baabb00c63129e4346d0c1d0890558c4 Mon Sep 17 00:00:00 2001 From: Licho Date: Mon, 18 Dec 2023 08:36:33 +0800 Subject: [PATCH] Refactor dinky class loader (#2671) * refactor: DinkyClassLoader Signed-off-by: licho * Spotless Apply --------- Signed-off-by: licho Co-authored-by: leechor --- .../dinky/classloader/DinkyClassLoader.java | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/dinky-common/src/main/java/org/dinky/classloader/DinkyClassLoader.java b/dinky-common/src/main/java/org/dinky/classloader/DinkyClassLoader.java index 72e867af34..969da9f584 100644 --- a/dinky-common/src/main/java/org/dinky/classloader/DinkyClassLoader.java +++ b/dinky-common/src/main/java/org/dinky/classloader/DinkyClassLoader.java @@ -42,25 +42,19 @@ public class DinkyClassLoader extends URLClassLoader { FlinkUdfPathContextHolder udfPathContextHolder = new FlinkUdfPathContextHolder(); public DinkyClassLoader(URL[] urls, ClassLoader parent) { - super(new URL[] {}, parent); + this(urls, parent, null); } public DinkyClassLoader(Collection fileSet, ClassLoader parent) { - super(new URL[] {}, parent); - addURLs(fileSet); + this(convertFilesToUrls(fileSet), parent, null); } public DinkyClassLoader(URL[] urls) { - super(new URL[] {}); + this(urls, Thread.currentThread().getContextClassLoader(), null); } public DinkyClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) { - super(new URL[] {}, parent, factory); - } - - // this class factory method - public static DinkyClassLoader build() { - return new DinkyClassLoader(new URL[] {}); + super(urls, parent, factory); } // class factory method with urls parameters @@ -68,6 +62,14 @@ public static DinkyClassLoader build(URL... urls) { return new DinkyClassLoader(urls); } + public static DinkyClassLoader build(URL[] urls, ClassLoader parent) { + return new DinkyClassLoader(urls, parent); + } + + public static DinkyClassLoader build(ClassLoader parent) { + return new DinkyClassLoader(new URL[] {}, parent); + } + // return udfPathContextHolder public FlinkUdfPathContextHolder getUdfPathContextHolder() { return udfPathContextHolder; @@ -80,20 +82,12 @@ public void addURLs(URL... urls) { } public void addURLs(Collection fileSet) { - URL[] urls = fileSet.stream() - .map(x -> { - try { - return x.toURI().toURL(); - } catch (MalformedURLException e) { - throw new RuntimeException(e); - } - }) - .toArray(URL[]::new); + URL[] urls = convertFilesToUrls(fileSet); addURLs(urls); } - public void addURLs(List files) { - files.stream() + private static URL[] convertFilesToUrls(Collection fileSet) { + return fileSet.stream() .map(x -> { try { return x.toURI().toURL(); @@ -101,9 +95,10 @@ public void addURLs(List files) { throw new RuntimeException(e); } }) - .forEach(this::addURL); + .toArray(URL[]::new); } + @Override public void addURL(URL url) { super.addURL(url); }