Re: [RT:A5] What are the _real_ concern areas?

Paul Hammant <[email protected]>
Newsgroups gmane.comp.jakarta.avalon.apps.devel,gmane.comp.jakarta.avalon.devel
Message-ID <[email protected]>
Berin, 

> There are two major differences.  There is a new overall phase
> (Transition), 

Transition. Neat.  However, I'd like to see a another interface in that 
phase (not withstanding lifecyle extension), to think it was worth a 
name on its own.

> which means the component can claim or release any
> runtime resources that it will need for processing.  This brings clarity
> to the difference between Initializable/Disposable and Startable.
> The second difference is that the Re* interfaces are now handled by
> a ServiceListener class.  It will receive ServiceEvents if the container
> has new configuration information available for it, or a different
> set of services available.
>
> It is also important to note that Initializable/Disposable can only be
> called once (each), and Startable can be called any number of times.
> Startable.start() brings the component from Transition to Active Use,
> and Startable.stop() brings the component from Active Use to Transition.
> Once the component has been disposed, can never be brought back to
> life.

That is stated already I think (website)

> interface ServiceManager
> {
>      Configuration getConfiguration();
>      void writeConfiguration(Configuration config)
>              throws ServiceUnavailableException;
>
>      Object lookup( String urn ); // context and service combined
>
>      Session getSession();
> }
>
> interface Session
> {
>      Object get( Object key );
>      void put( Object key, Object value );
> }
>
> Any thoughts or inputs?

I don't like, sorry.

When I look at a class and peer at its 'implements' declaration I learn 
a lot.  If I see Startable I guess it probably has daemon functionality 
or some sort.  When I see Contextualizable I reckon it has some 
configuration somewhere.  Declared lifecycle methods tell me a lot.

Just because we can 'simplify' interfaces to a smaller set, does not 
mean we should.  

Having said that you raise the issue of updating configuration again. 
 Leo Sutic did a great definition of our stance on Context, that he 
might want to step up to a similar role for this?

Also, Session as you have it here has clashing method namespace with 
Map.  Not good.  I'd prefer Sessionable passing in a Session (which has 
getters and setters).  <duck>I'd also like to allow bespoke containers 
have castable Session interface.</duck>

Lasty, Can we wind down for seasonal festivities please?  No votes for 
the next 10 days?

Regards,

- Paul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.