hivemind-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Carman" <ja...@carmanconsulting.com>
Subject RE: Multiple implementations for service
Date Thu, 28 Apr 2005 15:09:08 GMT
Johan,

I imagined that the return values would be serviceIds.  So, the method name
would be better as...

public List getServiceIds( Class serviceInterface );

That would be quite trivial to do.

James

-----Original Message-----
From: Johan Lindquist [mailto:johan@kawoo.co.uk] 
Sent: Thursday, April 28, 2005 11:08 AM
To: hivemind-user@jakarta.apache.org
Subject: Re: Multiple implementations for service


If you got a list of interfaces, which instance would you use in that  
case?  The criteria for the service that you are interested need to be  
specified somehow (as james mentions)

You can solve this to an extent by defining a configuration point that  
collects all service instances and allow you to write a factory that  
provides the implementations that you need:

FooFactory fooFactory = registry.getService(FooFactory.class);
Foo foo = (Foo)fooFactory.getFoo(<some-criteria>)

Johan

On 28 Apr 2005 17:51:31 +0300, Igor Laberov <igorl@qlusters.com> wrote:

> Now I see your point, it much more clear now :)
>
> The only issue that is still opened  - ability to get list of services 
> that implement the same interface, something like that:
>     public List getServices(Class interfaceClass){
>         List l = (List) _servicePointsByInterface.get(interfaceClass);
>         return l;
>     }
>
> Is it possible to add getServices(Class) to Registry interface?
>
> On Thu, 2005-04-28 at 17:19, James Carman wrote:
>> So, you want to allow the users to choose which implementation type 
>> they want, right?  Then, define two different service points with the 
>> same interface, but give them different ids (of course) corresponding 
>> to the different implementations.  Another approach would involve writing
your
>> own
>> service model which chooses which implementation type to instantiate  
>> using
>> some sort of thread-local parameter (which you'd have to set prior to
>> invoking of course).
>>
>> -----Original Message-----
>> From: Igor Laberov [mailto:igorl@qlusters.com]
>> Sent: Thursday, April 28, 2005 10:11 AM
>> To: hivemind-user@jakarta.apache.org
>> Subject: Re: Multiple implementations for service
>>
>>
>> These 2 options don't allow to have more than one service
>> implementation in
>> the same time. Current Registry interface doesn't allow this, because it
>> have only
>> getService() that returns single implementation only.
>>
>> Is it possible to override Registry service?
>>
>> Thanks,
>> Igor
>>
>> On Wed, 2005-04-27 at 14:35, Johan Lindquist wrote:
>> > Two options - have two service points (same service interface is 
>> > allowed, just name the service point will be have to differ) or use 
>> > the
>> override
>> > functionality
>> (http://jakarta.apache.org/hivemind/current/override.html)
>> >
>> > Cheers,
>> >
>> > Johan
>> >
>> > On 27 Apr 2005 14:33:46 +0300, Igor Laberov <igorl@qlusters.com>
>> > wrote:
>> >
>> > > Hi again,
>> > > In our application we want to have multiple implementation 
>> > > classes for one service. So .xml file will look like 
>> > > <service-point id="Part" />  <implementation service-id="Part">
>> > >    <create-instance class="one.PartImpl"/> </implementation>
>> > > <implementation service-id="Part">
>> > >    <create-instance class="two.PartImpl"/>
>> > > </implementation>
>> > >
>> > > At startup user will choose implementation that he want to work 
>> > > with (and its id will be stored), and later user operations will 
>> > > be associated with selected implementation.
>> > >
>> > > As I see from RegistryBuilder code, it is not allowed to have 2 
>> > > implementation. Can you point me to other way having several 
>> > > service implementation? Or may be I can override some system 
>> > > service?
>> > >
>> > > Thank you,
>> > > Igor Laberov
>> > > Qlusters, Inc.
>> > >
>> > >
>> > >
>> > > -----------------------------------------------------------------
>> > > ---
>> > > -
>> > > To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>> > > For additional commands, e-mail:  
>> hivemind-user-help@jakarta.apache.org
>> > >
>> > >
>> >
>> >
>> >
>> > --
>> > you too?
>> >
>> > -------------------------------------------------------------------
>> > --
>> > To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>> > For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>> >
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: 
>> hivemind-user-help@jakarta.apache.org
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: 
>> hivemind-user-help@jakarta.apache.org
>>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>
>



-- 
you too?

---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org


Mime
View raw message