Repository: camel Updated Branches: refs/heads/master e10f04b50 -> 8b9d4c625
[CAMEL-7218] Added possibility to explictly specify class loader for OSGi checks. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8b9d4c62 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8b9d4c62 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8b9d4c62 Branch: refs/heads/master Commit: 8b9d4c625202455309a84c8ca492177ea28b2327 Parents: e10f04b Author: Henryk Konsek <hekon...@gmail.com> Authored: Tue Feb 18 22:15:20 2014 +0100 Committer: Henryk Konsek <hekon...@gmail.com> Committed: Tue Feb 18 22:16:13 2014 +0100 ---------------------------------------------------------------------- .../src/main/java/org/apache/camel/util/PlatformHelper.java | 9 +++++++-- .../apache/camel/spring/handler/CamelNamespaceHandler.java | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/8b9d4c62/camel-core/src/main/java/org/apache/camel/util/PlatformHelper.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/util/PlatformHelper.java b/camel-core/src/main/java/org/apache/camel/util/PlatformHelper.java index 438af11..258248c 100644 --- a/camel-core/src/main/java/org/apache/camel/util/PlatformHelper.java +++ b/camel-core/src/main/java/org/apache/camel/util/PlatformHelper.java @@ -37,13 +37,14 @@ public final class PlatformHelper { * Determine whether Camel is running in the OSGi environment. Current implementation tries to load Camel activator * bundle (using reflection API and class loading) to determine if the code is executed in the OSGi environment. * + * @param classLoader caller class loader to be used to load Camel Bundle Activator * @return true if caller is running in the OSGi environment, false otherwise */ - public static boolean isInOsgiEnvironment() { + public static boolean isInOsgiEnvironment(ClassLoader classLoader) { try { // Try to load the BundleActivator first Class.forName("org.osgi.framework.BundleActivator"); - Class<?> activatorClass = currentThread().getContextClassLoader().loadClass("org.apache.camel.osgi.Activator"); + Class<?> activatorClass = classLoader.loadClass("org.apache.camel.osgi.Activator"); Method getBundleMethod = activatorClass.getDeclaredMethod("getBundle"); Object bundle = getBundleMethod.invoke(null); return bundle != null; @@ -53,4 +54,8 @@ public final class PlatformHelper { } } + public static boolean isInOsgiEnvironment() { + return isInOsgiEnvironment(currentThread().getContextClassLoader()); + } + } http://git-wip-us.apache.org/repos/asf/camel/blob/8b9d4c62/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java b/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java index 9a035c8..6535e69 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java @@ -128,7 +128,7 @@ public class CamelNamespaceHandler extends NamespaceHandlerSupport { Class<?> cl = CamelContextFactoryBean.class; // These code will try to detected if we are in the OSGi environment. // If so, camel will use the OSGi version of CamelContextFactoryBean to create the CamelContext. - if (PlatformHelper.isInOsgiEnvironment()) { + if (PlatformHelper.isInOsgiEnvironment(getClass().getClassLoader())) { try { cl = Class.forName("org.apache.camel.osgi.CamelContextFactoryBean"); LOG.info("OSGi environment detected.");