diff --git a/spring-cloud-function-compiler/pom.xml b/spring-cloud-function-compiler/pom.xml index 288fd1f28..417b5a4f1 100644 --- a/spring-cloud-function-compiler/pom.xml +++ b/spring-cloud-function-compiler/pom.xml @@ -70,6 +70,11 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-configuration-processor + true + diff --git a/spring-cloud-function-compiler/src/main/java/org/springframework/cloud/function/compiler/config/FunctionProxyApplicationListener.java b/spring-cloud-function-compiler/src/main/java/org/springframework/cloud/function/compiler/config/FunctionProxyApplicationListener.java index 75683a581..dc59431fa 100644 --- a/spring-cloud-function-compiler/src/main/java/org/springframework/cloud/function/compiler/config/FunctionProxyApplicationListener.java +++ b/spring-cloud-function-compiler/src/main/java/org/springframework/cloud/function/compiler/config/FunctionProxyApplicationListener.java @@ -55,16 +55,28 @@ public class FunctionProxyApplicationListener private final ConsumerCompiler consumerCompiler = new ConsumerCompiler<>(); - private final Map toCompile = new HashMap<>(); + /** + * Configuration for function bodies, which will be compiled. The key in the map is + * the function name and the value is a map containing a key "lambda" which is the + * body to compile, and optionally a "type" (defaults to "function"). Can also contain + * "inputType" and "outputType" in case it is ambiguous. + */ + private final Map compile = new HashMap<>(); - private final Map toImport = new HashMap<>(); + /** + * Configuration for a set of files containing function bodies, which will be imported + * and compiled. The key in the map is the function name and the value is another map, + * containing a "location" of the file to compile and (optionally) a "type" (defaults + * to "function"). + */ + private final Map imports = new HashMap<>(); public Map getCompile() { - return toCompile; + return compile; } - public Map getImport() { - return toImport; + public Map getImports() { + return imports; } @Override @@ -73,7 +85,7 @@ public class FunctionProxyApplicationListener DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) context .getBeanFactory(); bind(context); - for (Map.Entry entry : toCompile.entrySet()) { + for (Map.Entry entry : compile.entrySet()) { String name = entry.getKey(); @SuppressWarnings("unchecked") Map properties = (Map) entry.getValue(); @@ -88,7 +100,7 @@ public class FunctionProxyApplicationListener registerLambdaCompilingProxy(name, type, inputType, outputType, lambda, beanFactory); } - for (Map.Entry entry : toImport.entrySet()) { + for (Map.Entry entry : imports.entrySet()) { String name = entry.getKey(); @SuppressWarnings("unchecked") Map properties = (Map) entry.getValue(); diff --git a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfigurationTests.java b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfigurationTests.java index 2d50283e7..cab3c6adc 100644 --- a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfigurationTests.java +++ b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfigurationTests.java @@ -451,7 +451,7 @@ public class ContextFunctionCatalogAutoConfigurationTests { FileSystemResource resource = new FileSystemResource("target/foos.fun"); StreamUtils.copy(compiled.getGeneratedClassBytes(), resource.getOutputStream()); create(EmptyConfiguration.class, - "spring.cloud.function.import.foos.location=file:./target/foos.fun"); + "spring.cloud.function.imports.foos.location=file:./target/foos.fun"); assertThat(context.getBean("foos")).isInstanceOf(Function.class); assertThat(catalog.>lookup(Function.class, "foos")) .isInstanceOf(Function.class);