From 1edb0ae7014c66e464ff96265d3d35588e0ca086 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Tue, 16 Aug 2022 16:43:18 +0200 Subject: [PATCH] GH-917 Fix regression with sanitizing headers Resolves #917 --- .../cloud/function/adapter/aws/AWSLambdaUtils.java | 3 +++ .../context/catalog/BeanFactoryAwareFunctionRegistry.java | 5 +++-- .../function/context/catalog/SimpleFunctionRegistry.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/AWSLambdaUtils.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/AWSLambdaUtils.java index 43311f094..fdb099255 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/AWSLambdaUtils.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/AWSLambdaUtils.java @@ -46,6 +46,9 @@ public final class AWSLambdaUtils { static final String AWS_EVENT = "aws-event"; + /** + * The name of the headers that stores AWS Context object. + */ public static final String AWS_CONTEXT = "aws-context"; private AWSLambdaUtils() { diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java index 8599b1700..bc6132b93 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java @@ -116,8 +116,9 @@ public class BeanFactoryAwareFunctionRegistry extends SimpleFunctionRegistry imp functionDefinition = StringUtils.hasText(functionDefinition) ? functionDefinition : this.applicationContext.getEnvironment().getProperty(FunctionProperties.FUNCTION_DEFINITION, ""); - - functionDefinition = this.normalizeFunctionDefinition(functionDefinition); + if (!this.applicationContext.containsBean(functionDefinition) || !KotlinDetector.isKotlinType(this.applicationContext.getBean(functionDefinition).getClass())) { + functionDefinition = this.normalizeFunctionDefinition(functionDefinition); + } if (!StringUtils.hasText(functionDefinition)) { logger.info("Can't determine default function definition. Please " + "use 'spring.cloud.function.definition' property to explicitly define it."); diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java index 57d4c69cf..4211b0af2 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java @@ -784,7 +784,7 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect } else { Map headersMap = new HashMap<>(((Message) result).getHeaders()); - this.sanitizeHeaders(((Message) result).getHeaders()).forEach((k, v) -> headersMap.putIfAbsent(k, v)); + this.sanitizeHeaders(((Message) input).getHeaders()).forEach((k, v) -> headersMap.putIfAbsent(k, v)); result = MessageBuilder.withPayload(((Message) result).getPayload()).copyHeaders(headersMap).build(); } }