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 2022/12/12 15:33:04 UTC

[camel] branch main updated: CAMEL-18802: Endpoints using optional parameters should skip parameter if parameter is using resource loader such as base64.

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

davsclaus 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 7022968603c CAMEL-18802: Endpoints using optional parameters should skip parameter if parameter is using resource loader such as base64.
7022968603c is described below

commit 7022968603cca1a1085c2c3de6fe727b616874ae
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Dec 12 16:32:48 2022 +0100

    CAMEL-18802: Endpoints using optional parameters should skip parameter if parameter is using resource loader such as base64.
---
 .../OptionalPropertyPlaceholderTest.java           | 23 ++++++++++++++++++++++
 .../org/apache/camel/util/ResourceHelperTest.java  | 11 +++++++++++
 .../org/apache/camel/support/EndpointHelper.java   | 15 ++++++++++++--
 3 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/core/camel-core/src/test/java/org/apache/camel/component/properties/OptionalPropertyPlaceholderTest.java b/core/camel-core/src/test/java/org/apache/camel/component/properties/OptionalPropertyPlaceholderTest.java
index a80ce2939b7..7501f160816 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/properties/OptionalPropertyPlaceholderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/properties/OptionalPropertyPlaceholderTest.java
@@ -215,6 +215,29 @@ public class OptionalPropertyPlaceholderTest extends ContextTestSupport {
         assertMockEndpointsSatisfied();
     }
 
+    @Test
+    public void testQueryWithResourceLoader() throws Exception {
+        Properties prop = new Properties();
+        prop.put("whereTo", "result");
+        context.getPropertiesComponent().setInitialProperties(prop);
+
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start")
+                        .to("mock:{{?whereTo}}?retainFirst=base64:{{?maxBase64}}");
+            }
+        });
+        context.start();
+
+        getMockEndpoint("mock:result").expectedMessageCount(2);
+
+        template.sendBody("direct:start", "Hello World");
+        template.sendBody("direct:start", "Bye World");
+
+        assertMockEndpointsSatisfied();
+    }
+
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/ResourceHelperTest.java b/core/camel-core/src/test/java/org/apache/camel/util/ResourceHelperTest.java
index 0cb88535530..2b8ddd42649 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/ResourceHelperTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/ResourceHelperTest.java
@@ -29,6 +29,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.TestSupport;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.Registry;
+import org.apache.camel.spi.Resource;
 import org.apache.camel.support.DefaultRegistry;
 import org.apache.camel.support.ResourceHelper;
 import org.junit.jupiter.api.Test;
@@ -296,4 +297,14 @@ public class ResourceHelperTest extends TestSupport {
         assertEquals(0, params.size());
     }
 
+    @Test
+    public void testBase64() throws Exception {
+        CamelContext context = new DefaultCamelContext();
+        context.start();
+
+        Resource res = ResourceHelper.resolveResource(context, "base64:SGVsbG8=");
+        assertTrue(res.exists());
+        assertEquals("Hello", context.getTypeConverter().convertTo(String.class, res.getInputStream()));
+    }
+
 }
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java
index 2b85575f876..cbbb56ee872 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java
@@ -128,8 +128,19 @@ public final class EndpointHelper {
                     continue;
                 }
                 Object value = entry.getValue();
-                if (value instanceof String && ((String) value).startsWith(prefix)) {
-                    continue;
+                if (value instanceof String) {
+                    String s = value.toString();
+                    if (s.startsWith(prefix)) {
+                        continue;
+                    }
+                    // okay the value may use a resource loader with a scheme prefix
+                    int dot = s.indexOf(':');
+                    if (dot > 0 && dot < s.length() - 1) {
+                        s = s.substring(dot + 1);
+                        if (s.startsWith(prefix)) {
+                            continue;
+                        }
+                    }
                 }
                 keep.put(key, value);
             }