Repository: camel Updated Branches: refs/heads/master 8b9d4c625 -> 667443aee
[CAMEL-7218] Rolled back PlatformHelper usage on the behalf of the old OSGi detection code. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/667443ae Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/667443ae Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/667443ae Branch: refs/heads/master Commit: 667443aee325b406e57b16d4c70d1971fb001294 Parents: 8b9d4c6 Author: Henryk Konsek <hekon...@gmail.com> Authored: Wed Feb 19 09:55:45 2014 +0100 Committer: Henryk Konsek <hekon...@gmail.com> Committed: Wed Feb 19 09:55:45 2014 +0100 ---------------------------------------------------------------------- .../spring/handler/CamelNamespaceHandler.java | 24 ++++++++++++-------- 1 file changed, 15 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/667443ae/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 6535e69..957c792 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 @@ -51,7 +51,6 @@ import org.apache.camel.spring.CamelThreadPoolFactoryBean; import org.apache.camel.spring.remoting.CamelProxyFactoryBean; import org.apache.camel.spring.remoting.CamelServiceExporter; import org.apache.camel.util.ObjectHelper; -import org.apache.camel.util.PlatformHelper; import org.apache.camel.util.spring.KeyStoreParametersFactoryBean; import org.apache.camel.util.spring.SSLContextParametersFactoryBean; import org.apache.camel.util.spring.SecureRandomParametersFactoryBean; @@ -125,20 +124,27 @@ public class CamelNamespaceHandler extends NamespaceHandlerSupport { parserMap.put("errorHandler", errorHandlerParser); // camel context + boolean osgi = false; 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(getClass().getClassLoader())) { - try { + try { + // Try to load the BundleActivator first + Class.forName("org.osgi.framework.BundleActivator"); + Class<?> c = Class.forName("org.apache.camel.osgi.Activator"); + Method mth = c.getDeclaredMethod("getBundle"); + Object bundle = mth.invoke(null); + if (bundle != null) { cl = Class.forName("org.apache.camel.osgi.CamelContextFactoryBean"); - LOG.info("OSGi environment detected."); - } catch (ClassNotFoundException e) { - LOG.trace("Cannot find CamelContextFactoryBean class so assuming not running in OSGi container: " + e.getMessage()); + osgi = true; } - } else { - LOG.info("Non-OSGi environment detected."); + } catch (Throwable t) { + // not running with camel-core-osgi so we fallback to the regular factory bean + LOG.trace("Cannot find class so assuming not running in OSGi container: " + t.getMessage()); } - + if (osgi) { + LOG.info("OSGi environment detected."); + } LOG.debug("Using {} as CamelContextBeanDefinitionParser", cl.getCanonicalName()); registerParser("camelContext", new CamelContextBeanDefinitionParser(cl)); }