diff --git a/spring-cloud-function-context/pom.xml b/spring-cloud-function-context/pom.xml
index 57d49f6f0..30e726bce 100644
--- a/spring-cloud-function-context/pom.xml
+++ b/spring-cloud-function-context/pom.xml
@@ -13,6 +13,9 @@
spring-cloud-function-parent
2.0.0.BUILD-SNAPSHOT
+
+ 1.2.61
+
@@ -42,6 +45,12 @@
jackson-databind
true
+
+ org.jetbrains.kotlin
+ kotlin-stdlib-jdk8
+ ${kotlin.version}
+ true
+
org.springframework.boot
spring-boot-starter-test
@@ -53,4 +62,62 @@
test
+
+
+
+ kotlin-maven-plugin
+ org.jetbrains.kotlin
+ ${kotlin.version}
+
+
+ compile
+ compile
+
+
+ ${project.basedir}/src/main/kotlin
+ ${project.basedir}/src/main/java
+
+
+
+
+ test-compile
+ test-compile
+
+
+ ${project.basedir}/src/test/kotlin
+ ${project.basedir}/src/test/java
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+
+
+ default-compile
+ none
+
+
+
+ default-testCompile
+ none
+
+
+ java-compile
+ compile
+ compile
+
+
+ java-test-compile
+ test-compile
+ testCompile
+
+
+
+
+
diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/FunctionRegistration.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/FunctionRegistration.java
index 8fe933c05..f342498be 100644
--- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/FunctionRegistration.java
+++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/FunctionRegistration.java
@@ -51,7 +51,7 @@ public class FunctionRegistration {
private FunctionType type;
/**
- * @deprecated as of v1.0.0 in favor of {@link #FunctionRegistration(Object, String, String...)}
+ * @deprecated as of v1.0.0 in favor of {@link #FunctionRegistration(Object, String...)}
*/
@Deprecated
public FunctionRegistration(T target) {
@@ -64,7 +64,6 @@ public class FunctionRegistration {
* Creates instance of FunctionRegistration.
*
* @param target instance of {@link Supplier}, {@link Function} or {@link Consumer}
- * @param name initial name for this registration.
* @param names additional set of names for this registration. Additional names
* can be provided {@link #name(String)} or {@link #names(String...)} operations.
*/
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 90df6b145..fce90d17e 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
@@ -98,592 +98,463 @@ import org.springframework.util.StringUtils;
@ConditionalOnMissingBean(FunctionCatalog.class)
public class ContextFunctionCatalogAutoConfiguration {
- static final String PREFERRED_MAPPER_PROPERTY = "spring.http.converters.preferred-json-mapper";
+ static final String PREFERRED_MAPPER_PROPERTY = "spring.http.converters.preferred-json-mapper";
- @Autowired(required = false)
- private Map> suppliers = Collections.emptyMap();
+ @Autowired(required = false)
+ private Map> suppliers = Collections.emptyMap();
- @Autowired(required = false)
- private Map> functions = Collections.emptyMap();
+ @Autowired(required = false)
+ private Map> functions = Collections.emptyMap();
- @Autowired(required = false)
- private Map> consumers = Collections.emptyMap();
+ @Autowired(required = false)
+ private Map> consumers = Collections.emptyMap();
- @Autowired(required = false)
- private Map> registrations = Collections.emptyMap();
+ @Autowired(required = false)
+ private Map> registrations = Collections.emptyMap();
- @Bean
- public FunctionRegistry functionCatalog(ContextFunctionRegistry processor) {
- processor.merge(registrations, consumers, suppliers, functions);
- return new BeanFactoryFunctionCatalog(processor);
- }
+ @Bean
+ public FunctionRegistry functionCatalog(ContextFunctionRegistry processor) {
+ processor.merge(registrations, consumers, suppliers, functions);
+ return new BeanFactoryFunctionCatalog(processor);
+ }
- @Bean
- public FunctionInspector functionInspector(ContextFunctionRegistry processor) {
- return new BeanFactoryFunctionInspector(processor);
- }
+ @Bean
+ public FunctionInspector functionInspector(ContextFunctionRegistry processor) {
+ return new BeanFactoryFunctionInspector(processor);
+ }
- protected static class BeanFactoryFunctionCatalog implements FunctionRegistry {
+ protected static class BeanFactoryFunctionCatalog implements FunctionRegistry {
- private final ContextFunctionRegistry processor;
+ private final ContextFunctionRegistry processor;
- @Override
- public void register(FunctionRegistration registration) {
- Assert.notEmpty(registration.getNames(), "'registration' must contain at least one name before it is registered in catalog.");
- processor.register(registration);
- }
+ @Override
+ public void register(FunctionRegistration registration) {
+ Assert.notEmpty(registration.getNames(), "'registration' must contain at least one name before it is registered in catalog.");
+ processor.register(registration);
+ }
- @Override
- @SuppressWarnings("unchecked")
- public T lookup(Class type, String name) {
- T function = null;
- if (type == null) {
- function = (T) processor.lookupFunction(name);
- if (function == null) {
- function = (T) processor.lookupConsumer(name);
- }
- if (function == null) {
- function = (T) processor.lookupSupplier(name);
- }
- }
- else if (Supplier.class.isAssignableFrom(type)) {
- function = (T) processor.lookupSupplier(name);
- }
- else if (Consumer.class.isAssignableFrom(type)) {
- function = (T) processor.lookupConsumer(name);
- }
- else if (Function.class.isAssignableFrom(type)) {
- function = (T) processor.lookupFunction(name);
- }
- return function;
- }
+ @Override
+ @SuppressWarnings("unchecked")
+ public T lookup(Class type, String name) {
+ T function = null;
+ if (type == null) {
+ function = (T) processor.lookupFunction(name);
+ if (function == null) {
+ function = (T) processor.lookupConsumer(name);
+ }
+ if (function == null) {
+ function = (T) processor.lookupSupplier(name);
+ }
+ } else if (Supplier.class.isAssignableFrom(type)) {
+ function = (T) processor.lookupSupplier(name);
+ } else if (Consumer.class.isAssignableFrom(type)) {
+ function = (T) processor.lookupConsumer(name);
+ } else if (Function.class.isAssignableFrom(type)) {
+ function = (T) processor.lookupFunction(name);
+ }
+ return function;
+ }
- @Override
- public Set getNames(Class> type) {
- if (Supplier.class.isAssignableFrom(type)) {
- return this.processor.getSuppliers();
- }
- if (Consumer.class.isAssignableFrom(type)) {
- return this.processor.getConsumers();
- }
- if (Function.class.isAssignableFrom(type)) {
- return this.processor.getFunctions();
- }
- return Collections.emptySet();
- }
+ @Override
+ public Set getNames(Class> type) {
+ if (Supplier.class.isAssignableFrom(type)) {
+ return this.processor.getSuppliers();
+ }
+ if (Consumer.class.isAssignableFrom(type)) {
+ return this.processor.getConsumers();
+ }
+ if (Function.class.isAssignableFrom(type)) {
+ return this.processor.getFunctions();
+ }
+ return Collections.emptySet();
+ }
- public BeanFactoryFunctionCatalog(ContextFunctionRegistry processor) {
- this.processor = processor;
- }
+ public BeanFactoryFunctionCatalog(ContextFunctionRegistry processor) {
+ this.processor = processor;
+ }
- }
+ }
- protected class BeanFactoryFunctionInspector implements FunctionInspector {
+ protected class BeanFactoryFunctionInspector implements FunctionInspector {
- private ContextFunctionRegistry processor;
+ private ContextFunctionRegistry processor;
- public BeanFactoryFunctionInspector(ContextFunctionRegistry processor) {
- this.processor = processor;
- }
+ public BeanFactoryFunctionInspector(ContextFunctionRegistry processor) {
+ this.processor = processor;
+ }
- @Override
- public FunctionRegistration> getRegistration(Object function) {
- FunctionRegistration> registration = processor.getRegistration(function);
- return registration;
- }
+ @Override
+ public FunctionRegistration> getRegistration(Object function) {
+ FunctionRegistration> registration = processor.getRegistration(function);
+ return registration;
+ }
- }
+ }
- @Configuration
- @ConditionalOnClass(Gson.class)
- @ConditionalOnBean(Gson.class)
- @Conditional(PreferGsonOrMissingJacksonCondition.class)
- protected static class GsonConfiguration {
- @Bean
- public GsonMapper jsonMapper(Gson gson) {
- return new GsonMapper(gson);
- }
- }
+ @Configuration
+ @ConditionalOnClass(Gson.class)
+ @ConditionalOnBean(Gson.class)
+ @Conditional(PreferGsonOrMissingJacksonCondition.class)
+ protected static class GsonConfiguration {
+ @Bean
+ public GsonMapper jsonMapper(Gson gson) {
+ return new GsonMapper(gson);
+ }
+ }
- @Configuration
- @ConditionalOnClass(ObjectMapper.class)
- @ConditionalOnBean(ObjectMapper.class)
- @ConditionalOnProperty(name = ContextFunctionCatalogAutoConfiguration.PREFERRED_MAPPER_PROPERTY, havingValue = "jackson", matchIfMissing = true)
- protected static class JacksonConfiguration {
- @Bean
- public JacksonMapper jsonMapper(ObjectMapper mapper) {
- return new JacksonMapper(mapper);
- }
- }
+ @Configuration
+ @ConditionalOnClass(ObjectMapper.class)
+ @ConditionalOnBean(ObjectMapper.class)
+ @ConditionalOnProperty(name = ContextFunctionCatalogAutoConfiguration.PREFERRED_MAPPER_PROPERTY, havingValue = "jackson", matchIfMissing = true)
+ protected static class JacksonConfiguration {
+ @Bean
+ public JacksonMapper jsonMapper(ObjectMapper mapper) {
+ return new JacksonMapper(mapper);
+ }
+ }
- @Component
- protected static class ContextFunctionRegistry {
+ @Component
+ protected static class ContextFunctionRegistry {
- private Map suppliers = new ConcurrentHashMap<>();
+ private Map suppliers = new ConcurrentHashMap<>();
- private Map functions = new ConcurrentHashMap<>();
+ private Map functions = new ConcurrentHashMap<>();
- private Map consumers = new ConcurrentHashMap<>();
+ private Map consumers = new ConcurrentHashMap<>();
- @Autowired(required = false)
- private ApplicationEventPublisher publisher;
+ @Autowired(required = false)
+ private ApplicationEventPublisher publisher;
- @Autowired
- private ConfigurableListableBeanFactory registry;
+ @Autowired
+ private ConfigurableListableBeanFactory registry;
- private Map