From 33aa730bfd7dabdf838aee5dca390ea30b8ceb61 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Sun, 15 Jul 2012 15:44:55 +0200 Subject: [PATCH] [#1572] Use Thread.currentThread().getContextClassLoader() to load ExecuteListener classes as a workaround for experienced class loading problems when using OSGi --- jOOQ/src/main/java/org/jooq/impl/Util.java | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Util.java b/jOOQ/src/main/java/org/jooq/impl/Util.java index 721f4b5a7a..d2e8c59799 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Util.java +++ b/jOOQ/src/main/java/org/jooq/impl/Util.java @@ -55,8 +55,6 @@ import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Pattern; import javax.persistence.Column; @@ -107,11 +105,6 @@ final class Util { */ private static Boolean isJPAAvailable; - /** - * A cache for {@link ExecuteListener} classes - */ - private static final Map> EXECUTE_LISTENERS = new ConcurrentHashMap>(); - /** * A pattern for the JDBC escape syntax */ @@ -945,13 +938,11 @@ final class Util { private static final ExecuteListener getListener(String name) { try { - Class type = EXECUTE_LISTENERS.get(name); - - if (type == null) { - type = Class.forName(name); - EXECUTE_LISTENERS.put(name, type); - } + // [#1572] Loading classes like this is needed for class loading to + // work with OSGi. [#1578] The current implementation of loading + // ExecuteListeners will be reworked in jOOQ 3.0, though + Class type = Thread.currentThread().getContextClassLoader().loadClass(name); return (ExecuteListener) Reflect.accessible(type.getDeclaredConstructor()).newInstance(); } catch (Exception e) {