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]

Reply via email to