Jean-Sebastien Delfino wrote:
Jim Marino wrote:
Over the next several days, we are going to begin the cut-over to the
new bootstrap and proxy mechanism. I realize the documentation has
been lacking and it is difficult for people to get up to speed on the
changes. I hope to correct this as soon as possible. In the
meantime, a few pointers may help:
1. There are some slightly-out-of-date documents in my sandbox that
may provide an initial start. Jeremy has made a bunch of improvements
to the bootstrap and I have not had a chance to incorporate his changes.
2. There are unit tests in core under o.a.t.c.runtime and
oa.t.c.system that show how to bootstrap a basic container.
3. The proxy building mechanism is still being heavily refactored. I
have a bunch of unit tests to in o.a.t.c.invocation, o.a.t.c.builder,
and o.a.t.container.java.builder and o.a.t.container.java.integration
(the latter shows how proxy and wire builders will be integrated with
aggregate contexts). Some of the bigger changes were separation of
source and target side invocation chains, the introduction of wire
builders that are responsible for bridging those sides, and the
movement of TargetInvoker from the tail of the target interceptor
chain to being cached on the source side and sent with the message
for invocation. The last change allows for optimizations such as
being able to cache instance when a source's scope is "shorter" than
the target's scope (e.g. session-->module).
During the cut-over, we will likely break the samples but not the build.
While doing the cut-over, we'd also like to begin work on the binding
design. Sebastien had a bunch of good points/ideas here so I will let
him elaborate. Basically, we'd like to do the binding work and
cut-over in parallel.
Once we have these changes in place and the binding work under way,
it will hopefully be easier for us to make progress on the roadmap
Sebastien outlined on the wiki as well as make it easier for people
to contribute more actively.
Jim
Yes, a few more points:
- We're doing this because we'd like to get a stable runtime, be able
to run a number of significant scenarios, and crisp up our story for
plugging in bindings and component containers... by end of next week.
The goal here is to quickly get to a state where it's easier for more
contributors to get on board the project and use, extend or integrate
Tuscany. Our runtime is still using a patchwork of old code and the
new system/core code from Jim+Jeremy and we need to complete the
cut-over to this new code. I'm also making changes to the assembly
model with a cut-over to a POJO model. In the next several days we are
going to bring-up these various pieces to get to the stable state
where we want to be. We may break a few things during that short
period of time and won't be able to guarantee that all the samples
always work while we are in the middle of that integration.
We should still follow our commitment to not break the build, right?
This includes successful completion of test cases run as part of the build.
- People who don't want to be broken by these internal changes because
they're working on the samples or the acceptance test suite should
stay on the current SVN revision for a few days, until we complete our
bringup.
- Ant, I think you've started to look into how you plug in the AXIS2
binding into the runtime. The changes in the bootstrap of the runtime
and the proxy building mechanism should not really affect you (well
maybe the proxy + invocation chain building mechanism will change a
little but that's not going to be big revolution). The good news for
you is that this is now going to look very similar to how you
plugged-in your JavaScript container (so no big surprise). Also Jim is
going to provide you with base implementation classes of
EntryPointContext and ExternalServiceContext that will do what you
need (very similar to SimpleComponentContext), by Monday - looks like
some of us are going to be busy over the weekend :). We think that
this will help you get on board the new set of interfaces, you'll have
base classes that you can use as such or as a sample/guide for your
binding implementation.
--
Jean-Sebastien