You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/01/15 13:51:55 UTC
[camel] 02/05: CAMEL-14389: add support for Endpoint DSL to
FluentProducerTemplate
This is an automated email from the ASF dual-hosted git repository.
lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit bafe7a518017a9a0e1dcbe1089f8198f50d3c706
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Tue Jan 14 16:14:01 2020 +0100
CAMEL-14389: add support for Endpoint DSL to FluentProducerTemplate
---
.../apache/camel/EndpointConsumerResolver.java} | 29 +++-------------------
.../apache/camel/EndpointProducerResolver.java} | 29 +++-------------------
.../org/apache/camel/FluentProducerTemplate.java | 14 ++++++++++-
.../camel/builder/EndpointConsumerBuilder.java | 16 ++----------
.../camel/builder/EndpointProducerBuilder.java | 15 ++---------
.../endpoint/LanguageEndpointScriptRouteTest.java | 14 +++++++++++
.../endpoint/LanguageEndpointStaticTest.java | 12 +++++++++
7 files changed, 49 insertions(+), 80 deletions(-)
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java b/core/camel-api/src/main/java/org/apache/camel/EndpointConsumerResolver.java
similarity index 61%
copy from core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java
copy to core/camel-api/src/main/java/org/apache/camel/EndpointConsumerResolver.java
index 9d40fc3..8786d9e 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java
+++ b/core/camel-api/src/main/java/org/apache/camel/EndpointConsumerResolver.java
@@ -14,38 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.builder;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.NoSuchEndpointException;
-
-/**
- * Type-safe endpoint DSL for building consumer endpoints.
- *
- * @see EndpointProducerBuilder
- */
-public interface EndpointConsumerBuilder {
+package org.apache.camel;
+public interface EndpointConsumerResolver {
/**
- * Builds and resolves this endpoint DSL as an endpoint.
+ * Resolves this object as an endpoint.
*
* @param context the camel context
* @return a built {@link Endpoint}
* @throws NoSuchEndpointException is thrown if the endpoint
*/
Endpoint resolve(CamelContext context) throws NoSuchEndpointException;
-
- /**
- * Builds the url of this endpoint. This API is only intended for Camel
- * internally.
- */
- String getUri();
-
- /**
- * Adds an option to this endpoint. This API is only intended for Camel
- * internally.
- */
- void doSetProperty(String name, Object value);
-
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java b/core/camel-api/src/main/java/org/apache/camel/EndpointProducerResolver.java
similarity index 61%
copy from core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java
copy to core/camel-api/src/main/java/org/apache/camel/EndpointProducerResolver.java
index 9d40fc3..669c218 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java
+++ b/core/camel-api/src/main/java/org/apache/camel/EndpointProducerResolver.java
@@ -14,38 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.builder;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.NoSuchEndpointException;
-
-/**
- * Type-safe endpoint DSL for building consumer endpoints.
- *
- * @see EndpointProducerBuilder
- */
-public interface EndpointConsumerBuilder {
+package org.apache.camel;
+public interface EndpointProducerResolver {
/**
- * Builds and resolves this endpoint DSL as an endpoint.
+ * Resolves this object as an endpoint.
*
* @param context the camel context
* @return a built {@link Endpoint}
* @throws NoSuchEndpointException is thrown if the endpoint
*/
Endpoint resolve(CamelContext context) throws NoSuchEndpointException;
-
- /**
- * Builds the url of this endpoint. This API is only intended for Camel
- * internally.
- */
- String getUri();
-
- /**
- * Adds an option to this endpoint. This API is only intended for Camel
- * internally.
- */
- void doSetProperty(String name, Object value);
-
}
diff --git a/core/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java b/core/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
index af19126..87a00ab 100644
--- a/core/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
+++ b/core/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
@@ -260,7 +260,7 @@ public interface FluentProducerTemplate extends Service {
}
/**
- * Endpoint to send to
+ * Endpoint to send to.
*
* @param uri the String formatted endpoint uri to send to
* @param args arguments for the string formatting of the uri
@@ -272,6 +272,18 @@ public interface FluentProducerTemplate extends Service {
/**
* Endpoint to send to
*
+ * @param resolver the {@link EndpointConsumerResolver} that supply the endpoint to send to.
+ */
+ default FluentProducerTemplate to(EndpointConsumerResolver resolver) {
+ final CamelContext context = ObjectHelper.notNull(getCamelContext(), "camel context");
+ final Endpoint endpoint = resolver.resolve(context);
+
+ return to(endpoint);
+ }
+
+ /**
+ * Endpoint to send to
+ *
* @param endpoint the endpoint to send to
*/
FluentProducerTemplate to(Endpoint endpoint);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java
index 9d40fc3..dde688b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java
@@ -16,26 +16,14 @@
*/
package org.apache.camel.builder;
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.NoSuchEndpointException;
+import org.apache.camel.EndpointConsumerResolver;
/**
* Type-safe endpoint DSL for building consumer endpoints.
*
* @see EndpointProducerBuilder
*/
-public interface EndpointConsumerBuilder {
-
- /**
- * Builds and resolves this endpoint DSL as an endpoint.
- *
- * @param context the camel context
- * @return a built {@link Endpoint}
- * @throws NoSuchEndpointException is thrown if the endpoint
- */
- Endpoint resolve(CamelContext context) throws NoSuchEndpointException;
-
+public interface EndpointConsumerBuilder extends EndpointConsumerResolver{
/**
* Builds the url of this endpoint. This API is only intended for Camel
* internally.
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointProducerBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointProducerBuilder.java
index e835574..b95ff48 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointProducerBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/EndpointProducerBuilder.java
@@ -17,26 +17,15 @@
package org.apache.camel.builder;
import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointProducerResolver;
import org.apache.camel.Expression;
-import org.apache.camel.NoSuchEndpointException;
/**
* Type-safe endpoint DSL for building producer endpoints.
*
* @see EndpointConsumerBuilder
*/
-public interface EndpointProducerBuilder {
-
- /**
- * Builds and resolves this endpoint DSL as an endpoint.
- *
- * @param context the camel context
- * @return a built {@link Endpoint}
- * @throws NoSuchEndpointException is thrown if the endpoint
- */
- Endpoint resolve(CamelContext context) throws NoSuchEndpointException;
-
+public interface EndpointProducerBuilder extends EndpointProducerResolver {
/**
* Builds the url of this endpoint. This API is only intended for Camel
* internally.
diff --git a/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/LanguageEndpointScriptRouteTest.java b/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/LanguageEndpointScriptRouteTest.java
index c6c017c..8ad0c4b 100644
--- a/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/LanguageEndpointScriptRouteTest.java
+++ b/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/LanguageEndpointScriptRouteTest.java
@@ -20,6 +20,8 @@ import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.junit.Test;
+import static org.apache.camel.builder.endpoint.dsl.DirectEndpointBuilderFactory.direct;
+
public class LanguageEndpointScriptRouteTest extends ContextTestSupport {
@Test
@@ -31,6 +33,18 @@ public class LanguageEndpointScriptRouteTest extends ContextTestSupport {
assertMockEndpointsSatisfied();
}
+ @Test
+ public void testLanguageFluent() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+
+ context.createFluentProducerTemplate()
+ .to(direct("start"))
+ .withBody("World")
+ .send();
+
+ assertMockEndpointsSatisfied();
+ }
+
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new EndpointRouteBuilder() {
diff --git a/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/LanguageEndpointStaticTest.java b/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/LanguageEndpointStaticTest.java
index dd77674..217e054 100644
--- a/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/LanguageEndpointStaticTest.java
+++ b/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/LanguageEndpointStaticTest.java
@@ -35,6 +35,18 @@ public class LanguageEndpointStaticTest extends ContextTestSupport {
assertMockEndpointsSatisfied();
}
+ @Test
+ public void testLanguageFluent() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+
+ context.createFluentProducerTemplate()
+ .to(direct("start"))
+ .withBody("World")
+ .send();
+
+ assertMockEndpointsSatisfied();
+ }
+
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {