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