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 <lburgazz...@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() {