Hi

I have created a JIRA ticket
https://issues.apache.org/jira/browse/CAMEL-4033

On Sat, May 28, 2011 at 3:25 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> Hi
>
> Fell free to create a JIRA ticket for an improvement to the loop DSL
> so we can add an option to control if looping should be from
> - a copy of the input message
> - continue looping the same message
>
> http://camel.apache.org/support
>
> On Fri, May 27, 2011 at 11:58 PM, Greg McFall <gregory.mcf...@gmail.com> 
> wrote:
>> I just tried it.  Sadly, the inOnly() trick does not work.
>>
>> On Fri, May 27, 2011 at 5:50 PM, Donald Whytock <dwhyt...@gmail.com> wrote:
>>
>>> Have you tried using inOnly()?  As in
>>>
>>> from(start).loop(3).inOnly().to(endpoint);
>>>
>>> On Fri, May 27, 2011 at 5:34 PM, Greg McFall <gregory.mcf...@gmail.com>
>>> wrote:
>>> > Don,
>>> > If the LoopProcessor was intentionally designed so that the output from
>>> one
>>> > iteration is used as input to the next iteration, then the documentation
>>> > should say so.
>>> > The current documentation is misleading because it implies a different
>>> > behavior.  It implies that the original message is repeated for each
>>> > iteration of the loop.
>>> >
>>> > Even if it is not a bug, I think there is a case for an enhancement
>>> request.
>>> >  There ought to be an option to process the same message multiple times
>>> > instead of using the output from one iteration as input to the next
>>> > iteration.
>>> >
>>> > For example, I'd like to be able to do something like the following:
>>> >
>>> > from(start).loop(3).repeatOriginalMessage().to(endpoint);
>>> >
>>> > ~ Greg
>>> >
>>> >
>>> >
>>> > On Fri, May 27, 2011 at 5:16 PM, Donald Whytock <dwhyt...@gmail.com>
>>> wrote:
>>> >
>>> >> 1. The CopyProcessor, yes, that doesn't currently exist.  The
>>> >> processor to hand to the CopyProcessor should be whatever you're using
>>> >> already.  If you're just sending the message to an endpoint over and
>>> >> over, it could be an instance of SendProcessor(endpoint).
>>> >>
>>> >> 2. I don't think it's a bug.  A given Processor is inherently a
>>> >> transformer; I could see a situation where you'd want to modify the
>>> >> same exchange over and over.  So the functionality of the loop is
>>> >> entirely dependent on the functionality of the processor you attach to
>>> >> it.
>>> >>
>>> >> On Fri, May 27, 2011 at 4:48 PM, Greg McFall <gregory.mcf...@gmail.com>
>>> >> wrote:
>>> >> > Don,
>>> >> >
>>> >> > Yes, that might work.  But I have two issues:
>>> >> >
>>> >> > 1.  This solution requires that I somehow build the downstream
>>> Processor
>>> >> > that I will pass as an argument to the constructor.  This is certainly
>>> >> > possible, but it does not mesh well with the fluid Java DSL.
>>> >> >
>>> >> > 2.  It seems to me that I should not have to resort to a workaround
>>> like
>>> >> the
>>> >> > one you proposed.  I am wondering if this is bug in the LoopProcessor
>>> >> > implementation that should be reported.  (Or maybe it's a bug in the
>>> >> > documentation.)
>>> >> >
>>> >> > ~ Greg
>>> >> >
>>> >> >
>>> >> >
>>> >> > On Fri, May 27, 2011 at 1:58 PM, Donald Whytock <dwhyt...@gmail.com>
>>> >> wrote:
>>> >> >
>>> >> >> Create a CopyProcessor, along the lines of:
>>> >> >>
>>> >> >> public class CopyProcessor implements Processor
>>> >> >>  {
>>> >> >>  Processor processor;
>>> >> >>
>>> >> >>  public CopyProcessor(Processor processor)
>>> >> >>    { this.processor = processor; }
>>> >> >>
>>> >> >>  public void process(Exchange exchange) throws Exception
>>> >> >>    { processor.process(exchange.copy()); }
>>> >> >>
>>> >> >>  }
>>> >> >>
>>> >> >> Then use it in your loop:
>>> >> >>
>>> >> >>  from(endpoint)
>>> >> >>    .process(new LoopProcessor(new CopyProcessor(processor)));
>>> >> >>
>>> >> >> On Fri, May 27, 2011 at 1:24 PM, Greg McFall <
>>> gregory.mcf...@gmail.com>
>>> >> >> wrote:
>>> >> >> > Don,
>>> >> >> >
>>> >> >> > I don't understand what you are proposing.  How would I swap out
>>> the
>>> >> >> > exchange?
>>> >> >> >
>>> >> >> > ~ Greg
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> > On Fri, May 27, 2011 at 12:54 PM, Donald Whytock <
>>> dwhyt...@gmail.com>
>>> >> >> wrote:
>>> >> >> >
>>> >> >> >> How about using Exchange.copy() to pass a copy of the exchange to
>>> the
>>> >> >> >> downstream processor, so that the original exchange doesn't get
>>> >> >> >> changed?
>>> >> >> >>
>>> >> >> >> Don
>>> >> >> >>
>>> >> >> >> On Fri, May 27, 2011 at 12:36 PM, Greg McFall <
>>> >> gregory.mcf...@gmail.com
>>> >> >> >
>>> >> >> >> wrote:
>>> >> >> >> > Hi,
>>> >> >> >> >
>>> >> >> >> > The Camel documentation contains the following statement about
>>> the
>>> >> >> Loop
>>> >> >> >> > pattern:
>>> >> >> >> >
>>> >> >> >> > The Loop allows to process a message a number of times and
>>> possibly
>>> >> >> >> process
>>> >> >> >> > them in a different way.
>>> >> >> >> >
>>> >> >> >> > This seems to imply that the same input message will be
>>> processed
>>> >> by
>>> >> >> the
>>> >> >> >> > downstream pipeline with each subsequent iteration.
>>> >> >> >> > But my experience shows that the output from one iteration of
>>> the
>>> >> loop
>>> >> >> is
>>> >> >> >> > used as input to the next iteration.
>>> >> >> >> >
>>> >> >> >> > Is this the expected behavior?
>>> >> >> >> > That seems like a strange way to define a loop.
>>> >> >> >> > Is there any way to coerce the Loop to operate on the same exact
>>> >> input
>>> >> >> >> > message for each iteration?
>>> >> >> >> >
>>> >> >> >> > Cheers,
>>> >> >> >> > Greg McFall
>>> >> >> >> >
>>> >> >> >>
>>> >> >> >
>>> >> >>
>>> >> >
>>> >>
>>> >
>>>
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> CamelOne 2011: http://fusesource.com/camelone2011/
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cib...@fusesource.com
Web: http://fusesource.com
CamelOne 2011: http://fusesource.com/camelone2011/
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to