> From: Stephen McConnell [mailto:[EMAIL PROTECTED]]
>
> Here is consolidation of the interfaces based on a logical extrapolation
> of the conclusions reached under this thread:
>
> interface Serviceable
> {
> public void service( ServiceManager manager ) throws
> ServiceException;
> }
>
> interface ServiceManager
> {
> Object lookup( String role );
> boolean hasService( String role );
> }
>
> interface ServiceSelector
> {
> Object select( Object policy );
> boolean isSelectable( Object policy );
> }
>
> interface ServiceResolver extends ServiceManager
> {
> Object lookup( String role, Object token );
> void release( Object object );
> void releaseAll( Object token );
> }
>
> interface PooledSelector extends ServiceSelector
> {
> Object select( Object token, Object policy );
> }
>
> Over to you.
Got the correction:
interface Resolvable {
public void resolve( ServiceResolver resolver ) throws
ExceptionThrownWhenLookupFails;
}
Where does the policy object in PooledSelector come from when a lookup is
done through a ServiceResolver? Isn't it necessary to have:
interface ServiceResolver extends ServiceManager
{
Object lookup( String role );
Object lookup( Object token, String role );
Object lookup( String role, Object policy );
Object lookup( Object token, String role, Object policy );
void release( Object object );
void releaseAll( Object token );
}
where the policy object is passed along to the selector if present?
Before I go and vote for this one, I would also like to hear more
about Peter's release-less version. If that one works, we could have:
interface ServiceResolver extends ServiceManager
{
Object lookup( String role, Object policy );
}
which is much cleaner. But it requires some other changes to the way we
write
components. See:
http://marc.theaimsgroup.com/?l=avalon-dev&m=101392754607827&w=2
and my response:
http://marc.theaimsgroup.com/?l=avalon-dev&m=101395308809276&w=2
/LS
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>