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/25 18:45:07 UTC
[camel] 10/16: CAMEL-15567: components - Generate source code for
creating endpoint uri via a map of properties. WIP
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch uri-assembler
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 98425c18b3b2a112319879dfe4bf0ee21bb61db0
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Sep 25 13:18:29 2020 +0200
CAMEL-15567: components - Generate source code for creating endpoint uri via a map of properties. WIP
---
.../catalog/CustomEndpointUriAssemblerTest.java | 67 +++++++++++++++++++++-
.../component/EndpointUriAssemblerSupport.java | 4 +-
2 files changed, 65 insertions(+), 6 deletions(-)
diff --git a/core/camel-core/src/test/java/org/apache/camel/catalog/CustomEndpointUriAssemblerTest.java b/core/camel-core/src/test/java/org/apache/camel/catalog/CustomEndpointUriAssemblerTest.java
index 4dbdb16..d0bb0ff 100644
--- a/core/camel-core/src/test/java/org/apache/camel/catalog/CustomEndpointUriAssemblerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/catalog/CustomEndpointUriAssemblerTest.java
@@ -102,7 +102,7 @@ public class CustomEndpointUriAssemblerTest extends ContextTestSupport {
params.put("amount", "123");
String uri = assembler.buildUri(context, "acme", params);
- Assertions.assertEquals("acme:bar:8080?amount=123&verbose=false", uri);
+ Assertions.assertEquals("acme:bar?amount=123&verbose=false", uri);
}
@Test
@@ -116,7 +116,7 @@ public class CustomEndpointUriAssemblerTest extends ContextTestSupport {
params.put("amount", "123");
String uri = assembler.buildUri(context, "acme2", params);
- Assertions.assertEquals("acme2:bar/moes:8080?amount=123&verbose=true", uri);
+ Assertions.assertEquals("acme2:bar/moes?amount=123&verbose=true", uri);
}
@Test
@@ -158,7 +158,45 @@ public class CustomEndpointUriAssemblerTest extends ContextTestSupport {
params.put("amount", "123");
String uri = assembler.buildUri(context, "acme2", params);
- Assertions.assertEquals("acme2:bar:8080?amount=123&verbose=true", uri);
+ Assertions.assertEquals("acme2:bar?amount=123&verbose=true", uri);
+ }
+
+ @Test
+ public void testJms() throws Exception {
+ EndpointUriAssembler assembler = new MyJmsAssembler();
+
+ Map<String, Object> params = new LinkedHashMap<>();
+ params.put("destinationName", "foo");
+ params.put("destinationType", "topic");
+ params.put("deliveryPersistent", true);
+
+ String uri = assembler.buildUri(context, "jms2", params);
+ Assertions.assertEquals("jms2:topic:foo?deliveryPersistent=true", uri);
+ }
+
+ @Test
+ public void testJmsMatchDefault() throws Exception {
+ EndpointUriAssembler assembler = new MyJmsAssembler();
+
+ Map<String, Object> params = new LinkedHashMap<>();
+ params.put("destinationName", "foo");
+ params.put("destinationType", "queue");
+ params.put("deliveryPersistent", true);
+
+ String uri = assembler.buildUri(context, "jms2", params);
+ Assertions.assertEquals("jms2:queue:foo?deliveryPersistent=true", uri);
+ }
+
+ @Test
+ public void testJmsNoDefault() throws Exception {
+ EndpointUriAssembler assembler = new MyJmsAssembler();
+
+ Map<String, Object> params = new LinkedHashMap<>();
+ params.put("destinationName", "foo");
+ params.put("deliveryPersistent", true);
+
+ String uri = assembler.buildUri(context, "jms2", params);
+ Assertions.assertEquals("jms2:foo?deliveryPersistent=true", uri);
}
private class MyAssembler extends EndpointUriAssemblerSupport implements EndpointUriAssembler {
@@ -214,4 +252,27 @@ public class CustomEndpointUriAssemblerTest extends ContextTestSupport {
}
+ private class MyJmsAssembler extends EndpointUriAssemblerSupport implements EndpointUriAssembler {
+
+ private static final String SYNTAX = "jms2:destinationType:destinationName";
+
+ @Override
+ public boolean isEnabled(String scheme) {
+ return "jms2".equals(scheme);
+ }
+
+ @Override
+ public String buildUri(CamelContext camelContext, String scheme, Map<String, Object> parameters)
+ throws URISyntaxException {
+
+ String uri = SYNTAX;
+ uri = buildPathParameter(camelContext, SYNTAX, uri, "destinationType", "queue", false, parameters);
+ uri = buildPathParameter(camelContext, SYNTAX, uri, "destinationName", null, true, parameters);
+ uri = buildQueryParameters(camelContext, uri, parameters);
+
+ return uri;
+ }
+
+ }
+
}
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/component/EndpointUriAssemblerSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/component/EndpointUriAssemblerSupport.java
index 9dfa259..cb6ee24 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/component/EndpointUriAssemblerSupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/component/EndpointUriAssemblerSupport.java
@@ -34,7 +34,7 @@ public abstract class EndpointUriAssemblerSupport {
CamelContext camelContext, String syntax, String uri, String name, Object defaultValue, boolean required,
Map<String, Object> parameters) {
Object obj = parameters.remove(name);
- if (ObjectHelper.isEmpty(obj) && defaultValue != null) {
+ if (ObjectHelper.isEmpty(obj) && defaultValue != null && required) {
obj = camelContext.getTypeConverter().convertTo(String.class, defaultValue);
}
if (ObjectHelper.isEmpty(obj) && required) {
@@ -59,8 +59,6 @@ public abstract class EndpointUriAssemblerSupport {
}
}
- // TODO: value == defaultValue and required = false => remove from path as that is better (eg camel-jms)
-
return uri;
}