Repository: camel
Updated Branches:
  refs/heads/master dcf340002 -> 72141c6d6


CAMEL-9677: FallbackTypeConverter that are CamelContextAware should have it 
injected


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

Branch: refs/heads/master
Commit: 0fc20bddc9e5e3db5108428f727b35370e0cc9b0
Parents: dcf3400
Author: Claus Ibsen <davscl...@apache.org>
Authored: Tue Mar 8 09:17:38 2016 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Mar 8 09:22:34 2016 +0100

----------------------------------------------------------------------
 .../apache/camel/impl/DefaultCamelContext.java   |  1 +
 .../converter/BaseTypeConverterRegistry.java     | 19 ++++++++++++++++++-
 .../converter/InstanceFallbackConverterTest.java |  4 ++--
 .../InstanceDummyFallbackConverter.java          | 18 ++++++++++++++++--
 4 files changed, 37 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/0fc20bdd/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index dd397b4..26ddea9 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -3646,6 +3646,7 @@ public class DefaultCamelContext extends ServiceSupport 
implements ModelCamelCon
         } else {
             answer = new DefaultTypeConverter(packageScanClassResolver, 
getInjector(), getDefaultFactoryFinder());
         }
+        answer.setCamelContext(this);
         setTypeConverterRegistry(answer);
         return answer;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/0fc20bdd/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 95069d9..2895001 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
@@ -29,6 +29,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicLong;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
@@ -60,7 +62,7 @@ import org.slf4j.LoggerFactory;
  *
  * @version 
  */
-public abstract class BaseTypeConverterRegistry extends ServiceSupport 
implements TypeConverter, TypeConverterRegistry {
+public abstract class BaseTypeConverterRegistry extends ServiceSupport 
implements TypeConverter, TypeConverterRegistry, CamelContextAware {
     protected final Logger log = LoggerFactory.getLogger(getClass());
     protected final ConcurrentMap<TypeMapping, TypeConverter> typeMappings = 
new ConcurrentHashMap<TypeMapping, TypeConverter>();
     // for misses use a soft reference cache map, as the classes may be 
un-deployed at runtime
@@ -68,6 +70,7 @@ public abstract class BaseTypeConverterRegistry extends 
ServiceSupport implement
     protected final List<TypeConverterLoader> typeConverterLoaders = new 
ArrayList<TypeConverterLoader>();
     protected final List<FallbackTypeConverter> fallbackConverters = new 
CopyOnWriteArrayList<FallbackTypeConverter>();
     protected final PackageScanClassResolver resolver;
+    protected CamelContext camelContext;
     protected Injector injector;
     protected final FactoryFinder factoryFinder;
     protected TypeConverterExists typeConverterExists = 
TypeConverterExists.Override;
@@ -99,6 +102,16 @@ public abstract class BaseTypeConverterRegistry extends 
ServiceSupport implement
         addFallbackTypeConverter(new AsyncProcessorTypeConverter(), true);
     }
 
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
     public List<TypeConverterLoader> getTypeConverterLoaders() {
         return typeConverterLoaders;
     }
@@ -444,6 +457,10 @@ public abstract class BaseTypeConverterRegistry extends 
ServiceSupport implement
             TypeConverterAware typeConverterAware = (TypeConverterAware) 
typeConverter;
             typeConverterAware.setTypeConverter(this);
         }
+        if (typeConverter instanceof CamelContextAware) {
+            CamelContextAware camelContextAware = (CamelContextAware) 
typeConverter;
+            camelContextAware.setCamelContext(getCamelContext());
+        }
     }
 
     public TypeConverter getTypeConverter(Class<?> toType, Class<?> fromType) {

http://git-wip-us.apache.org/repos/asf/camel/blob/0fc20bdd/camel-core/src/test/java/org/apache/camel/converter/InstanceFallbackConverterTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/converter/InstanceFallbackConverterTest.java
 
b/camel-core/src/test/java/org/apache/camel/converter/InstanceFallbackConverterTest.java
index befabe9..1bcaddd 100644
--- 
a/camel-core/src/test/java/org/apache/camel/converter/InstanceFallbackConverterTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/converter/InstanceFallbackConverterTest.java
@@ -36,7 +36,7 @@ public class InstanceFallbackConverterTest extends 
ContextTestSupport {
         Currency cur = Currency.getInstance(Locale.US);
 
         String money = context.getTypeConverter().convertTo(String.class, 
exchange, cur);
-        assertEquals("Money talks", money);
+        assertEquals("Money talks says " + context.getName(), money);
     }
 
     public void testInstanceFallbackMandatoryConverter() throws Exception {
@@ -44,7 +44,7 @@ public class InstanceFallbackConverterTest extends 
ContextTestSupport {
         Currency cur = Currency.getInstance(Locale.US);
 
         String money = 
context.getTypeConverter().mandatoryConvertTo(String.class, exchange, cur);
-        assertEquals("Money talks", money);
+        assertEquals("Money talks says " + context.getName(), money);
     }
 
     public void testInstanceFallbackMandatoryFailed() throws Exception {

http://git-wip-us.apache.org/repos/asf/camel/blob/0fc20bdd/camel-core/src/test/java/org/apache/camel/converter/myconverter/InstanceDummyFallbackConverter.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/converter/myconverter/InstanceDummyFallbackConverter.java
 
b/camel-core/src/test/java/org/apache/camel/converter/myconverter/InstanceDummyFallbackConverter.java
index 6c87b7a..f27fbbe 100644
--- 
a/camel-core/src/test/java/org/apache/camel/converter/myconverter/InstanceDummyFallbackConverter.java
+++ 
b/camel-core/src/test/java/org/apache/camel/converter/myconverter/InstanceDummyFallbackConverter.java
@@ -18,6 +18,8 @@ package org.apache.camel.converter.myconverter;
 
 import java.util.Currency;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.Converter;
 import org.apache.camel.Exchange;
 import org.apache.camel.FallbackConverter;
@@ -27,12 +29,24 @@ import org.apache.camel.spi.TypeConverterRegistry;
  * @version 
  */
 @Converter
-public class InstanceDummyFallbackConverter {
+public class InstanceDummyFallbackConverter implements CamelContextAware {
+
+    private CamelContext camelContext;
+
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
 
     @FallbackConverter
     public Object convertTo(Class<?> type, Exchange exchange, Object value, 
TypeConverterRegistry registry) {
         if (Currency.class.isAssignableFrom(value.getClass())) {
-            return "Money talks";
+            return "Money talks says " + camelContext.getName();
         }
         return null;
     }

Reply via email to