CAMEL-6094: Add option to type converter registry to control what to do if a 
type converter already exists.


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

Branch: refs/heads/master
Commit: c894c3a742ad54f4f70a41d2b5208d73d0ae7110
Parents: d3f03cb
Author: Claus Ibsen <[email protected]>
Authored: Sat Aug 8 16:38:36 2015 +0200
Committer: Claus Ibsen <[email protected]>
Committed: Sat Aug 8 16:38:36 2015 +0200

----------------------------------------------------------------------
 .../ManagedTypeConverterRegistryMBean.java      |  6 +++++
 .../converter/BaseTypeConverterRegistry.java    | 28 ++++++++++----------
 .../mbean/ManagedTypeConverterRegistry.java     |  8 ++++++
 .../apache/camel/spi/TypeConverterRegistry.java | 10 +++----
 4 files changed, 33 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/c894c3a7/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
 
b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
index d88e61e..7d38df3 100644
--- 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
+++ 
b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
@@ -50,6 +50,12 @@ public interface ManagedTypeConverterRegistryMBean extends 
ManagedServiceMBean {
     @ManagedAttribute(description = "Number of type converters in the 
registry")
     int getNumberOfTypeConverters();
 
+    @ManagedAttribute(description = "Logging level to use if attempting to add 
a duplicate type converter")
+    String getTypeConverterExistsLoggingLevel();
+
+    @ManagedAttribute(description = "What to do if attempting to add a 
duplicate type converter (Override, Ignore or Fail)")
+    String getTypeConverterExists();
+
     @ManagedOperation(description = "Checks whether a type converter exists 
for converting (from -> to)")
     boolean hasTypeConverter(String fromType, String toType);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/c894c3a7/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 06b4c20..8059b73 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
@@ -69,8 +69,8 @@ public abstract class BaseTypeConverterRegistry extends 
ServiceSupport implement
     protected final PackageScanClassResolver resolver;
     protected Injector injector;
     protected final FactoryFinder factoryFinder;
-    protected TypeConverterAddDuplicate addDuplicateTypeConverter = 
TypeConverterAddDuplicate.Overwrite;
-    protected LoggingLevel addDuplicateTypeConverterLoggingLevel = 
LoggingLevel.WARN;
+    protected TypeConverterExists typeConverterExists = 
TypeConverterExists.Overwrite;
+    protected LoggingLevel typeConverterExistsLoggingLevel = LoggingLevel.WARN;
     protected final Statistics statistics = new UtilizationStatistics();
     protected final AtomicLong noopCounter = new AtomicLong();
     protected final AtomicLong attemptCounter = new AtomicLong();
@@ -382,17 +382,17 @@ public abstract class BaseTypeConverterRegistry extends 
ServiceSupport implement
 
         if (typeConverter != converter) {
             // duplicate detected
-            if (addDuplicateTypeConverter == 
TypeConverterAddDuplicate.Overwrite) {
+            if (typeConverterExists == TypeConverterExists.Overwrite) {
                 if (converter != null) {
-                    CamelLogger logger = new CamelLogger(log, 
addDuplicateTypeConverterLoggingLevel);
+                    CamelLogger logger = new CamelLogger(log, 
typeConverterExistsLoggingLevel);
                     logger.log("Overriding type converter from: " + converter 
+ " to: " + typeConverter);
                 }
                 typeMappings.put(key, typeConverter);
                 // remove any previous misses, as we added the new type 
converter
                 misses.remove(key);
-            } else if (addDuplicateTypeConverter == 
TypeConverterAddDuplicate.Ignore) {
+            } else if (typeConverterExists == TypeConverterExists.Ignore) {
                 if (converter != null) {
-                    CamelLogger logger = new CamelLogger(log, 
addDuplicateTypeConverterLoggingLevel);
+                    CamelLogger logger = new CamelLogger(log, 
typeConverterExistsLoggingLevel);
                     logger.log("Ignore duplicate type converter from: " + 
converter + " to: " + typeConverter);
                 }
             } else {
@@ -613,20 +613,20 @@ public abstract class BaseTypeConverterRegistry extends 
ServiceSupport implement
         return typeMappings.size();
     }
 
-    public LoggingLevel getAddDuplicateTypeConverterLoggingLevel() {
-        return addDuplicateTypeConverterLoggingLevel;
+    public LoggingLevel getTypeConverterExistsLoggingLevel() {
+        return typeConverterExistsLoggingLevel;
     }
 
-    public void setAddDuplicateTypeConverterLoggingLevel(LoggingLevel 
addTypeConverterExistsLoggingLevel) {
-        this.addDuplicateTypeConverterLoggingLevel = 
addTypeConverterExistsLoggingLevel;
+    public void setTypeConverterExistsLoggingLevel(LoggingLevel 
typeConverterExistsLoggingLevel) {
+        this.typeConverterExistsLoggingLevel = typeConverterExistsLoggingLevel;
     }
 
-    public TypeConverterAddDuplicate getAddDuplicateTypeConverter() {
-        return addDuplicateTypeConverter;
+    public TypeConverterExists getTypeConverterExists() {
+        return typeConverterExists;
     }
 
-    public void setAddDuplicateTypeConverter(TypeConverterAddDuplicate 
addDuplicateTypeConverter) {
-        this.addDuplicateTypeConverter = addDuplicateTypeConverter;
+    public void setTypeConverterExists(TypeConverterExists 
typeConverterExists) {
+        this.typeConverterExists = typeConverterExists;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/c894c3a7/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
index 625206e..bbd07f9 100644
--- 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
+++ 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
@@ -83,6 +83,14 @@ public class ManagedTypeConverterRegistry extends 
ManagedService implements Mana
         return registry.size();
     }
 
+    public String getTypeConverterExistsLoggingLevel() {
+        return registry.getTypeConverterExistsLoggingLevel().name();
+    }
+
+    public String getTypeConverterExists() {
+        return registry.getTypeConverterExists().name();
+    }
+
     public boolean hasTypeConverter(String fromType, String toType) {
         try {
             Class<?> from = 
getContext().getClassResolver().resolveMandatoryClass(fromType);

http://git-wip-us.apache.org/repos/asf/camel/blob/c894c3a7/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java 
b/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
index a699636..b7f2c48 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
@@ -84,7 +84,7 @@ public interface TypeConverterRegistry extends StaticService {
     /**
      * What to do if attempting to add a duplicate type converter
      */
-    enum TypeConverterAddDuplicate {
+    enum TypeConverterExists {
         Overwrite, Ignore, Fail
     }
 
@@ -173,27 +173,27 @@ public interface TypeConverterRegistry extends 
StaticService {
      * <p/>
      * The default logging level is <tt>WARN</tt>
      */
-    LoggingLevel getAddDuplicateTypeConverterLoggingLevel();
+    LoggingLevel getTypeConverterExistsLoggingLevel();
 
     /**
      * The logging level to use when logging that a type converter already 
exists when attempting to add a duplicate type converter.
      * <p/>
      * The default logging level is <tt>WARN</tt>
      */
-    void setAddDuplicateTypeConverterLoggingLevel(LoggingLevel loggingLevel);
+    void setTypeConverterExistsLoggingLevel(LoggingLevel 
typeConverterExistsLoggingLevel);
 
     /**
      * What should happen when attempting to add a duplicate type converter.
      * <p/>
      * The default behavior is to override the existing.
      */
-    TypeConverterAddDuplicate getAddDuplicateTypeConverter();
+    TypeConverterExists getTypeConverterExists();
 
     /**
      * What should happen when attempting to add a duplicate type converter.
      * <p/>
      * The default behavior is to override the existing.
      */
-    void setAddDuplicateTypeConverter(TypeConverterAddDuplicate 
addDuplicateTypeConverter);
+    void setTypeConverterExists(TypeConverterExists typeConverterExists);
 
 }

Reply via email to