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));
     }

Reply via email to