use of cn.taketoday.core.conversion.Converter in project today-infrastructure by TAKETODAY.
the class ConversionServiceFactoryBeanTests method createDefaultConversionServiceWithSupplements.
@Test
public void createDefaultConversionServiceWithSupplements() {
ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
Set<Object> converters = new HashSet<>();
converters.add(new Converter<String, Foo>() {
@Override
public Foo convert(String source) {
return new Foo();
}
});
converters.add(new ConverterFactory<String, Bar>() {
@Override
public <T extends Bar> Converter<String, T> getConverter(Class<T> targetType) {
return new Converter<>() {
@SuppressWarnings("unchecked")
@Override
public T convert(String source) {
return (T) new Bar();
}
};
}
});
converters.add(new GenericConverter() {
@Override
public Set<ConvertiblePair> getConvertibleTypes() {
return Collections.singleton(new ConvertiblePair(String.class, Baz.class));
}
@Override
@Nullable
public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
return new Baz();
}
});
factory.setConverters(converters);
factory.afterPropertiesSet();
ConversionService service = factory.getObject();
assertThat(service.canConvert(String.class, Integer.class)).isTrue();
assertThat(service.canConvert(String.class, Foo.class)).isTrue();
assertThat(service.canConvert(String.class, Bar.class)).isTrue();
assertThat(service.canConvert(String.class, Baz.class)).isTrue();
}
use of cn.taketoday.core.conversion.Converter in project today-framework by TAKETODAY.
the class ConversionServiceFactoryBeanTests method createDefaultConversionServiceWithSupplements.
@Test
public void createDefaultConversionServiceWithSupplements() {
ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
Set<Object> converters = new HashSet<>();
converters.add(new Converter<String, Foo>() {
@Override
public Foo convert(String source) {
return new Foo();
}
});
converters.add(new ConverterFactory<String, Bar>() {
@Override
public <T extends Bar> Converter<String, T> getConverter(Class<T> targetType) {
return new Converter<>() {
@SuppressWarnings("unchecked")
@Override
public T convert(String source) {
return (T) new Bar();
}
};
}
});
converters.add(new GenericConverter() {
@Override
public Set<ConvertiblePair> getConvertibleTypes() {
return Collections.singleton(new ConvertiblePair(String.class, Baz.class));
}
@Override
@Nullable
public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
return new Baz();
}
});
factory.setConverters(converters);
factory.afterPropertiesSet();
ConversionService service = factory.getObject();
assertThat(service.canConvert(String.class, Integer.class)).isTrue();
assertThat(service.canConvert(String.class, Foo.class)).isTrue();
assertThat(service.canConvert(String.class, Bar.class)).isTrue();
assertThat(service.canConvert(String.class, Baz.class)).isTrue();
}
use of cn.taketoday.core.conversion.Converter in project today-framework by TAKETODAY.
the class MessageEndpointParameterResolver method resolve.
@Override
public Object resolve(WebSocketSession session, cn.taketoday.web.socket.Message<?> message, ResolvableMethodParameter parameter) {
Object payload = message.getPayload();
if (supportParameterType.isInstance(payload)) {
return payload;
}
Converter converter = getConverter();
if (converter != null) {
return converter.convert(payload);
}
ConversionService conversionService = getConversionService();
Assert.state(conversionService != null, "No ConversionService");
TypeDescriptor targetType = parameter.getTypeDescriptor();
return conversionService.convert(payload, targetType);
}
use of cn.taketoday.core.conversion.Converter in project today-infrastructure by TAKETODAY.
the class MessageEndpointParameterResolver method resolve.
@Override
public Object resolve(WebSocketSession session, cn.taketoday.web.socket.Message<?> message, ResolvableMethodParameter parameter) {
Object payload = message.getPayload();
if (supportParameterType.isInstance(payload)) {
return payload;
}
Converter converter = getConverter();
if (converter != null) {
return converter.convert(payload);
}
ConversionService conversionService = getConversionService();
Assert.state(conversionService != null, "No ConversionService");
TypeDescriptor targetType = parameter.getTypeDescriptor();
return conversionService.convert(payload, targetType);
}
Aggregations