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 <[email protected]>
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.