[
https://issues.apache.org/activemq/browse/CAMEL-2368?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=56953#action_56953
]
Claus Ibsen commented on CAMEL-2368:
------------------------------------
In terms of your request for a {{Endpoint[]}} then just use a {{.constant}}
expression
{code}
private Object list;
...
from (getErrorEndpoint())
.recipientList(constant(list), "getRecipients");
{code}
> Bean Expression for Non Registry beans can't reference an instance
> ------------------------------------------------------------------
>
> Key: CAMEL-2368
> URL: https://issues.apache.org/activemq/browse/CAMEL-2368
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.0.0, 2.1.0
> Environment: Compile issue. Java 6, Windows, Eclipse/Gallileo
> Reporter: Michael Mathers
> Assignee: Claus Ibsen
> Priority: Minor
>
> The documentation at the bottom of this page:
> http://camel.apache.org/bean-language.html says that I can use the bean
> expression DSL to work with beans that are not in the registry in two
> different ways (2.0-M2+).
> # Specify Class/method and Camel will create a new instance of the bean and
> call the method.
> # Specify instance/method and Camel will use the the specified instance and
> call the method.
> In fact, the doc shows examples of both:
> h4. Method 1)
> {code}
> from("activemq:topic:OrdersTopic").
> filter().expression(bean(MyBean.class, "isGoldCustomer")).
> to("activemq:BigSpendersQueue");
> {code}
> h4. Method 2)
> {code}
> private MyBean my;
> from("activemq:topic:OrdersTopic").
> filter().expression(bean(my, "isGoldCustomer")).
> to("activemq:BigSpendersQueue");
> {code}
> I am unable to do the latter (#2) as the methods are not defined. I'm using
> Camel 2.1.0 but I've tried 2.0.0 as well. So either the doc is wrong or the
> methods are missing/not visible. My code specifically is:
> {code}
> private Object list;
> ...
> from (getErrorEndpoint())
> .recipientList(list, "getRecipients");
> {code}
> Yes, there are easy ways to avoid this. But I prefer not to have to create
> more XML and/or specify a Class name here.
> Finally, is there a good reason ".recipientList()" isn't overloaded to take
> an Endpoint[] instead of only an Expression? The @RecipientList annotation
> seems to anticipate this form but there doesn't seem to be a good way to plug
> the @RecipientList annotated bean into the route definition. Even if the
> bean is in the registry it looks as if you still have to supply the method
> name anyway despite that its already annotated (unless you also annotate with
> @Handler which might be undesirable).
> Ideally, I could have...
> {code}
> Object list = new Object() {
> @RecipientList public Collection<Endpoint> getRecipents(Object body) {... }
> }
> ...
> from (endpoint).recipientList(<any instance annotated with @RecipientList>)
> {code}
> or even
> {code}
> // Look for method "errors" then look for annotation @RecipientList("errors")
> from (endpoint).recipientList( bean, "errors" )
> {code}
> Is this making any sense? (I'm still very wet behind the ears)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.