Details
-
New Feature
-
Status: Open
-
Major
-
Resolution: Unresolved
-
4.1
-
None
-
None
Description
Start Facilitating creation of Blocks through a Factory. Each component can optionally define a factory through which it is loaded. This will allow components to be created from arbitary locations.
For example, it would be valid for the component to be specified using a rmi, corba, soap or other url. ie Something like
rmi://localhost/MyRemoteComponent
The factory would take this implementationKey and construct a component that obeys the avalon lifecycle contract and for all intents and purposes can be treated like a normal Avalon component.
These Factorys must be able to create the blocks themselves and the
BlockBundle. The BlockBundle includes the BlockInfo object aswell as any associated descriptors (MXInfo files, schemas etc).
The factory will look something like
interface BlockFactory
{
Object createBlock( String implementationKey ) throws Exception;
BlockBundle createBlockBundle( String implementationKey ) throws Exception;
}
interface BlockBundle
{
BlockInfo getBlockInfo();
InputStream getResourceAsStream(String);
}
The BlockFactory will pass through all Avalon lifecycle stages except Composable/Serviceable.
The initial implementions will allow at least RMI, AltRMI and Soap (via glue or axis?) objects to be dynamically assembled.
Attachments
Issue Links
- depends upon
-
PNIX-15 Interceptor Architecture
- Open