This is an automated email from the ASF dual-hosted git repository. rmannibucau pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openwebbeans.git
The following commit(s) were added to refs/heads/master by this push: new e6c66c0 [OWB-1363] enable to only load proxies and not generate them at all - dropping proxy classloader ref at the same time e6c66c0 is described below commit e6c66c02962c646e0b8ff107402b6c1b7fd4a689 Author: Romain Manni-Bucau <rmannibu...@gmail.com> AuthorDate: Thu Dec 31 17:36:26 2020 +0100 [OWB-1363] enable to only load proxies and not generate them at all - dropping proxy classloader ref at the same time --- .../webbeans/service/ClassLoaderProxyService.java | 27 +++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java b/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java index 9a564ec..aab6332 100644 --- a/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java +++ b/webbeans-impl/src/main/java/org/apache/webbeans/service/ClassLoaderProxyService.java @@ -25,6 +25,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.apache.webbeans.config.WebBeansContext; +import org.apache.webbeans.exception.WebBeansException; import org.apache.webbeans.logger.WebBeansLoggerFacade; import org.apache.webbeans.spi.DefiningClassService; @@ -81,7 +82,7 @@ public class ClassLoaderProxyService implements DefiningClassService } } - // runtim companion of Spy - @Experimental + // runtime companion of Spy - @Experimental public static class LoadFirst extends ClassLoaderProxyService { public LoadFirst(final WebBeansContext context) @@ -109,6 +110,30 @@ public class ClassLoaderProxyService implements DefiningClassService } } + // strict load only impl, it changes LoadFirst by not creating a classloader at all (nice in graalvm) -@Experimental + public static class LoadOnly implements DefiningClassService + { + @Override + public ClassLoader getProxyClassLoader(final Class<?> forClass) + { + return Thread.currentThread().getContextClassLoader(); + } + + @Override + public <T> Class<T> defineAndLoad(final String name, final byte[] bytecode, final Class<T> proxiedClass) + { + try + { + return (Class<T>) getProxyClassLoader(null).loadClass(name); + } + catch (final ClassNotFoundException e) + { + WebBeansLoggerFacade.getLogger(getClass()).warning(e.getMessage()); + throw new WebBeansException(e); + } + } + } + private static class ProxiesClassLoader extends ClassLoader { private final boolean skipPackages;