You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/10/27 15:36:38 UTC
(camel) branch main updated: (chores) camel-core: minor cleanup to the add/replace converter logic
This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 878e5e64ecf (chores) camel-core: minor cleanup to the add/replace converter logic
878e5e64ecf is described below
commit 878e5e64ecff00d9cfc50dac317c55baea6a43ce
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Oct 27 17:16:14 2023 +0200
(chores) camel-core: minor cleanup to the add/replace converter logic
---
.../impl/converter/CoreTypeConverterRegistry.java | 36 ++++++++++++++--------
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/converter/CoreTypeConverterRegistry.java b/core/camel-base/src/main/java/org/apache/camel/impl/converter/CoreTypeConverterRegistry.java
index 8d0f0ad0a06..2d67b971f4c 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/converter/CoreTypeConverterRegistry.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/converter/CoreTypeConverterRegistry.java
@@ -447,7 +447,7 @@ public abstract class CoreTypeConverterRegistry extends ServiceSupport implement
// if fallback can promote then let it be promoted to a first class type converter
if (fallback.isCanPromote()) {
// add it as a known type converter since we found a fallback that could do it
- addTypeConverter(type, value.getClass(), fallback.getFallbackTypeConverter());
+ addOrReplaceTypeConverter(tc, typeConvertible);
}
// return converted value
return rc;
@@ -484,6 +484,11 @@ public abstract class CoreTypeConverterRegistry extends ServiceSupport implement
public void addTypeConverter(Class<?> toType, Class<?> fromType, TypeConverter typeConverter) {
LOG.trace("Adding type converter: {}", typeConverter);
final TypeConvertible<?, ?> typeConvertible = new TypeConvertible<>(fromType, toType);
+
+ addOrReplaceTypeConverter(typeConverter, typeConvertible);
+ }
+
+ private void addOrReplaceTypeConverter(TypeConverter typeConverter, TypeConvertible<?, ?> typeConvertible) {
TypeConverter converter = converters.get(typeConvertible);
if (converter == MISS_CONVERTER) {
@@ -501,17 +506,7 @@ public abstract class CoreTypeConverterRegistry extends ServiceSupport implement
// if converter is not null then a duplicate exists
if (converter != null) {
- if (typeConverterExists == TypeConverterExists.Override) {
- CamelLogger logger = new CamelLogger(LOG, typeConverterExistsLoggingLevel);
- logger.log("Overriding type converter from: " + converter + " to: " + typeConverter);
- } else if (typeConverterExists == TypeConverterExists.Ignore) {
- CamelLogger logger = new CamelLogger(LOG, typeConverterExistsLoggingLevel);
- logger.log("Ignoring duplicate type converter from: " + converter + " to: " + typeConverter);
- add = false;
- } else {
- // we should fail
- throw new TypeConverterExistsException(toType, fromType);
- }
+ add = onTypeConverterExists(typeConverter, typeConvertible, converter);
}
if (add) {
@@ -520,6 +515,23 @@ public abstract class CoreTypeConverterRegistry extends ServiceSupport implement
}
}
+ private boolean onTypeConverterExists(
+ TypeConverter typeConverter, TypeConvertible<?, ?> typeConvertible, TypeConverter converter) {
+ if (typeConverterExists == TypeConverterExists.Override) {
+ CamelLogger logger = new CamelLogger(LOG, typeConverterExistsLoggingLevel);
+ logger.log("Overriding type converter from: " + converter + " to: " + typeConverter);
+
+ return true;
+ } else if (typeConverterExists == TypeConverterExists.Ignore) {
+ CamelLogger logger = new CamelLogger(LOG, typeConverterExistsLoggingLevel);
+ logger.log("Ignoring duplicate type converter from: " + converter + " to: " + typeConverter);
+ return false;
+ }
+
+ // we should fail
+ throw new TypeConverterExistsException(typeConvertible.getTo(), typeConvertible.getFrom());
+ }
+
public boolean removeTypeConverter(Class<?> toType, Class<?> fromType) {
LOG.trace("Removing type converter from: {} to: {}", fromType, toType);
final TypeConverter removed = converters.remove(new TypeConvertible<>(fromType, toType));