From ebd8b3138b0baf520505466caf5704d501b8576d Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 2 Mar 2023 19:11:20 +0100 Subject: [PATCH] updated SCF azure sample --- .../HttpTriggerDemoApplication.java | 5 ++++ .../di/httptriggerdemo/MyAzureFunction.java | 29 +++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/spring-cloud-function-samples/function-azure-di-samples/azure-httptrigger-demo/src/main/java/com/example/azure/di/httptriggerdemo/HttpTriggerDemoApplication.java b/spring-cloud-function-samples/function-azure-di-samples/azure-httptrigger-demo/src/main/java/com/example/azure/di/httptriggerdemo/HttpTriggerDemoApplication.java index d462f8c97..fc7bd8ea3 100644 --- a/spring-cloud-function-samples/function-azure-di-samples/azure-httptrigger-demo/src/main/java/com/example/azure/di/httptriggerdemo/HttpTriggerDemoApplication.java +++ b/spring-cloud-function-samples/function-azure-di-samples/azure-httptrigger-demo/src/main/java/com/example/azure/di/httptriggerdemo/HttpTriggerDemoApplication.java @@ -35,6 +35,11 @@ public class HttpTriggerDemoApplication { return payload -> payload.toUpperCase(); } + @Bean + public Function reverse() { + return payload -> new StringBuilder(payload).reverse().toString(); + } + public static void main(String[] args) { SpringApplication.run(HttpTriggerDemoApplication.class, args); } diff --git a/spring-cloud-function-samples/function-azure-di-samples/azure-httptrigger-demo/src/main/java/com/example/azure/di/httptriggerdemo/MyAzureFunction.java b/spring-cloud-function-samples/function-azure-di-samples/azure-httptrigger-demo/src/main/java/com/example/azure/di/httptriggerdemo/MyAzureFunction.java index 0bcf1879d..53d755972 100644 --- a/spring-cloud-function-samples/function-azure-di-samples/azure-httptrigger-demo/src/main/java/com/example/azure/di/httptriggerdemo/MyAzureFunction.java +++ b/spring-cloud-function-samples/function-azure-di-samples/azure-httptrigger-demo/src/main/java/com/example/azure/di/httptriggerdemo/MyAzureFunction.java @@ -27,23 +27,48 @@ import com.microsoft.azure.functions.annotation.FunctionName; import com.microsoft.azure.functions.annotation.HttpTrigger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.function.context.FunctionCatalog; import org.springframework.stereotype.Component; @Component public class MyAzureFunction { + /** + * Plain Spring bean (not Spring Cloud Functions!) + */ @Autowired private Function echo; + /** + * Plain Spring bean (not Spring Cloud Functions!) + */ @Autowired private Function uppercase; - @FunctionName("ditest") - public String execute( + /** + * The FunctionCatalog leverages the Spring Cloud Function framework. + */ + @Autowired + private FunctionCatalog functionCatalog; + + @FunctionName("bean") + public String plainBeans( @HttpTrigger(name = "req", methods = { HttpMethod.GET, HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage> request, ExecutionContext context) { return echo.andThen(uppercase).apply(request.getBody().get()); } + + @FunctionName("scf") + public String springCloudFunction( + @HttpTrigger(name = "req", methods = { HttpMethod.GET, + HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage> request, + ExecutionContext context) { + + // Use SCF composition. Composed functions are not just spring beans but SCF such. + Function composed = this.functionCatalog.lookup("echo|reverse|uppercase"); + + return (String) composed.apply(request.getBody().get()); + } }