@Override public void register(ConversionService<?> conversionService) { conversionService.addConverter(URI.class, LoadBalancer.class, (TypeConverter<URI, LoadBalancer>) (object, targetType, context) -> { try { return Optional.of(LoadBalancer.fixed(object.toURL())); } catch (MalformedURLException e) { context.reject(e); return Optional.empty(); } }); conversionService.addConverter(URL.class, LoadBalancer.class, (Function<URL, LoadBalancer>) LoadBalancer::fixed); conversionService.addConverter(String.class, LoadBalancer.class, (Function<String, LoadBalancer>) url -> { try { return LoadBalancer.fixed(new URL(url)); } catch (MalformedURLException e) { return null; } }); } }
/** * Registers a default converter. * * @param conversionService The conversion service */ protected void registerDefaultConverters(ConversionService<?> conversionService) { conversionService.addConverter( CharSequence.class, MediaType.class, (object, targetType, context) -> { if (StringUtils.isEmpty(object)) { return Optional.empty(); } else { final String str = object.toString(); try { return Optional.of(new MediaType(str)); } catch (IllegalArgumentException e) { context.reject(e); return Optional.empty(); } } }); }
@Override public <S, T> Environment addConverter(Class<S> sourceType, Class<T> targetType, TypeConverter<S, T> typeConverter) { conversionService.addConverter(sourceType, targetType, typeConverter); return this; }
@Override public <S, T> Environment addConverter(Class<S> sourceType, Class<T> targetType, Function<S, T> typeConverter) { conversionService.addConverter(sourceType, targetType, typeConverter); return this; }
@Override public <S, T> Environment addConverter(Class<S> sourceType, Class<T> targetType, Function<S, T> typeConverter) { conversionService.addConverter(sourceType, targetType, typeConverter); return this; }
@Override public <S, T> Environment addConverter(Class<S> sourceType, Class<T> targetType, TypeConverter<S, T> typeConverter) { conversionService.addConverter(sourceType, targetType, typeConverter); return this; }
conversionService.addConverter(Maybe.class, Publisher.class, (Function<Maybe, Publisher>) Maybe::toFlowable); conversionService.addConverter(Maybe.class, Single.class, (Function<Maybe, Single>) Maybe::toSingle); conversionService.addConverter(Maybe.class, Observable.class, (Function<Maybe, Observable>) Maybe::toObservable); conversionService.addConverter(Object.class, Maybe.class, (Function<Object, Maybe>) Maybe::just); conversionService.addConverter(Observable.class, Publisher.class, (Function<Observable, Publisher>) observable -> observable.toFlowable(BackpressureStrategy.BUFFER)); conversionService.addConverter(Observable.class, Single.class, (Function<Observable, Single>) Observable::firstOrError); conversionService.addConverter(Observable.class, Maybe.class, (Function<Observable, Maybe>) Observable::firstElement); conversionService.addConverter(Object.class, Observable.class, (Function<Object, Observable>) o -> { if (o instanceof Iterable) { return Observable.fromIterable((Iterable) o); conversionService.addConverter(Single.class, Publisher.class, (Function<Single, Publisher>) Single::toFlowable); conversionService.addConverter(Single.class, Maybe.class, (Function<Single, Maybe>) Single::toMaybe); conversionService.addConverter(Single.class, Observable.class, (Function<Single, Observable>) Single::toObservable); conversionService.addConverter(Object.class, Single.class, (Function<Object, Single>) Single::just); conversionService.addConverter(Flowable.class, Single.class, (Function<Flowable, Single>) Flowable::firstOrError); conversionService.addConverter(Flowable.class, Maybe.class, (Function<Flowable, Maybe>) Flowable::firstElement); conversionService.addConverter(Flowable.class, Observable.class, (Function<Flowable, Observable>) Flowable::toObservable); conversionService.addConverter(Object.class, Flowable.class, (Function<Object, Flowable>) o -> { if (o instanceof Iterable) { return Flowable.fromIterable((Iterable) o); conversionService.addConverter( Publisher.class, Flowable.class, (Function<Publisher, Flowable>) publisher -> { conversionService.addConverter(Publisher.class, Single.class, (Function<Publisher, Single>) Single::fromPublisher);
@Override public void register(ConversionService<?> conversionService) { conversionService.addConverter(URI.class, LoadBalancer.class, (TypeConverter<URI, LoadBalancer>) (object, targetType, context) -> { try { return Optional.of(LoadBalancer.fixed(object.toURL())); } catch (MalformedURLException e) { context.reject(e); return Optional.empty(); } }); conversionService.addConverter(URL.class, LoadBalancer.class, (Function<URL, LoadBalancer>) LoadBalancer::fixed); conversionService.addConverter(String.class, LoadBalancer.class, (Function<String, LoadBalancer>) url -> { try { return LoadBalancer.fixed(new URL(url)); } catch (MalformedURLException e) { return null; } }); } }
@Override public void register(ConversionService<?> conversionService) { conversionService.addConverter(URI.class, LoadBalancer.class, (TypeConverter<URI, LoadBalancer>) (object, targetType, context) -> { try { return Optional.of(LoadBalancer.fixed(object.toURL())); } catch (MalformedURLException e) { context.reject(e); return Optional.empty(); } }); conversionService.addConverter(URL.class, LoadBalancer.class, (Function<URL, LoadBalancer>) LoadBalancer::fixed); conversionService.addConverter(String.class, LoadBalancer.class, (Function<String, LoadBalancer>) url -> { try { return LoadBalancer.fixed(new URL(url)); } catch (MalformedURLException e) { return null; } }); } }
conversionService.addConverter(Observable.class, Publisher.class, RxJavaInterop::toV2Flowable); conversionService.addConverter(Observable.class, io.reactivex.Single.class, observable -> RxJavaInterop.toV2Single(observable.toSingle())); conversionService.addConverter(Observable.class, io.reactivex.Maybe.class, observable -> RxJavaInterop.toV2Observable(observable).firstElement()); conversionService.addConverter(Observable.class, io.reactivex.Observable.class, RxJavaInterop::toV2Observable); conversionService.addConverter(Publisher.class, Observable.class, RxJavaInterop::toV1Observable); conversionService.addConverter(io.reactivex.Observable.class, Single.class, observable -> RxJavaInterop.toV1Observable(observable, BackpressureStrategy.BUFFER).toSingle() ); conversionService.addConverter(io.reactivex.Observable.class, Observable.class, observable -> RxJavaInterop.toV1Observable(observable, BackpressureStrategy.BUFFER) ); conversionService.addConverter(Single.class, Publisher.class, single -> RxJavaInterop.toV2Single(single).toFlowable() ); conversionService.addConverter(Single.class, io.reactivex.Single.class, RxJavaInterop::toV2Single); conversionService.addConverter(io.reactivex.Single.class, Single.class, RxJavaInterop::toV1Single); conversionService.addConverter(io.reactivex.Single.class, Observable.class, single -> RxJavaInterop.toV1Single(single).toObservable() ); conversionService.addConverter(Publisher.class, Single.class, publisher -> RxJavaInterop.toV1Observable(publisher).toSingle() ); conversionService.addConverter(io.reactivex.Maybe.class, Observable.class, single -> RxJavaInterop.toV1Observable(single.toObservable(), BackpressureStrategy.BUFFER) ); conversionService.addConverter(io.reactivex.Maybe.class, Single.class, RxJavaInterop::toV1Single);
/** * Registers a default converter. * * @param conversionService The conversion service */ protected void registerDefaultConverters(ConversionService<?> conversionService) { conversionService.addConverter( CharSequence.class, MediaType.class, (object, targetType, context) -> { if (StringUtils.isEmpty(object)) { return Optional.empty(); } else { final String str = object.toString(); try { return Optional.of(new MediaType(str)); } catch (IllegalArgumentException e) { context.reject(e); return Optional.empty(); } } }); }
/** * @param resourceLoader The resource loader * @param conversionService The conversion service * @param names The names */ @SuppressWarnings("MagicNumber") public DefaultEnvironment(ClassPathResourceLoader resourceLoader, ConversionService conversionService, String... names) { super(conversionService); Set<String> specifiedNames = new LinkedHashSet<>(3); specifiedNames.addAll(Arrays.asList(names)); if (!specifiedNames.contains(Environment.FUNCTION) && shouldDeduceEnvironments()) { EnvironmentsAndPackage environmentsAndPackage = getEnvironmentsAndPackage(); specifiedNames.addAll(environmentsAndPackage.enviroments); String aPackage = environmentsAndPackage.aPackage; if (aPackage != null) { packages.add(aPackage); } } this.classLoader = resourceLoader.getClassLoader(); this.names = specifiedNames; conversionService.addConverter( CharSequence.class, Class.class, new StringToClassConverter(classLoader) ); conversionService.addConverter( Object[].class, Class[].class, new StringArrayToClassArrayConverter(conversionService) ); this.resourceLoader = resourceLoader; this.annotationScanner = createAnnotationScanner(classLoader); }
LOG.info("Established active environments: {}", environments); conversionService.addConverter( CharSequence.class, Class.class, new StringToClassConverter(classLoader) ); conversionService.addConverter( Object[].class, Class[].class, new StringArrayToClassArrayConverter(conversionService) );
@Override public void register(ConversionService<?> conversionService) { conversionService.addConverter( CharSequence.class, Duration.class, conversionService.addConverter( CharSequence.class, LocalDateTime.class, conversionService.addConverter( TemporalAccessor.class, CharSequence.class, conversionService.addConverter( CharSequence.class, LocalDate.class, conversionService.addConverter( CharSequence.class, ZonedDateTime.class,
/** * @param beanContext The bean context */ protected void initializeTypeConverters(BeanContext beanContext) { Collection<BeanRegistration<TypeConverter>> typeConverters = beanContext.getBeanRegistrations(TypeConverter.class); for (BeanRegistration<TypeConverter> typeConverterRegistration : typeConverters) { TypeConverter typeConverter = typeConverterRegistration.getBean(); List<Argument<?>> typeArguments = typeConverterRegistration.getBeanDefinition().getTypeArguments(TypeConverter.class); if (typeArguments.size() == 2) { Class source = typeArguments.get(0).getType(); Class target = typeArguments.get(1).getType(); if (source != null && target != null) { if (!(source == Object.class && target == Object.class)) { getConversionService().addConverter(source, target, typeConverter); } } } } Collection<TypeConverterRegistrar> registrars = beanContext.getBeansOfType(TypeConverterRegistrar.class); for (TypeConverterRegistrar registrar : registrars) { registrar.register(conversionService); } }
/** * @param beanContext The bean context */ protected void initializeTypeConverters(BeanContext beanContext) { Collection<BeanRegistration<TypeConverter>> typeConverters = beanContext.getBeanRegistrations(TypeConverter.class); for (BeanRegistration<TypeConverter> typeConverterRegistration : typeConverters) { TypeConverter typeConverter = typeConverterRegistration.getBean(); List<Argument<?>> typeArguments = typeConverterRegistration.getBeanDefinition().getTypeArguments(TypeConverter.class); if (typeArguments.size() == 2) { Class source = typeArguments.get(0).getType(); Class target = typeArguments.get(1).getType(); if (source != null && target != null) { if (!(source == Object.class && target == Object.class)) { getConversionService().addConverter(source, target, typeConverter); } } } } Collection<TypeConverterRegistrar> registrars = beanContext.getBeansOfType(TypeConverterRegistrar.class); for (TypeConverterRegistrar registrar : registrars) { registrar.register(conversionService); } }