You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Thiago H. de Paula Figueiredo (JIRA)" <ji...@apache.org> on 2013/10/08 03:38:43 UTC

[jira] [Resolved] (TAP5-1951) Allow multiple different service interface implementations to be registered using identical service identifier strings

     [ https://issues.apache.org/jira/browse/TAP5-1951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thiago H. de Paula Figueiredo resolved TAP5-1951.
-------------------------------------------------

    Resolution: Won't Fix

The feature suggested here can be better implemented with marker annotations instead of using service id for selecting one implementation from many of the same service interface.

> Allow multiple different service interface implementations to be registered using identical service identifier strings
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: TAP5-1951
>                 URL: https://issues.apache.org/jira/browse/TAP5-1951
>             Project: Tapestry 5
>          Issue Type: Improvement
>          Components: tapestry-ioc
>    Affects Versions: 5.3.3
>            Reporter: Carsten Klein
>            Priority: Minor
>
> As of now, tapestry-ioc maintains a global namespace for all of the registered service ids.
> This makes it impossible to bind different service interfaces and their implementations 
> thereof using the same service identifiers, e.g.
> binder.bind(IFirstService.class, FirstServiceDefaultImpl.class).withId("default");
> binder.bind(ISecondService.class, SecondServiceDefaultImpl.class).withId("default);
> This will result in an exception on container and application startup.
> I think that, having played around with Plexus for a while, it would be nice to allow duplicate 
> service ids for different service interfaces, as it makes documentation and using one's APIs 
> a lot easier, when one can refer to "default" instead of for example "secondservice.default" 
> and so on.
> As for the performance impact, one could always use the fully qualified name of the service 
> interface class and append to it the service identifier. This is very similar to the user 
> disambiguating the service identifiers by herself, except that tapestry-ioc would use the 
> namespaces provided by the application instead, e.g.
> when doing 
> binder.bind(...).withId("default);
> the service binder would then
> this.registry.registerServiceById(serviceInterfaceClass.getName() + "." + serviceId, serviceInterfaceClass, implClass); 
> or something like that.



--
This message was sent by Atlassian JIRA
(v6.1#6144)