That was my intent in making ParserFilter a subinterface of Parser.
Here's how an application can do what you want:
Parser p;
ParserFilter pf;
p = new RealParser();
pf = new FooFilter();
pf.setParser(p);
p = pf;
pf = new BarFilter();
pf.setParser(p);
p = pf;
pf = new BazFilter();
pf.setParser(p);
p = pf;
...
If setParser returned "this" rather than void, then you could write the
cascade in fewer lines:
Parser p = new RealParser();
ParserFilter pf = new FooFilter().setParser(p);
pf = new BarFilter().setParser(pf);
pf = new BazFilter().setParser(pf);
...
p = pf;
I will probably make that change to setParser.
-- John Cowan http://www.ccil.org/~cowan cowan@ccil.org You tollerday donsk? N. You tolkatiff scowegian? Nn. You spigotty anglease? Nnn. You phonio saxo? Nnnn. Clear all so! 'Tis a Jute.... (Finnegans Wake 16.5)