Author: ningjiang Date: Tue Feb 21 02:51:47 2012 New Revision: 1291564 URL: http://svn.apache.org/viewvc?rev=1291564&view=rev Log: Merged revisions 1291555 via svnmerge from https://svn.apache.org/repos/asf/camel/trunk
........ r1291555 | ningjiang | 2012-02-21 10:19:04 +0800 (Tue, 21 Feb 2012) | 1 line CAMEL-5010 try to load the org.osgi.framework.BundleActivator first ........ Modified: camel/branches/camel-2.9.x/ (props changed) camel/branches/camel-2.9.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Feb 21 02:51:47 2012 @@ -1 +1 @@ -/camel/trunk:1243046,1243057,1243234,1244518,1244644,1244859,1244861,1244864,1244870,1244872,1245021 +/camel/trunk:1243046,1243057,1243234,1244518,1244644,1244859,1244861,1244864,1244870,1244872,1245021,1291555 Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.9.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=1291564&r1=1291563&r2=1291564&view=diff ============================================================================== --- camel/branches/camel-2.9.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java (original) +++ camel/branches/camel-2.9.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java Tue Feb 21 02:51:47 2012 @@ -122,7 +122,28 @@ public class CamelNamespaceHandler exten registerParser("errorHandler", errorHandlerParser); parserMap.put("errorHandler", errorHandlerParser); - Class cl = CamelContextFactoryBean.class; + // camel context + boolean osgi = false; + Class<?> cl = CamelContextFactoryBean.class; + 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"); + osgi = true; + } + } catch (Throwable t) { + // not running with camel-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."); + } else { + LOG.info("OSGi environment not detected."); + } LOG.debug("Using {} as CamelContextBeanDefinitionParser", cl.getCanonicalName()); registerParser("camelContext", new CamelContextBeanDefinitionParser(cl)); }