This is an automated email from the ASF dual-hosted git repository. lburgazzoli pushed a commit to branch camel-3.4.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.4.x by this push: new 33f9de7 CAMEL-15445: component lifecycle is differen when endpoints are created using endpointdsl 33f9de7 is described below commit 33f9de7624b5e1e739869419cbb1918b63e27ac7 Author: lburgazzoli <lburgazz...@gmail.com> AuthorDate: Fri Aug 21 16:52:41 2020 +0200 CAMEL-15445: component lifecycle is differen when endpoints are created using endpointdsl --- .../camel/impl/engine/AbstractCamelContext.java | 1 + .../apache/camel/builder/endpoint/CronTest.java | 103 +++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java index d1a0012..2fc7982 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java @@ -944,6 +944,7 @@ public abstract class AbstractCamelContext extends BaseService } LOG.trace("Endpoint uri: {} is from component with name: {}", uri, scheme); Component component = getComponent(scheme); + ServiceHelper.initService(component); // Ask the component to resolve the endpoint. if (component != null) { diff --git a/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/CronTest.java b/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/CronTest.java new file mode 100644 index 0000000..deb1d91 --- /dev/null +++ b/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/CronTest.java @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.builder.endpoint; + +import org.apache.camel.CamelContext; +import org.apache.camel.Endpoint; +import org.apache.camel.component.cron.api.CamelCronConfiguration; +import org.apache.camel.component.cron.api.CamelCronService; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.spi.HasCamelContext; +import org.junit.jupiter.api.Test; + +public class CronTest { + @Test + public void setUpCronWithEndpointDSL() throws Exception { + CamelContext context = new DefaultCamelContext(); + context.getRegistry().bind("cs", new CronService(context, "cs")); + context.addRoutes(new EndpointRouteBuilder() { + @Override + public void configure() { + from(cron("tab").schedule("0/1 * * * * ?")) + .setBody().constant("x") + .to("mock:result"); + } + }); + + MockEndpoint mock = context.getEndpoint("mock:result", MockEndpoint.class); + mock.expectedMinimumMessageCount(1); + + context.start(); + + try { + mock.assertIsSatisfied(); + } finally { + context.stop(); + } + } + + @Test + public void setUpCronWithURI() throws Exception { + CamelContext context = new DefaultCamelContext(); + context.getRegistry().bind("cs", new CronService(context, "cs")); + context.addRoutes(new EndpointRouteBuilder() { + @Override + public void configure() { + from("cron:tab?schedule=0/1 * * * * ?") + .setBody().constant("x") + .to("mock:result"); + } + }); + + MockEndpoint mock = context.getEndpoint("mock:result", MockEndpoint.class); + mock.expectedMinimumMessageCount(1); + + context.start(); + + try { + mock.assertIsSatisfied(); + } finally { + context.stop(); + } + } + + public static class CronService implements CamelCronService, HasCamelContext { + private final CamelContext camelContext; + private final String id; + + public CronService(CamelContext context, String id) { + this.camelContext = context; + this.id = id; + } + + @Override + public Endpoint createEndpoint(CamelCronConfiguration configuration) throws Exception { + return camelContext.getEndpoint("timer:tick?period=1&delay=0"); + } + + @Override + public String getId() { + return id; + } + + @Override + public CamelContext getCamelContext() { + return this.camelContext; + } + } +}