This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch CAMEL-16607 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 64a066ba32d45aa653f3d0c08ba51a3fcd565ea9 Author: Claus Ibsen <[email protected]> AuthorDate: Thu May 13 08:34:27 2021 +0200 CAMEL-16607: route template / kamelets. Allow to use #type and #class for local beans --- .../src/main/java/org/apache/camel/impl/DefaultModel.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java index 2388fdc..1813a01 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java @@ -32,6 +32,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Expression; import org.apache.camel.ExtendedCamelContext; import org.apache.camel.FailedToCreateRouteFromTemplateException; +import org.apache.camel.NoSuchBeanException; import org.apache.camel.RouteTemplateContext; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.model.DefaultRouteTemplateContext; @@ -385,9 +386,14 @@ public class DefaultModel implements Model { () -> camelContext.getInjector().newInstance(clazz)); } else if (b.getType() != null && b.getType().startsWith("#type:")) { Class<?> clazz = camelContext.getClassResolver().resolveMandatoryClass(b.getType().substring(6)); - Set<?> set = camelContext.getRegistry().findByType(clazz); - if (set.size() == 1) { - routeTemplateContext.bind(b.getName(), clazz, set.iterator().next()); + Set<?> found = getCamelContext().getRegistry().findByType(clazz); + if (found == null || found.isEmpty()) { + throw new NoSuchBeanException(null, clazz.getName()); + } else if (found.size() > 1) { + throw new NoSuchBeanException( + "Found " + found.size() + " beans of type: " + clazz + ". Only one bean expected."); + } else { + routeTemplateContext.bind(b.getName(), clazz, found.iterator().next()); } } }
