On Fri, Jul 25, 2003 at 11:09:46AM -0400, Berin Loritsch wrote:>
Currently I have a component requires a URI location to work, it has
4 or so methods in it's interface, each of them need the remote URI location
for the methods to work. At the moment I specify the URI location as a parameter to each method, something like:
interface Component {
void doOp1(URI uri); void doOp2(URI uri); void doOp3(URI uri); void dpOp4(URI uri); }
Ideally I'd like to be able to specify the URI once, and then be able to call the methods, outside of Avalon you'd do something like:
Component c = new Component("http://host/location/"); c.doOp1(); .... c.doOp2();
as a constructor parameter.
think of seperating various types of constructor arguments for your comp into the comp configuration, the comp dependencies, etc etc. The URI is logically part of the client component configuration, right? Jason van Zyl did this in plexus with the Configurator pattern:
interface ServiceBroker extends ServiceManager
{
Object lookup( String role, Configuration configuration );
}the easy way out is to not make everything into an avalon component, but have an avalon component provide you with the worker class:
interface MyComponentManager
{
String ROLE = MyComponentManager.class.getName();
Component newInstance( String URI );
}mcm = (MyComponentManager)m_sm.lookup( MyComponentManager.ROLE );
component = mcm.newInstance( m_configuration
.getchild( "component-uri" ).getValue() );the clean way out is probably to use a lifecycle extension to decorate your component with transaction support and make the client component configuration part of the transaction state.
cheers!
- Leo
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
