camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hadrian Zbarcea <>
Subject Re: [DISCUSS] Refactoring of Registry/Injector interface
Date Wed, 21 Nov 2012 01:25:47 GMT
Sounds good to me, not sure in what release it would make sense to make 
this change. One comment, there is no reason for lookupByNameAndType to 
not be called simply lookupByName (name override). The 
findByTypeWithName method name is a bit ugly too, imho.

I'll think about it some more,

On 11/20/2012 12:16 PM, Łukasz Dywicki wrote:
> Dear all,
> During my work on camel-cdi component and cdi itself I realized that beans don't have
to be named. They have qualifiers, which are more generic approach. To put some name on bean
user must use @Named qualifier.
> This model doesn't fit very well to current camel registry SPI. For example if component
developer is interested in returning all instances of given type he must name them. Next thing
is Injector stuff, which allows usage of type to create instance. It's overlaps in some places
same logic as most popular integration we have (Spring) uses ApplicationContext in both.
> I know that logically Registry and Injector are different ideas, however in 99.9% people
use same Registry and Injector provider. Why we support that then?
> The proposal I bring here is following:
> interface Registry {
>      // named lookups
>      lookupByName(String name) : Object
>      lookupByNameAndType(String name, Class<T> type) : T
>      // typed lookups
>      lookupByType(Class<T> type) : T
>      lookupByType(Class<T> type, boolean createIfNotFound) : T
>      // find calls
>      findByTypeWithName(Class<T> type) : Map<String, T>
>      findByType(Class<T> type) : Set<T>
> }
> I reviewed usage of current lookupByType which returns map and in most places key from
returned map is not used at all.
> --
> Łukasz Dywicki
> Twitter: ldywicki
> Blog:
> Code-House -

View raw message