Hi,

I'm using the last version available on maven central repo which is 1.1.7.

Xavier

________________________________
> From: [email protected] 
> Date: Fri, 15 Mar 2013 15:29:00 +0100 
> Subject: Re: CDI and ParameterizedTypes 
> To: [email protected] 
> 
> Hi, 
> 
> if i didn't miss it you didn't mention your version 
> 
> think it should work with 1.1.8 
> 
> https://github.com/rmannibucau/cdi-converters was used to work and was 
> using something 
> close 
> https://github.com/rmannibucau/cdi-converters/blob/master/src/test/java/com/github/rmannibucau/converter/ConverterTest.java
>  
> 
> Romain Manni-Bucau 
> Twitter: @rmannibucau<https://twitter.com/rmannibucau> 
> Blog: http://rmannibucau.wordpress.com/ 
> LinkedIn: http://fr.linkedin.com/in/rmannibucau 
> Github: https://github.com/rmannibucau 
> 
> 
> 
> 2013/3/15 Xavier Dury <[email protected]<mailto:[email protected]>> 
> Hi, 
> 
> I'm trying to implement a simple type conversion framework in CDI. 
> Typically, you can either implement the TypeConverter interface or 
> annotate some methods in your beans: 
> 
> public interface TypeConverter<S, T> { 
> 
> T convert(S source); 
> } 
> 
> public class StringToIntegerTypeConverter implements 
> TypeConverter<String, Integer> { ... } 
> 
> public class StringToLongTypeConverter implements TypeConverter<String, 
> Long> { ... } 
> 
> public MyConverters { 
> 
> @Converts public Integer stringToInteger(String value) { ... } 
> @Converts public Long stringToLong(String value) { ... } 
> } 
> 
> A specific Extension "bridges" the annotated methods to a full 
> TypeConverter (a custom Bean<?> is registered with an API types of 
> ParameterizedTypeImpl(rawType = TypeConverter.class, ownerType = null, 
> actualTypeArguments = [method.getGenericParameterType[0], 
> method.getGenericReturnType])). 
> 
> Then a TypeConversionService is responsible to find the adequate 
> Converter through the BeanManager and call it with the provided object 
> to be converted. 
> 
> public class TypeConversionService { 
> 
> public <T> T convert(Class<T> targetType, Object source) { ... } 
> public <T> T convert(TypeLiteral<T> targetTypeLiteral, Object source) { ... } 
> } 
> 
> My problem is the following: as soon as 2 or more TypeConverters are 
> present in the module (let's say StringToIntegerTypeConverter and 
> StringToLongTypeConverter), an ambiguous dependency exception is 
> thrown. 
> 
> For example: 
> 
> public class MyBean { 
> 
> @Inject TypeConverter<String, Integer> stringToIntegerTypeConverter; 
> @Inject TypeConverter<String, Long> stringToLongTypeConverter; 
> 
> // won't work 
> } 
> 
> If I delete one of the TypeConverter classes (StringToLongTypeConverter 
> for example), the remaining TypeConverter 
> (StringToIntegerTypeConverter) is injected at the 2 injection points 
> (stringToIntegerTypeConverter=ok and stringToLongTypeConverter=!ok). 
> 
> Is it possible with CDI to have such a scenario without using 
> additional qualifiers to qualify each converter and only rely on the 
> (parameterized) type information to tell them apart? 
> 
> I've seen some discussions on StackOverflow saying the TypeConverter 
> should belong to the Dependent scope but it didn't work for me. 
> 
> Thanks, 
> 
> Xavier 
>                                         

Reply via email to