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,
Hadrian

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.
WDYT?
--
Łukasz Dywicki
l...@code-house.org
Twitter: ldywicki
Blog: http://dywicki.pl
Code-House - http://code-house.org

Reply via email to