You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/09/04 07:46:17 UTC
[camel] 03/03: CAMEL-15502: camel-core - Enum type converter should
support dash style
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit f7542d3f1739715f8094cd6d1b81918d3a90648f
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Sep 4 09:45:04 2020 +0200
CAMEL-15502: camel-core - Enum type converter should support dash style
---
.../java/org/apache/camel/catalog/CamelCatalogTest.java | 6 +++++-
.../apache/camel/impl/converter/EnumTypeConverter.java | 7 +------
.../apache/camel/catalog/impl/AbstractCamelCatalog.java | 7 +++++--
.../src/main/java/org/apache/camel/util/StringHelper.java | 15 +++++++++++++++
4 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index 071e945..a62e567 100644
--- a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -1195,11 +1195,15 @@ public class CamelCatalogTest {
assertTrue(result.getUnknown().contains("unknown"));
// there is a type converter that converts from and to to phone number
+ uri = "zendesk:getTopicsByUser?userId=123";
+ result = catalog.validateEndpointProperties(uri);
+ assertTrue(result.isSuccess());
+
uri = "zendesk:GET_TOPICS_BY_USER?userId=123";
result = catalog.validateEndpointProperties(uri);
assertTrue(result.isSuccess());
- uri = "zendesk:GET_TOPICS_BY_USER?userId=123&unknown=true";
+ uri = "zendesk:get-topics-by-user?userId=123&unknown=true";
result = catalog.validateEndpointProperties(uri);
assertFalse(result.isSuccess());
assertTrue(result.getUnknown().contains("unknown"));
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java b/core/camel-base/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java
index 8aec277..6d51003 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java
@@ -17,7 +17,6 @@
package org.apache.camel.impl.converter;
import java.lang.reflect.Method;
-import java.util.Locale;
import org.apache.camel.Exchange;
import org.apache.camel.RuntimeCamelException;
@@ -49,11 +48,7 @@ public class EnumTypeConverter extends TypeConverterSupport {
}
// add support for using dash or camel cased to common used upper cased underscore style for enum constants
- text = StringHelper.camelCaseToDash(text);
- // replace double dashes
- text = text.replaceAll("-+", "-");
- // replace dash with underscore and upper case
- text = text.replace('-', '_').toUpperCase(Locale.ENGLISH);
+ text = StringHelper.asEnumConstantValue(text);
for (Enum enumValue : enumClass.getEnumConstants()) {
if (enumValue.name().equalsIgnoreCase(text)) {
return type.cast(enumValue);
diff --git a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
index ee96f82..21d1b94 100644
--- a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
+++ b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
@@ -272,7 +272,8 @@ public abstract class AbstractCamelCatalog {
if (!multiValue && !valuePlaceholder && !lookup && enums != null) {
boolean found = false;
for (String s : enums) {
- if (value.equalsIgnoreCase(s)) {
+ String valueEC = StringHelper.asEnumConstantValue(value);
+ if (value.equalsIgnoreCase(s) || valueEC.equalsIgnoreCase(s)) {
found = true;
break;
}
@@ -1100,8 +1101,10 @@ public abstract class AbstractCamelCatalog {
List<String> enums = row.getEnums();
if (!optionPlaceholder && !lookup && enums != null) {
boolean found = false;
+ String valueEC = StringHelper.asEnumConstantValue(value);
for (String s : enums) {
- if (value.equalsIgnoreCase(s)) {
+ // equals as is or using the enum naming style
+ if (value.equalsIgnoreCase(s) || valueEC.equalsIgnoreCase(s)) {
found = true;
break;
}
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java b/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java
index eb3d339..389a002 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java
@@ -877,4 +877,19 @@ public final class StringHelper {
}
}
+ /**
+ * Converts the value to an enum constant value that is in the form of upper cased with underscore.
+ */
+ public static String asEnumConstantValue(String value) {
+ if (value == null || value.isEmpty()) {
+ return value;
+ }
+ value = StringHelper.camelCaseToDash(value);
+ // replace double dashes
+ value = value.replaceAll("-+", "-");
+ // replace dash with underscore and upper case
+ value = value.replace('-', '_').toUpperCase(Locale.ENGLISH);
+ return value;
+ }
+
}