This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new d731859a1d4 CAMEL-18239: [DOCS] Bean components - missing examples
d731859a1d4 is described below

commit d731859a1d40637b182b3ce0e1efc89bb7b57afd
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon Sep 5 20:18:11 2022 +0200

    CAMEL-18239: [DOCS] Bean components - missing examples
---
 .../camel-bean/src/main/docs/bean-component.adoc   | 75 ++++++++++++----------
 1 file changed, 40 insertions(+), 35 deletions(-)

diff --git a/components/camel-bean/src/main/docs/bean-component.adoc 
b/components/camel-bean/src/main/docs/bean-component.adoc
index 3eeb3ffd195..cba63e81b25 100644
--- a/components/camel-bean/src/main/docs/bean-component.adoc
+++ b/components/camel-bean/src/main/docs/bean-component.adoc
@@ -42,51 +42,53 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Using
+== Examples
 
-The object instance that is used to consume messages must be explicitly
-registered with the Registry. For example, if you
-are using Spring you must define the bean in the Spring configuration XML file.
+A *bean:* endpoint cannot be defined as the input to the route; i.e. you
+cannot consume from it, you can only route from some inbound message
+Endpoint to the bean endpoint as output, such as the *direct* endpoint as 
input.
 
-You can also register beans manually via Camel's `Registry` with the `bind` 
method.
+Suppose you have the following POJO class to be used by Camel
 
-Once an endpoint has been registered, you can build Camel routes that
-use it to process exchanges.
+[source,java]
+----
+package com.foo;
 
-A *bean:* endpoint cannot be defined as the input to the route; i.e. you
-cannot consume from it, you can only route from some inbound message
-Endpoint to the bean endpoint as output. So consider
-using a *direct:* or *queue:* endpoint as the input.
+public class MyBean {
+
+    public String saySomething(String input) {
+        return "Hello " + input;
+    }
+}
+----
 
-You can use the `createProxy()` methods on
-https://www.javadoc.io/doc/org.apache.camel/camel-bean/current/org/apache/camel/component/bean/ProxyHelper.html[ProxyHelper]
-to create a proxy that will generate exchanges and send them to any
-endpoint:
+Then the bean can be called in a Camel route by the fully qualified classname:
 
-And the same route using XML DSL:
+[source,java]
+----
+from("direct:hello")
+   .to("bean:com.foo.MyBean");
+----
+
+And in XML DSL:
 
 [source,xml]
 ----------------------------
 <route>
    <from uri="direct:hello"/>
-   <to uri="bean:bye"/>
+   <to uri="bean:com.foo.MyBean"/>
 </route>
 ----------------------------
 
-== Bean as endpoint
-
-Camel also supports invoking xref:bean-component.adoc[Bean] as an Endpoint. In 
the
-route below:
+What happens is that when the exchange is routed to the MyBean, then Camel
+will use the Bean Binding to invoke the bean, in this case the _saySomethinh_ 
method,
+by converting the `Exchange` in body to the `String`
+type and storing the output of the method back to the Exchange again.
 
-What happens is that when the exchange is routed to the `myBean` Camel
-will use the Bean Binding to invoke the bean. +
- The source for the bean is just a plain POJO:
+TIP: The bean component can also call a bean by _bean id_ by looking up the 
bean
+in the xref:manual::registry.adoc[Registry] instead of using the class name.
 
-Camel will use Bean Binding to invoke the
-`sayHello` method, by converting the Exchange's In body to the `String`
-type and storing the output of the method on the Exchange Out body.
-
-== Java DSL bean syntax
+== Java DSL specific bean syntax
 
 Java DSL comes with syntactic sugar for the xref:bean-component.adoc[Bean]
 component. Instead of specifying the bean explicitly as the endpoint
@@ -104,7 +106,7 @@ from("direct:start").bean("beanName", "methodName");
 -------------------------------------------------------
 
 Instead of passing name of the reference to the bean (so that Camel will
-lookup for it in the registry), you can specify the bean itself:
+lookup for it in the xref:manual::registry.adoc[Registry]), you can specify 
the bean itself:
 
 [source,java]
 ---------------------------------------------------------------
@@ -126,8 +128,9 @@ This bean could be a lambda if you cast the lambda to a 
`@FunctionalInterface`
 public interface ExampleInterface() {
     @Handler String methodName();
 }
-/* - - - - - - - - - - - */
-from("direct:start").bean((ExampleInterface) () -> ""))
+
+from("direct:start")
+    .bean((ExampleInterface) () -> ""))
 ---------------------------------------------------------------
 
 == Bean Binding
@@ -135,9 +138,11 @@ from("direct:start").bean((ExampleInterface) () -> ""))
 How bean methods to be invoked are chosen (if they are not specified
 explicitly through the *method* parameter) and how parameter values are
 constructed from the Message are all defined by the
-Bean Binding mechanism which is used throughout
-all of the various Bean Integration
-mechanisms in Camel.
+xref:manual::bean-binding.adoc[Bean Binding] mechanism which is used throughout
+all the various xref:manual::bean-integration.adoc[Bean Integration] 
mechanisms in Camel.
+
+See also related xref:bean-language.adoc[Bean Language].
+
 
 
 

Reply via email to