Hi,
I checked some changes in to support system services scoped to a
composite hierarchy in the Java SCA runtime. This will allow us to
add support for things such as type systems specific to an
application and programming model extensions such as OpenJPA and
Hibernate.
As part of this, the SystemCompositeComponent and AutowireComponent
specializations have been removed, leaving CompositeComponentImpl as
the composite implementation that forms both the application and
system runtime trees. Previously, each composite contained one set of
children. This has been changed so that each composite will contain a
collection of application and system children in separate namespaces.
Each composite on the "application" side of the runtime composite
hierarchy may contain both application and system children. For
example, normal user-provided application artifacts and system
services such as a type registry or EJB3 entity manager factory.
Composites on the "system" side of the runtime will only contain
system artifacts as children and will not have any application
children (the collections will be empty).
The application and system sides of the CompositeComponentImpl are
distinct. Fro example, autowiring on the system side will traverse up
the system side of the runtime hierarchy while application components
may not autowire to system targets. Since system and application
children are kept separate to avoid collisions, additional APIs have
been added to CompositeComponent for navigating the hierarchy (e.g.
getSystemChild).
Also, in line with these changes, I removed AutowireComponent and
moved the methods up to CompositeComponent. In addition to removing
casts, this will allow us to add support for autowiring application
components, which will hopefully be included in the SCA specs soon.
Finally, I moved SystemAtomicComponent to SPI so that people can
create custom system extensions. This will allow us to add support
for OpenJPA and Hibernate where an EntityManagerFactory and
SessionFactory respectively are managed by a custom system atomic
component contained in an application composite. An injector can be
used to access that system component and inject a JPA EntityManager
or Hibernate Session onto a component instance. Similarly, a type
system helper could be stored in a system component for use by an
application.
Jim
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]