I've made a few changes today to simplify the lifecycle handling for
component instances. Previously, responsibility for this was shared
between the AtomicComponent implementation, the ScopeContainer
implementation and the TargetInvoker implementation. I have change
this to essentially remove the Component implementation from the loop
so that the majority of the lifecycle is controlled purely by the
ScopeContainer with a simple notification from the TargetInvoker that
an invocation has completed (needed for STATELESS scoped components).
This has meant one change to the semantic of the conversational store
in that it is now responsible for persisting InstanceWrapper's rather
than pure instances.
It has also led to simplification of the AtomicComponent SPI with the
removal of the init and destroy callbacks. We should also be able to
remove the get*Instance methods and the flags for "optimizable" and
"destroyable"
Once this is done then the Component will basically just be
responsible for instance creation (via the InstanceFactory), creating
a TargetInvoker (again probably via the InstanceFactory), and
supporting ComponentContext. This should be generic to most component
implementation types and so should mean that container extensions
will not need to provide their own Component implementation.
--
Jeremy
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]