From 3baaa45648f4940d6e39ecc86457536314d80e71 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 16 Aug 2018 08:55:31 +0100 Subject: [PATCH] Allow Azure function apps to pass function name down to handler --- .../azure/AzureSpringBootRequestHandler.java | 32 +++---------------- .../azure/AzureSpringFunctionInitializer.java | 8 +++-- 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringBootRequestHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringBootRequestHandler.java index 04851e5e9..e7376474d 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringBootRequestHandler.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringBootRequestHandler.java @@ -42,14 +42,16 @@ public class AzureSpringBootRequestHandler extends AzureSpringFunctionInit } public O handleRequest(I input, ExecutionContext context) { + String name = null; try { if (context != null) { context.getLogger().fine("Handler processed a request."); + name = context.getFunctionName(); } initialize(context); Object convertedEvent = convertEvent(input); - Publisher output = apply(extract(convertedEvent)); + Publisher output = apply(name, extract(convertedEvent)); return result(convertedEvent, output); } catch (Throwable ex) { @@ -73,32 +75,8 @@ public class AzureSpringBootRequestHandler extends AzureSpringFunctionInit public void handleOutput(I input, OutputBinding binding, ExecutionContext context) { - try { - if (context != null) { - context.getLogger().fine("Handler processing a request."); - } - initialize(context); - - Object convertedEvent = convertEvent(input); - Publisher output = apply(extract(convertedEvent)); - binding.setValue(result(convertedEvent, output)); - - if (context != null) { - context.getLogger().fine("Handler processed a request."); - } - } - catch (Throwable ex) { - if (context != null) { - context.getLogger().throwing(getClass().getName(), "handle", ex); - } - if (ex instanceof RuntimeException) { - throw (RuntimeException) ex; - } - if (ex instanceof Error) { - throw (Error) ex; - } - throw new UndeclaredThrowableException(ex); - } + O result = handleRequest(input, context); + binding.setValue(result); } protected Object convertEvent(I input) { diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringFunctionInitializer.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringFunctionInitializer.java index b8517950a..58aa1d61a 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringFunctionInitializer.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringFunctionInitializer.java @@ -119,8 +119,12 @@ public class AzureSpringFunctionInitializer implements Closeable { } } - protected Publisher apply(Publisher input) { - if (this.function != null) { + protected Publisher apply(String name, Publisher input) { + Function, Publisher> function = this.function; + if (function == null && name != null) { + function = this.catalog.lookup(Function.class, name); + } + if (function != null) { return function.apply(input); } throw new IllegalStateException("No function defined");