On Thu, Feb 26, 2009 at 6:45 PM, paquettd <dan.paque...@lmco.com> wrote:
>
> Looking into this more it seems to be because I am ending up in a
> BeanProcessor. Line 120 of the bean processor is where the output of the
> @RecipientList method is overwriting the Out part of the exchange (which
> actually has the right data in it at that point).
>
> Using the Spring DSL is there a way for me to change the Processor being
> used? Or declare my @RecipientList pojo within the <RecipientList> tag.
If you POJO is @RecipientList then you can just route to it from Spring DSL

<to uri="bean:MyPOJOWithRecipeintListAnnotation"/>


>
>
> paquettd wrote:
>>
>> I'm seeing a behavior in camel 1.6 I don't understand. when I used the
>> producerTemplate to kickoff a workflow that
>> includes a @RecipientList component I seem to get back the result of the
>> recipient list... but my other services
>> end up being called (and their results simply lost to the ether).
>>
>> Here are some details (scrubbed of the real names; but the same idea)
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <beans xmlns="http://www.springframework.org/schema/beans";
>>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>       xmlns:camel="http://activemq.apache.org/camel/schema/spring";
>>       xsi:schemaLocation="http://www.springframework.org/schema/beans
>>
>> http://www.springframework.org/schema/beans/spring-beans.xsd
>>       http://activemq.apache.org/camel/schema/spring
>> http://activemq.apache.org/camel/schema/spring/camel-spring.xsd";>
>>
>>     <bean id="serviceA" class="example.ServiceAImpl"/>
>>     <bean id="serviceB" class="example.ServiceAImpl"/>
>>     <bean id="serviceC" class="example.ServiceAImpl"/>
>>
>>     <bean id="myRouter" class="example.MyRouter">
>>         <property name="passUrl" value="direct:needABC"/>
>>         <property name="failUrl" value="direct:needBC"/>
>>     </bean>
>>
>>     <camelContext xmlns="http://activemq.apache.org/camel/schema/spring";>
>>         <template id="myCamelTemplate" defaultEndpoint="direct:test"/>
>>
>>         <route>
>>             <from uri="direct:test"/>
>>             <bean ref="myRouter"/>
>>         </route>
>>
>>         <route>
>>             <from uri="direct:needABC"/>
>>             <bean ref="serviceA"/>
>>             <to uri="direct:needBC"/>
>>         </route>
>>
>>         <route>
>>             <from uri="direct:needBC"/>
>>             <bean ref="serviceB"/>
>>             <bean ref="serviceC"/>
>>         </route>
>>
>>     </camelContext>
>>
>>     <bean id="myTester" class="example.MyTester">
>>         <property name="producerTemplate" ref="myCamelTemplate"/>
>>     </bean>
>> </beans>
>>
>>
>>
>> My router class looks like:
>>
>> public class MyRouter{
>>
>>       public String passUrl = null;
>>       public String failUrl = null;
>>
>>       @RecipientList
>>       public String route(String body) {
>>               // for testing always return passUrl
>>               return passUrl;
>>       }
>>
>>       public void setPassUrl(String url) {
>>               passUrl = url;
>>       }
>>
>>       public void setFailUrl(String url) {
>>               failUrl = url;
>>       }
>> }
>>
>> And finally my "tester" does this:
>>
>> template.requestBody(template.getDefaultEndpoint(), "Hello World")
>>
>> All my services expect a String in this test; they just mutate it
>> (capitalize, reverse, other trival ops)
>> for the purpose of testing. I get to all those breakpoints.
>>
>> Anyway.. requestBody returns "direct:needABC" to me... but then I see
>> services A,B and C getting called.
>> If I changed direct:test to seda:test I get back my original input... and
>> services A,B and C still get called.
>> Both ways the result are lost.
>>
>> Am I missing something very obvious?
>>
>> FYI I was trying to avoid using @RecipientList and using <choose><when>
>> etc with groovy or javascript to do my
>> content based routing. Unfortunatly I'm using Java 5 without
>> javax.scripting. I tried installing
>> the javax.scripting implementation from java.net but couldn't quite get it
>> going in my OSGi container.
>> I guess that's a different question; but that would be my preferred
>> implementation.
>>
>
> --
> View this message in context: 
> http://www.nabble.com/%40RecipientList-and-ProducerTemplate-%28Camel-1.6-and-1.5%29-tp22227016p22229622.html
> Sent from the Camel - Users (activemq) mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/

Reply via email to