Author: ningjiang
Date: Tue Feb 21 02:19:04 2012
New Revision: 1291555

URL: http://svn.apache.org/viewvc?rev=1291555&view=rev
Log:
CAMEL-5010 try to load the org.osgi.framework.BundleActivator first

Modified:
    
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java

Modified: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=1291555&r1=1291554&r2=1291555&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
 Tue Feb 21 02:19:04 2012
@@ -122,7 +122,28 @@ public class CamelNamespaceHandler exten
         registerParser("errorHandler", errorHandlerParser);
         parserMap.put("errorHandler", errorHandlerParser);
 
+        // 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));
     }


Reply via email to