Jim Marino wrote:
On Feb 17, 2006, at 8:14 AM, Kevin Williams wrote:
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.
For the build, yes. However, for the tests It depends on what are
considered test cases. The unit tests and integration tests under
src/java/test of common,model, core, container.java, container.js,
tomcat, and binding.axis will all work. The acceptance tests and
samples may break. This should all be qualified that this will only
apply to the java container and not other projects. Unfortunately,
there is no way around this without doing a lot of work that will be
thrown away after the cut-over is complete. Sorry.
- 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
_______________________________________________________________________
Notice: This email message, together with any attachments, may contain
information of BEA Systems, Inc., its subsidiaries and affiliated
entities, that may be confidential, proprietary, copyrighted and/or
legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient,
and have received this message in error, please immediately return this
by email and then delete it.
As part of this "cut-over" work, I am checking in a number of
significant model changes. Here is a summary:
- ported the SCA runtime to our SDO2 implementation
- changed the logical assembly models to POJO models with no
dependencies on EMF and SDO, this includes the core assembly model as
well as the java component and web service binding models.
- generated SDO2 models from the SCDL XSD, this will be used to load
SCDL in an SDO2 object graph which we'll walk to populate the logical
assembly model; eventually we'll replace this by a first class StAX
based loader, but this approach gives us a cheap loading mechanism for now.
- similar changes to the message and endpoint reference models
- replaced the language-independent interface model that we were using
to represent service interfaces (InterfaceTypes... populated from WSDL
and Java) by... a native java.lang.Class, which is much simpler
- removed the org.osoa.sca.model interfaces, which were not really
usable anyway, we'll re-introduce a metadata API when the spec defines
what these interfaces should look like
- removed dead code in various places in core and container.java to
prepare for Jim's "cut-over" changes
- adjusted the POMs to use the EMF dependency JARs from the 02162006
integration build.
These changes are breaking changes. I adjusted the code in the core,
container.java and tomcat projects but binding.axis and container.js do
not compile yet. The AXIS 2 related work is carried in a separate
project in the sandbox at the moment so this shouldn't be a problem. I
need to check these changes now to allow Jim to merge-in his other
"cut-over" changes so I left some compile errors in some of the test
cases in core and container.java (which will not work anyway without
Jim's changes). To build these projects just do mvn -o
-Dmaven.test.skip=true. Jim, Jeremy, could you please take a look at
these test cases, most of them do not contain comments, some of them
take liberties with the semantics of the model (e.g. they use Pojo* mock
objects which implement the model in a different way with shortcuts,
sometimes they do not call the initialize() method on model objects
etc.) and I could use some help to understand what they do and port them
to the new model.
Next:
- Jim will merge his changes. We're doing a F2F hackathon tomorrow to
bring the runtime back up.
- I'll check-in the loaders/transformers used to transform the SDO2 SCDL
models to the logical assembly model tomorrow.
- I'll also add the SDO2 codegen maven plugin to the relevant POMs to
get the SCDL models generated as part of the build and will then remove
the SCDL model code from SVN - less code in SVN is always better :)
So again, if you need a stable build with no breaking changes, please
stay on the SVN revision that you are on. We'll probably continue in
this break/fix/bring-up mode for another day or two.
--
Jean-Sebastien