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());
                 }
             }
         }

Reply via email to