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:14 UTC

[camel] branch master updated (5626fdd -> f7542d3)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git.


    from 5626fdd  Regen
     new a1bc504  CAMEL-15478: Api method can lookup from nice name to enum constant that are upper and underscore style.
     new 60b752f  CAMEL-15502: camel-core - Enum type converter should support dash style
     new f7542d3  CAMEL-15502: camel-core - Enum type converter should support dash style

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/camel/catalog/CamelCatalogTest.java |  6 ++++-
 .../camel/impl/converter/EnumTypeConverter.java    |  9 ++++++++
 .../camel/catalog/impl/AbstractCamelCatalog.java   |  7 ++++--
 .../apache/camel/converter/EnumConverterTest.java  | 27 ++++++++++++++++++++++
 .../component/ArgumentSubstitutionParserTest.java  |  2 +-
 .../java/org/apache/camel/util/StringHelper.java   | 15 ++++++++++++
 6 files changed, 62 insertions(+), 4 deletions(-)


[camel] 02/03: CAMEL-15502: camel-core - Enum type converter should support dash style

Posted by da...@apache.org.
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 60b752ff072b555f8732fd367a6b15c2b2963f65
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Sep 4 09:33:14 2020 +0200

    CAMEL-15502: camel-core - Enum type converter should support dash style
---
 .../camel/impl/converter/EnumTypeConverter.java    | 14 +++++++++++
 .../apache/camel/converter/EnumConverterTest.java  | 27 ++++++++++++++++++++++
 2 files changed, 41 insertions(+)

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 8890fe7..8aec277 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,11 +17,13 @@
 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;
 import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.support.TypeConverterSupport;
+import org.apache.camel.util.StringHelper;
 
 /**
  * A type converter which is used to convert from String to enum type
@@ -46,6 +48,18 @@ 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);
+            for (Enum enumValue : enumClass.getEnumConstants()) {
+                if (enumValue.name().equalsIgnoreCase(text)) {
+                    return type.cast(enumValue);
+                }
+            }
+
             // fallback to the JDK valueOf which is case-sensitive and throws exception if not found
             Method method;
             try {
diff --git a/core/camel-core/src/test/java/org/apache/camel/converter/EnumConverterTest.java b/core/camel-core/src/test/java/org/apache/camel/converter/EnumConverterTest.java
index bd3feb3..bfdb60b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/converter/EnumConverterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/converter/EnumConverterTest.java
@@ -67,4 +67,31 @@ public class EnumConverterTest extends ContextTestSupport {
         }
     }
 
+    @Test
+    public void testCamelCash() throws Exception {
+        Exchange exchange = new DefaultExchange(context);
+        MyEnum level = context.getTypeConverter().mandatoryConvertTo(MyEnum.class, exchange, "GET_USERS");
+        assertEquals(MyEnum.GET_USERS, level);
+
+        level = context.getTypeConverter().mandatoryConvertTo(MyEnum.class, exchange, "getUsers");
+        assertEquals(MyEnum.GET_USERS, level);
+
+        level = context.getTypeConverter().mandatoryConvertTo(MyEnum.class, exchange, "getUsersByTopic");
+        assertEquals(MyEnum.GET_USERS_BY_TOPIC, level);
+
+        level = context.getTypeConverter().mandatoryConvertTo(MyEnum.class, exchange, "GetUsersByTopic");
+        assertEquals(MyEnum.GET_USERS_BY_TOPIC, level);
+
+        level = context.getTypeConverter().mandatoryConvertTo(MyEnum.class, exchange, "get-users-by-topic");
+        assertEquals(MyEnum.GET_USERS_BY_TOPIC, level);
+
+        level = context.getTypeConverter().mandatoryConvertTo(MyEnum.class, exchange, "Get-Users-By-Topic");
+        assertEquals(MyEnum.GET_USERS_BY_TOPIC, level);
+    }
+
+    public enum MyEnum {
+        GET_USERS,
+        GET_USERS_BY_TOPIC
+    }
+
 }


[camel] 01/03: CAMEL-15478: Api method can lookup from nice name to enum constant that are upper and underscore style.

Posted by da...@apache.org.
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 a1bc5048b010c6074076e74e6001e813817bff4a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Sep 4 08:59:04 2020 +0200

    CAMEL-15478: Api method can lookup from nice name to enum constant that are upper and underscore style.
---
 .../apache/camel/support/component/ArgumentSubstitutionParserTest.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/camel-core/src/test/java/org/apache/camel/support/component/ArgumentSubstitutionParserTest.java b/core/camel-core/src/test/java/org/apache/camel/support/component/ArgumentSubstitutionParserTest.java
index 473688f..788fcf5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/support/component/ArgumentSubstitutionParserTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/support/component/ArgumentSubstitutionParserTest.java
@@ -67,7 +67,7 @@ public class ArgumentSubstitutionParserTest {
 
         final ApiMethodParser.ApiMethodModel sayHi1 = methodModels.get(8);
         assertEquals(PERSON, sayHi1.getArguments().get(0).getName());
-        assertEquals("SAYHI_1", sayHi1.getUniqueName());
+        assertEquals("SAY_HI_1", sayHi1.getUniqueName());
 
         ApiMethodParser.ApiMethodModel sayHiResource = methodModels.get(9);
         assertEquals(java.util.Date.class, sayHiResource.getResultType());


[camel] 03/03: CAMEL-15502: camel-core - Enum type converter should support dash style

Posted by da...@apache.org.
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;
+    }
+
 }