This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch bind in repository https://gitbox.apache.org/repos/asf/camel.git
commit d8bc6ff097b85087e7b82afe83b96f92ac83d918 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Mar 5 05:19:14 2019 +0100 CAMEL-13283: Add @BindRegistry annotation to allow to bind beans/classes to registry. --- .../apache/camel/{BindRegistry.java => BindToRegistry.java} | 2 +- .../src/main/java/org/apache/camel/builder/RouteBuilder.java | 10 ++++++++++ .../org/apache/camel/impl/DefaultCamelBeanPostProcessor.java | 6 +++--- .../apache/camel/impl/DefaultCamelBeanPostProcessorTest.java | 6 +++--- .../org/apache/camel/processor/CBRHeaderPredicateTest.java | 10 ++-------- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/BindRegistry.java b/core/camel-api/src/main/java/org/apache/camel/BindToRegistry.java similarity index 97% rename from core/camel-api/src/main/java/org/apache/camel/BindRegistry.java rename to core/camel-api/src/main/java/org/apache/camel/BindToRegistry.java index b2aebca..d5a446c 100644 --- a/core/camel-api/src/main/java/org/apache/camel/BindRegistry.java +++ b/core/camel-api/src/main/java/org/apache/camel/BindToRegistry.java @@ -31,7 +31,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Documented @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) -public @interface BindRegistry { +public @interface BindToRegistry { String name() default ""; String context() default ""; } diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java index 6cac0ce..d3c8b34 100644 --- a/core/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java +++ b/core/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java @@ -81,6 +81,16 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild public abstract void configure() throws Exception; /** + * Binds the bean to the repository (if possible). + * + * @param id the id of the bean + * @param bean the bean + */ + public void bindToRegistry(String id, Object bean) { + getContext().getRegistry().bind(id, bean); + } + + /** * Configures the REST services * * @return the builder diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java index e7dc03f..6dfc82d 100644 --- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java +++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java @@ -20,7 +20,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import org.apache.camel.BeanInject; -import org.apache.camel.BindRegistry; +import org.apache.camel.BindToRegistry; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.DeferredContextBinding; @@ -88,7 +88,7 @@ public class DefaultCamelBeanPostProcessor { injectMethods(bean, beanName); // the bean may also need to be registered into the registry - BindRegistry bind = bean.getClass().getAnnotation(BindRegistry.class); + BindToRegistry bind = bean.getClass().getAnnotation(BindToRegistry.class); if (bind != null) { String name = bind.name(); if (isEmpty(name)) { @@ -203,7 +203,7 @@ public class DefaultCamelBeanPostProcessor { injectField(field, produce.uri(), produce.ref(), produce.property(), bean, beanName, produce.binding()); } - BindRegistry bind = field.getAnnotation(BindRegistry.class); + BindToRegistry bind = field.getAnnotation(BindToRegistry.class); if (bind != null && getPostProcessorHelper().matchContext(bind.context())) { bindRegistry(field, bind.name(), bean, beanName); } diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelBeanPostProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelBeanPostProcessorTest.java index f6b7ef8..8814848 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelBeanPostProcessorTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelBeanPostProcessorTest.java @@ -16,7 +16,7 @@ */ package org.apache.camel.impl; -import org.apache.camel.BindRegistry; +import org.apache.camel.BindToRegistry; import org.apache.camel.Consume; import org.apache.camel.ContextTestSupport; import org.apache.camel.Produce; @@ -57,14 +57,14 @@ public class DefaultCamelBeanPostProcessorTest extends ContextTestSupport { postProcessor = new DefaultCamelBeanPostProcessor(context); } - @BindRegistry + @BindToRegistry public class FooService { private String fooEndpoint; private String barEndpoint; @Produce private ProducerTemplate bar; - @BindRegistry(name = "myCoolBean") + @BindToRegistry(name = "myCoolBean") private MySerialBean myBean = new MySerialBean(); public String getFooEndpoint() { diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/CBRHeaderPredicateTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/CBRHeaderPredicateTest.java index f97ec2c..a253cfe 100644 --- a/core/camel-core/src/test/java/org/apache/camel/processor/CBRHeaderPredicateTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/processor/CBRHeaderPredicateTest.java @@ -21,18 +21,10 @@ import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.impl.JndiRegistry; import org.junit.Test; public class CBRHeaderPredicateTest extends ContextTestSupport { - @Override - protected JndiRegistry createRegistry() throws Exception { - JndiRegistry jndi = super.createRegistry(); - jndi.bind("cbrBean", new MyCBRBean()); - return jndi; - } - @Test public void testCBR() throws Exception { MockEndpoint foo = getMockEndpoint("mock:foo"); @@ -52,6 +44,8 @@ public class CBRHeaderPredicateTest extends ContextTestSupport { return new RouteBuilder() { @Override public void configure() throws Exception { + bindToRegistry("cbrBean", new MyCBRBean()); + from("direct:start") .choice() .when().method("cbrBean", "checkHeader")