This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch fac-bean in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/fac-bean by this push: new 6da61ceae18 CAMEL-19912: camel-core-model - Add factory-bean parameter 6da61ceae18 is described below commit 6da61ceae18003c9ca2a01e0037ad819a3a8c664 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Sep 26 13:07:16 2023 +0200 CAMEL-19912: camel-core-model - Add factory-bean parameter --- .../java/org/apache/camel/spring/spi/SpringInjector.java | 13 ++++++++++--- .../src/main/java/org/apache/camel/spi/Injector.java | 2 +- .../modules/ROOT/pages/camel-4x-upgrade-guide-4_1.adoc | 5 +++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java index dc315ca6f2d..bd3c1626e70 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java @@ -43,16 +43,23 @@ public class SpringInjector implements Injector { @Override public <T> T newInstance(Class<T> type, String factoryMethod) { + return newInstance(type, null, factoryMethod); + } + + @Override + public <T> T newInstance(Class<T> type, Class<?> factoryClass, String factoryMethod) { + Class<?> target = factoryClass != null ? factoryClass : type; T answer = null; try { // lookup factory method - Method fm = type.getMethod(factoryMethod); - if (Modifier.isStatic(fm.getModifiers()) && Modifier.isPublic(fm.getModifiers()) && fm.getReturnType() == type) { + Method fm = target.getMethod(factoryMethod); + if (Modifier.isStatic(fm.getModifiers()) && Modifier.isPublic(fm.getModifiers()) + && fm.getReturnType() != Void.class) { Object obj = fm.invoke(null); answer = type.cast(obj); } } catch (Exception e) { - throw new RuntimeCamelException("Error invoking factory method: " + factoryMethod + " on class: " + type, e); + throw new RuntimeCamelException("Error invoking factory method: " + factoryMethod + " on class: " + target, e); } return answer; } diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/Injector.java b/core/camel-api/src/main/java/org/apache/camel/spi/Injector.java index 69df0a6959b..636090a4ccf 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/Injector.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/Injector.java @@ -18,7 +18,7 @@ package org.apache.camel.spi; /** * A pluggable strategy for creating and possibly dependency injecting objects which could be implemented using straight - * forward reflection or using Spring or CDI to perform dependency injection. + * forward reflection or using Spring or Quarkus to perform dependency injection. */ public interface Injector { diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_1.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_1.adoc index 246b3e864f8..59060d1ec75 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_1.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_1.adoc @@ -6,6 +6,11 @@ from both 4.0 to 4.1 and 4.1 to 4.2. == Upgrading Camel 4.0 to 4.1 +=== camel-api + +Add method `newInstance(Class<T> type, Class<?> factoryClass, String factoryMethod)` +to `org.apache.camel.spi.Injector`. + === camel-management Dumping routes to JMX no longer includes `customId="true"` in the XML nodes.