From c797e4fed45ad83e24b92bcc1986a8471e8af4a2 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Tue, 12 Feb 2019 15:30:52 +0100 Subject: [PATCH] Minor refactoring in ContextFunctionRegistry --- ...ntextFunctionCatalogAutoConfiguration.java | 43 ++++++------------- .../function/core/FluxToMonoFunction.java | 8 ++-- 2 files changed, 17 insertions(+), 34 deletions(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java index e4b7fbf3b..dab625ac1 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java @@ -36,15 +36,13 @@ import javax.annotation.PreDestroy; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.SmartInitializingSingleton; +import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; @@ -172,9 +170,7 @@ public class ContextFunctionCatalogAutoConfiguration { @Component protected static class ContextFunctionRegistry - implements SmartInitializingSingleton, BeanFactoryAware { - - private Log logger = LogFactory.getLog(ContextFunctionRegistry.class); + implements InitializingBean, BeanFactoryAware { private ApplicationEventPublisher applicationEventPublisher; @@ -196,7 +192,7 @@ public class ContextFunctionCatalogAutoConfiguration { */ @Override @SuppressWarnings("rawtypes") - public void afterSingletonsInstantiated() { + public void afterPropertiesSet() throws Exception { Map supplierBeans = beanFactory .getBeansOfType(Supplier.class); Map functionBeans = beanFactory @@ -281,10 +277,6 @@ public class ContextFunctionCatalogAutoConfiguration { && typeOfFunction.isAssignableFrom(function.getClass())) { return function; } - else { - logger.warn("The resulting composition is of type " - + types.get(normalizeName(name))); - } return null; } @@ -319,7 +311,15 @@ public class ContextFunctionCatalogAutoConfiguration { .get(stages[stages.length - 1]); this.types.put(name, FunctionType.compose(input, output)); this.names.put(composedFunction, name); - lookup.put(name, composedFunction); + if (composedFunction instanceof Function) { + this.functions.put(name, composedFunction); + } + else if (composedFunction instanceof Consumer) { + this.consumers.put(name, composedFunction); + } + else if (composedFunction instanceof Supplier) { + this.suppliers.put(name, composedFunction); + } } } } @@ -536,7 +536,7 @@ public class ContextFunctionCatalogAutoConfiguration { registrations.add(target); } }); - // Wrap the functions so they handle reactive inputs and outputs + registrations.forEach(registration -> wrap(registration, targets.get(registration.getTarget()))); } @@ -561,23 +561,6 @@ public class ContextFunctionCatalogAutoConfiguration { } - // protected class BeanFactoryFunctionInspector implements FunctionInspector { - // - // private ContextFunctionRegistry processor; - // - // public BeanFactoryFunctionInspector(ContextFunctionRegistry processor) { - // this.processor = processor; - // } - // - // @Override - // public FunctionRegistration getRegistration(Object function) { - // FunctionRegistration registration = this.processor - // .getRegistration(function); - // return registration; - // } - // - // } - @Configuration @ConditionalOnClass(Gson.class) @ConditionalOnBean(Gson.class) diff --git a/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/core/FluxToMonoFunction.java b/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/core/FluxToMonoFunction.java index ed02e923f..4c93fbb63 100644 --- a/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/core/FluxToMonoFunction.java +++ b/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/core/FluxToMonoFunction.java @@ -24,10 +24,10 @@ import reactor.core.publisher.Mono; /** * Wrapper to mark function {@code Function, Mono>}. * - * While it may look similar to {@link FluxedConsumer} - * the fundamental difference is that this class represents a function that - * returns {@link Mono} of type {@code }, while {@link FluxedConsumer} is - * a consumer that has been decorated as {@code Function, Mono>}. + * While it may look similar to {@link FluxedConsumer} the fundamental difference is that + * this class represents a function that returns {@link Mono} of type {@code }, while + * {@link FluxedConsumer} is a consumer that has been decorated as + * {@code Function, Mono>}. * * @param type of {@link Flux} input of the target function * @param type of {@link Mono} output of the target function