Jitu pointed out that the current design of the pipe copying has a
problem when pipes form a cycle. To fix this problem, I modified the
contract of the copy implementation.
The best way to cope with this change is to derive your Pipe class from
either "AbstractFilterPipeImpl" or "AbstractPipeImpl". Those pipes that
have the "next" pipe (and therefore works like a filter) should use
AbstractFilterPipeImpl, and those that don't should use AbstractPipeImpl.
If you don't feel like deriving from these, then check the javadoc of
Pipe.copy() method. You'll now have to call PipeCloner.add() method by
yourself.
--
Kohsuke Kawaguchi
Sun Microsystems kohsuke.kawaguchi_at_sun.com