This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.20.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.20.x by this push: new fcfb80705b1 CAMEL-18878 Autowiring on endpoint works even if is disabled on component (#9042) fcfb80705b1 is described below commit fcfb80705b19e4c9cb5497afff9c19935f2ce39e Author: JiriOndrusek <ondrusek.j...@gmail.com> AuthorDate: Wed Jan 11 15:35:13 2023 +0100 CAMEL-18878 Autowiring on endpoint works even if is disabled on component (#9042) --- .../impl/DefaultComponentAutowiredFalseTest.java | 68 +++++++++++++++++++++- .../org/apache/camel/support/DefaultEndpoint.java | 2 +- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentAutowiredFalseTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentAutowiredFalseTest.java index ee927126c3e..d1bf0161a73 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentAutowiredFalseTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentAutowiredFalseTest.java @@ -22,12 +22,17 @@ import java.net.CookiePolicy; import java.util.Map; import org.apache.camel.CamelContext; +import org.apache.camel.Consumer; import org.apache.camel.ContextTestSupport; import org.apache.camel.Endpoint; +import org.apache.camel.Processor; +import org.apache.camel.Producer; import org.apache.camel.spi.GeneratedPropertyConfigurer; import org.apache.camel.spi.PropertyConfigurerGetter; import org.apache.camel.spi.Registry; +import org.apache.camel.spi.annotations.Component; import org.apache.camel.support.DefaultComponent; +import org.apache.camel.support.DefaultEndpoint; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -37,6 +42,7 @@ public class DefaultComponentAutowiredFalseTest extends ContextTestSupport { protected Registry createRegistry() throws Exception { Registry reg = super.createRegistry(); reg.bind("mycomponent-component", new MyComponentConfigurer()); + reg.bind("mycomponent-endpoint-configurer", new MyComponentConfigurer()); reg.bind("chf", new MyContentHandlerFactory()); return reg; } @@ -58,6 +64,27 @@ public class DefaultComponentAutowiredFalseTest extends ContextTestSupport { Assertions.assertNull(my.getCookiePolicy()); } + @Test + public void testAutowiredFalseWithEndpointTrue() throws Exception { + MyComponent my = new MyComponent(context); + my.setAutowiredEnabled(false); + context.addComponent("mycomponent", my); + + my = context.getComponent("mycomponent", MyComponent.class); + Assertions.assertNotNull(my); + + ContentHandlerFactory chf = (ContentHandlerFactory) context.getRegistry().lookupByName("chf"); + Assertions.assertNotNull(chf); + + // should not be autowired + Assertions.assertNull(my.getContentHandlerFactory()); + Assertions.assertNull(my.getCookiePolicy()); + + // endpoint + MyEndpoint me = context.getEndpoint("mycomponent://test", MyEndpoint.class); + Assertions.assertNull(me.getContentHandlerFactory()); + } + @Test public void testAutowiredTrue() throws Exception { MyComponent my = new MyComponent(context); @@ -75,6 +102,7 @@ public class DefaultComponentAutowiredFalseTest extends ContextTestSupport { Assertions.assertNull(my.getCookiePolicy()); } + @Component("mycomponent") private static final class MyComponent extends DefaultComponent { private ContentHandlerFactory contentHandlerFactory; @@ -86,7 +114,9 @@ public class DefaultComponentAutowiredFalseTest extends ContextTestSupport { @Override protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception { - return null; + MyEndpoint me = new MyEndpoint(); + me.setComponent(this); + return me; } public ContentHandlerFactory getContentHandlerFactory() { @@ -117,8 +147,13 @@ public class DefaultComponentAutowiredFalseTest extends ContextTestSupport { @Override public boolean configure(CamelContext camelContext, Object target, String name, Object value, boolean ignoreCase) { if ("contentHandlerFactory".equals(name)) { - MyComponent comp = (MyComponent) target; - comp.setContentHandlerFactory((ContentHandlerFactory) value); + if (target instanceof MyComponent) { + MyComponent comp = (MyComponent) target; + comp.setContentHandlerFactory((ContentHandlerFactory) value); + } else { + MyEndpoint endp = (MyEndpoint) target; + endp.setContentHandlerFactory((ContentHandlerFactory) value); + } return true; } else { return false; @@ -148,4 +183,31 @@ public class DefaultComponentAutowiredFalseTest extends ContextTestSupport { } } + private static final class MyEndpoint extends DefaultEndpoint { + private ContentHandlerFactory contentHandlerFactory; + + @Override + public Producer createProducer() throws Exception { + return null; + } + + @Override + public Consumer createConsumer(Processor processor) throws Exception { + return null; + } + + @Override + public boolean isSingleton() { + return false; + } + + public ContentHandlerFactory getContentHandlerFactory() { + return contentHandlerFactory; + } + + public void setContentHandlerFactory(ContentHandlerFactory contentHandlerFactory) { + this.contentHandlerFactory = contentHandlerFactory; + } + } + } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultEndpoint.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultEndpoint.java index 39334ef3fab..d56aebc35ba 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultEndpoint.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultEndpoint.java @@ -493,7 +493,7 @@ public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint protected void doInit() throws Exception { ObjectHelper.notNull(getCamelContext(), "camelContext"); - if (autowiredEnabled && getComponent() != null) { + if (autowiredEnabled && getComponent() != null && getComponent().isAutowiredEnabled()) { PropertyConfigurer configurer = getComponent().getEndpointPropertyConfigurer(); if (configurer instanceof PropertyConfigurerGetter) { PropertyConfigurerGetter getter = (PropertyConfigurerGetter) configurer;