Hi Sorry about the delay in responding. Hopefully I'm not too late
responding ;) If the Java runtime has not been committed to main,
could we hold off until I apply a patch? As Sebastien mentioned, I
commited a few changes over break. I'm on dial-up right now so it
will be nearly impossible for me to patch until tomorrow night/ weds
morning. Does that work for people?
Overview of some of the changes (I'll right more when I have more
time) is as follows. Note I did this on a parallel track to
TuscanyModuleComponentContextImpl (which can hopefully go away once
all of the changes are made) so as not to break functionality.
1. Major refactoring of "contexts" so the hierarchy is improved and
scope containers are now contexts (this simplifies the code a lot, I
think). Start with "o.a.t.context.Context" to see.
2. Implementation of the "Russian Doll" idea for contexts (c.f.
AggregateContext) where one context can be contained in another.
3. Implementation of the runtime bootstrap. See the unit tests and
RuntimeContextImpl. The bootstrapping process should function in
Tomcat (I still need to complete that) as well as alternative
containers (e.g. Ecplise Equinoix, etc). It is also now possible to
bootstrap the runtime without external resources or side files for
easy unit testing.
4. Ability to dynamically register components/entrypoints/external
services when a context is running
5. Added the notion of a "system module component" (which can contain
other system module components) based on the russian doll metaphor.
It is now possible to assemble system modules, expose entry points
(e.g. a transaction manager) and have them used by end-user modules
through an external service configured with a system binding (based
on autowiring as described below)
6. Implemented system components, i.e. the ability to contribute
"special" components that live inside the system module or one of its
children and are exposed over a special binding (e.g. Transaction
Manager)
7. Implemented autowiring for system components. Basically, you
configure an external service with an required interface and the
runtime will resolve the dependency to an entry point exposed over
the system binding. Using this, we can have the runtime self-
configure. This is also useful for having things such as the
MonitorFactory, MessageFactory, etc. injected rather than passed around.
8. Refactored some of the non-critical builders to be system
components which themselves can be configured
9 Started a strawman for entry points and external services based on
the above system component work
10. Implementation of a recursive configuration and build process
where the logical model is walked by the hierarchy of aggregate
contexts. For example, a component is registered in a child context
and the hierarchy parents are called to evaluate/complete/build the
logical model. Hopefully this will allow us to do overrides fairly
easily. See the implementations of o.a.t.context.ConfigurationContext.
11. Added a POJO-based model for unit testing and programmatic
registration of model objects.
12. I began working on a way to plug in alternative Proxy factories
and allow third-party interceptor/handler additions.
There are some hacks I had to put in for the time being but they can
be ironed out when I get back.
Jim
On Jan 5, 2006, at 2:40 PM, Jean-Sebastien Delfino wrote:
Jim,
Looks like you've been pretty busy coding over the break, could you
please send a quick overview of the changes you made to bring
everybody up to speed?
Thanks...
--
Jean-Sebastien Delfino