Repository: camel
Updated Branches:
  refs/heads/camel-2.17.x d12f08e54 -> e718b6711
  refs/heads/master 9e0f778cf -> c653828ba


CAMEL-9730: NPE in camel-jaxb when using in OSGi running from CamelTestBlueprint


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c653828b
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c653828b
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c653828b

Branch: refs/heads/master
Commit: c653828bae3b934fd03d16186a4251554d9b4a80
Parents: 9e0f778
Author: Claus Ibsen <davscl...@apache.org>
Authored: Mon Mar 21 13:30:47 2016 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon Mar 21 13:30:47 2016 +0100

----------------------------------------------------------------------
 .../converter/BaseTypeConverterRegistry.java    |  4 ++-
 .../camel/blueprint/BlueprintCamelContext.java  |  2 +-
 .../core/osgi/OsgiDefaultCamelContext.java      |  2 +-
 .../camel/core/osgi/OsgiTypeConverter.java      |  8 ++++-
 .../converter/jaxb/FallbackTypeConverter.java   | 32 +++++++++++---------
 5 files changed, 29 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/c653828b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
 
b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
index 2895001..da15cfb 100644
--- 
a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
+++ 
b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
@@ -459,7 +459,9 @@ public abstract class BaseTypeConverterRegistry extends 
ServiceSupport implement
         }
         if (typeConverter instanceof CamelContextAware) {
             CamelContextAware camelContextAware = (CamelContextAware) 
typeConverter;
-            camelContextAware.setCamelContext(getCamelContext());
+            if (camelContext != null) {
+                camelContextAware.setCamelContext(camelContext);
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/c653828b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
----------------------------------------------------------------------
diff --git 
a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
 
b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
index 9f5a6cd..f48245d 100644
--- 
a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
+++ 
b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
@@ -162,7 +162,7 @@ public class BlueprintCamelContext extends 
DefaultCamelContext implements Servic
             ctx = bundleContext;
         }
         FactoryFinder finder = new 
OsgiFactoryFinderResolver(bundleContext).resolveDefaultFactoryFinder(getClassResolver());
-        return new OsgiTypeConverter(ctx, getInjector(), finder);
+        return new OsgiTypeConverter(ctx, this, getInjector(), finder);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/c653828b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
 
b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
index a48b9d1..0c5e782 100644
--- 
a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
+++ 
b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
@@ -73,7 +73,7 @@ public class OsgiDefaultCamelContext extends 
DefaultCamelContext {
             ctx = bundleContext;
         }
         FactoryFinder finder = new 
OsgiFactoryFinderResolver(bundleContext).resolveDefaultFactoryFinder(getClassResolver());
-        return new OsgiTypeConverter(ctx, getInjector(), finder);
+        return new OsgiTypeConverter(ctx, this, getInjector(), finder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/c653828b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
 
b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
index 46767fe..c4813c1 100644
--- 
a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
+++ 
b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
@@ -22,6 +22,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.NoTypeConversionAvailableException;
@@ -49,13 +50,15 @@ public class OsgiTypeConverter extends ServiceSupport 
implements TypeConverter,
     private static final Logger LOG = 
LoggerFactory.getLogger(OsgiTypeConverter.class);
 
     private final BundleContext bundleContext;
+    private final CamelContext camelContext;
     private final Injector injector;
     private final FactoryFinder factoryFinder;
     private final ServiceTracker<TypeConverterLoader, Object> tracker;
     private volatile DefaultTypeConverter delegate;
 
-    public OsgiTypeConverter(BundleContext bundleContext, Injector injector, 
FactoryFinder factoryFinder) {
+    public OsgiTypeConverter(BundleContext bundleContext, CamelContext 
camelContext, Injector injector, FactoryFinder factoryFinder) {
         this.bundleContext = bundleContext;
+        this.camelContext = camelContext;
         this.injector = injector;
         this.factoryFinder = factoryFinder;
         this.tracker = new ServiceTracker<TypeConverterLoader, 
Object>(bundleContext, TypeConverterLoader.class.getName(), this);
@@ -197,6 +200,9 @@ public class OsgiTypeConverter extends ServiceSupport 
implements TypeConverter,
             }
         }, injector, factoryFinder);
 
+        // inject CamelContext
+        answer.setCamelContext(camelContext);
+
         try {
             // only load the core type converters, as OSGi activator will keep 
track on bundles
             // being installed/uninstalled and load type converters as part of 
that process

http://git-wip-us.apache.org/repos/asf/camel/blob/c653828b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
 
b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
index 16220a2..23e9f54 100644
--- 
a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
+++ 
b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
@@ -112,23 +112,25 @@ public class FallbackTypeConverter extends ServiceSupport 
implements TypeConvert
     public void setCamelContext(CamelContext camelContext) {
         this.camelContext = camelContext;
 
-        // configure pretty print
-        String property = camelContext.getProperty(PRETTY_PRINT);
-        if (property != null) {
-            if (property.equalsIgnoreCase("false")) {
-                setPrettyPrint(false);
-            } else {
-                setPrettyPrint(true);
+        if (camelContext != null) {
+            // configure pretty print
+            String property = camelContext.getProperty(PRETTY_PRINT);
+            if (property != null) {
+                if (property.equalsIgnoreCase("false")) {
+                    setPrettyPrint(false);
+                } else {
+                    setPrettyPrint(true);
+                }
             }
-        }
 
-        // configure object factory
-        property = camelContext.getProperty(OBJECT_FACTORY);
-        if (property != null) {
-            if (property.equalsIgnoreCase("false")) {
-                setObjectFactory(false);
-            } else {
-                setObjectFactory(true);
+            // configure object factory
+            property = camelContext.getProperty(OBJECT_FACTORY);
+            if (property != null) {
+                if (property.equalsIgnoreCase("false")) {
+                    setObjectFactory(false);
+                } else {
+                    setObjectFactory(true);
+                }
             }
         }
     }

Reply via email to