Search in sources :

Example 1 with Converter

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();
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) GenericConverter(cn.taketoday.core.conversion.GenericConverter) TypeDescriptor(cn.taketoday.core.TypeDescriptor) ConversionService(cn.taketoday.core.conversion.ConversionService) Converter(cn.taketoday.core.conversion.Converter) GenericConverter(cn.taketoday.core.conversion.GenericConverter) Nullable(cn.taketoday.lang.Nullable) HashSet(java.util.HashSet) Test(org.junit.jupiter.api.Test)

Example 2 with Converter

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();
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) GenericConverter(cn.taketoday.core.conversion.GenericConverter) TypeDescriptor(cn.taketoday.core.TypeDescriptor) ConversionService(cn.taketoday.core.conversion.ConversionService) Converter(cn.taketoday.core.conversion.Converter) GenericConverter(cn.taketoday.core.conversion.GenericConverter) Nullable(cn.taketoday.lang.Nullable) HashSet(java.util.HashSet) Test(org.junit.jupiter.api.Test)

Example 3 with Converter

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);
}
Also used : TypeDescriptor(cn.taketoday.core.TypeDescriptor) ConversionService(cn.taketoday.core.conversion.ConversionService) Converter(cn.taketoday.core.conversion.Converter)

Example 4 with Converter

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);
}
Also used : TypeDescriptor(cn.taketoday.core.TypeDescriptor) ConversionService(cn.taketoday.core.conversion.ConversionService) Converter(cn.taketoday.core.conversion.Converter)

Aggregations

TypeDescriptor (cn.taketoday.core.TypeDescriptor)4 ConversionService (cn.taketoday.core.conversion.ConversionService)4 Converter (cn.taketoday.core.conversion.Converter)4 GenericConverter (cn.taketoday.core.conversion.GenericConverter)2 Nullable (cn.taketoday.lang.Nullable)2 HashSet (java.util.HashSet)2 Set (java.util.Set)2 Test (org.junit.jupiter.api.Test)2