Hi Mel,
As you know, we are on the same page on the main issue ( refactoring
jasper), but there are few details... ( sorry for responding so late)
First, I think we need to agree on the goals :-) Your proposal is great,
but I would like to make explicit the following ( at least ):
- clean separation between runtime and compile time. This is important to
resolve many class loader issues, to allow "real" self-contained wars (
i.e. you include the runtime and jspc-compiled servlets - and that should
run on any container without requiring the full jasper )
- separated and pluggable code generator. This is very important for me,
as I want to do some optimizations and try few ideas - and that shouldn't
affect the stability of the main code. ( this is somehow included in the
toolkig idea, but it's good to make it explicit ).
- "commons"-style components. Even if we'll use explicit interfaces for
toolkit, we need to separate components as independent beans ( with
setter/getter, and no/minimal inter-dependencies ). On top of this we can
use the Toolkit or whatever internal interfaces are required by jasper.
- Important. Merge of jasper40 and 33. It would be a waste of time to do
this only for 3.3 or to re-implement jsp1.2 features later. We should
think of this from start ( and it's not difficult - if we support separate
runtime and generators ). That would require ( IMHO ) to start with 4.0
and combine with 3.3.
Long term, I am very interested in experiments with code generators ( like
using XSLT, optimizations for buffers, etc ), so support for multiple
generators ( with intial support for 2 - "classic" 1.1 and 1.2 ) is
important.
I do agree with the "toolkit" metaphor, in the sense of having multiple
quasi-independent components. I think we should postpone adding the
interfaces and the "Toolkit" classes until after the first round of
refactoring - but that's not that important.
If you agree with starting with jasper4 ( because it's more complex ), I
can start doing an initial split in components.
I do have some experience with refactoring ( tomcat3.0 -> 3.3 :-), and did
few experiments with refactoring jasper ( but I'm still not happy with
the result ).
Costin