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