diff --git a/docs/pom.xml b/docs/pom.xml
index 8ebe1c228..60527ff37 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -7,7 +7,7 @@
org.springframework.cloud
spring-cloud-function-parent
- 3.2.2-SNAPSHOT
+ 4.0.0-SNAPSHOT
pom
Spring Cloud Function Docs
diff --git a/pom.xml b/pom.xml
index ce54fa4ca..ba2b87556 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,18 +6,18 @@
spring-cloud-function-parent
Spring Cloud Function Parent
- 3.2.2-SNAPSHOT
+ 4.0.0-SNAPSHOT
pom
org.springframework.cloud
spring-cloud-build
- 3.1.1-SNAPSHOT
+ 4.0.0-SNAPSHOT
- 1.8
+ 17
${java.version}
${java.version}
1.0.27.RELEASE
@@ -48,8 +48,16 @@
org.apache.maven.plugins
maven-checkstyle-plugin
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ --add-opens java.base/java.util=ALL-UNNAMED
+
+
+
org.codehaus.mojo
@@ -129,18 +137,18 @@
-
- java11+
-
- [11,)
-
-
-
- javax.annotation
- javax.annotation-api
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
core
diff --git a/spring-cloud-function-adapters/pom.xml b/spring-cloud-function-adapters/pom.xml
index 092a20be6..e78de8ad4 100644
--- a/spring-cloud-function-adapters/pom.xml
+++ b/spring-cloud-function-adapters/pom.xml
@@ -10,7 +10,7 @@
org.springframework.cloud
spring-cloud-function-parent
- 3.2.2-SNAPSHOT
+ 4.0.0-SNAPSHOT
spring-cloud-function-adapter-parent
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml
index df68a3f43..7c47ab30a 100644
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml
+++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml
@@ -13,13 +13,12 @@
org.springframework.cloud
spring-cloud-function-adapter-parent
- 3.2.2-SNAPSHOT
+ 4.0.0-SNAPSHOT
UTF-8
UTF-8
- 1.8
3.9.0
1.12.29
1.0.3
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeAutoConfiguration.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeAutoConfiguration.java
index c9730be45..0c2ffea2f 100644
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeAutoConfiguration.java
+++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeAutoConfiguration.java
@@ -29,6 +29,8 @@ import org.springframework.context.annotation.Configuration;
/**
* @author Dave Syer
*/
+//TODO - do we actually need it?????
+
@Configuration
@AutoConfigureBefore(FunctionExporterAutoConfiguration.class)
@ConditionalOnClass(DestinationResolver.class)
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeEnvironmentPostProcessor.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeEnvironmentPostProcessor.java
deleted file mode 100644
index 5ed4e51fe..000000000
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeEnvironmentPostProcessor.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2019-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.function.adapter.aws;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.env.EnvironmentPostProcessor;
-import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.core.env.MapPropertySource;
-
-/**
- * Adds default properties to the environment for running a custom runtime in AWS.
- *
- * @author Dave Syer
- * @author Oleg Zhurakousky
- */
-public class CustomRuntimeEnvironmentPostProcessor implements EnvironmentPostProcessor {
-
- private static final String CUSTOM_RUNTIME = "spring.cloud.function.aws.custom";
-
- @Override
- public void postProcessEnvironment(ConfigurableEnvironment environment,
- SpringApplication application) {
- if (!environment.containsProperty(CUSTOM_RUNTIME)) {
- Map defaults = getDefaultProperties(environment);
- defaults.put(CUSTOM_RUNTIME, true);
- }
- }
-
- private Map getDefaultProperties(
- ConfigurableEnvironment environment) {
- if (environment.getPropertySources().contains("defaultProperties")) {
- MapPropertySource source = (MapPropertySource) environment
- .getPropertySources().get("defaultProperties");
- return source.getSource();
- }
- HashMap map = new HashMap();
- environment.getPropertySources()
- .addLast(new MapPropertySource("defaultProperties", map));
- return map;
- }
-
-}
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeInitializer.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeInitializer.java
index 60e8a48f8..92ba13ca1 100644
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeInitializer.java
+++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/CustomRuntimeInitializer.java
@@ -19,7 +19,6 @@ package org.springframework.cloud.function.adapter.aws;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.springframework.cloud.function.context.AbstractSpringFunctionAdapterInitializer;
import org.springframework.cloud.function.context.config.ContextFunctionCatalogInitializer;
import org.springframework.cloud.function.web.source.DestinationResolver;
import org.springframework.context.ApplicationContextInitializer;
@@ -64,7 +63,7 @@ public class CustomRuntimeInitializer implements ApplicationContextInitializer clazz = Thread.currentThread().getContextClassLoader().loadClass(handler);
- if (FunctionInvoker.class.isAssignableFrom(clazz) || AbstractSpringFunctionAdapterInitializer.class.isAssignableFrom(clazz)) {
+ if (FunctionInvoker.class.isAssignableFrom(clazz)) {
return false;
}
}
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootApiGatewayRequestHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootApiGatewayRequestHandler.java
deleted file mode 100644
index 1968738ab..000000000
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootApiGatewayRequestHandler.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright 2012-2020 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.function.adapter.aws;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
-import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.commons.codec.binary.Base64;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper;
-import org.springframework.http.HttpStatus;
-import org.springframework.messaging.Message;
-import org.springframework.messaging.MessageHeaders;
-import org.springframework.messaging.support.GenericMessage;
-
-/**
- * @author Dave Syer
- * @author Oleg Zhurakousky
- * @author Semyon Fishman
- * @author Markus Gulden
- *
- * @deprecated since 3.1 in favor of {@link FunctionInvoker}
- */
-@Deprecated
-public class SpringBootApiGatewayRequestHandler extends
- SpringBootRequestHandler {
-
- @Autowired
- private ObjectMapper mapper;
-
- public SpringBootApiGatewayRequestHandler(Class> configurationClass) {
- super(configurationClass);
- }
-
- public SpringBootApiGatewayRequestHandler() {
- super();
- }
-
- @Override
- protected Object convertEvent(APIGatewayProxyRequestEvent event) {
- Object deserializedBody = event.getBody() != null ? deserializeBody(event) : Optional.empty();
- return functionAcceptsMessage()
- ? new GenericMessage<>(deserializedBody, getHeaders(event))
- : deserializedBody;
- }
-
- private boolean functionAcceptsMessage() {
- return ((FunctionInvocationWrapper) function()).isInputTypeMessage();
- }
-
- private Object deserializeBody(APIGatewayProxyRequestEvent event) {
- try {
- return this.mapper.readValue(
- (event.getIsBase64Encoded() != null && event.getIsBase64Encoded())
- ? new String(Base64.decodeBase64(event.getBody())) : event.getBody(),
- getInputType());
- }
- catch (Exception e) {
- throw new IllegalStateException("Cannot convert event", e);
- }
- }
-
- private MessageHeaders getHeaders(APIGatewayProxyRequestEvent event) {
- Map headers = new HashMap<>();
- if (event.getHeaders() != null) {
- headers.putAll(event.getHeaders());
- }
- if (event.getQueryStringParameters() != null) {
- headers.putAll(event.getQueryStringParameters());
- }
- if (event.getPathParameters() != null) {
- headers.putAll(event.getPathParameters());
- }
- headers.put("httpMethod", event.getHttpMethod());
- headers.put("request", event);
- return new MessageHeaders(headers);
- }
-
- @Override
- protected APIGatewayProxyResponseEvent convertOutput(Object output) {
- if (functionReturnsMessage(output)) {
- Message> message = (Message>) output;
- return new APIGatewayProxyResponseEvent()
- .withStatusCode((Integer) message.getHeaders()
- .getOrDefault("statuscode", HttpStatus.OK.value()))
- .withHeaders(toResponseHeaders(message.getHeaders()))
- .withBody(serializeBody(message.getPayload()));
- }
- else {
- return new APIGatewayProxyResponseEvent()
- .withStatusCode(HttpStatus.OK.value())
- .withBody(serializeBody(output));
-
- }
- }
-
- private boolean functionReturnsMessage(Object output) {
- return output instanceof Message;
- }
-
- private Map toResponseHeaders(MessageHeaders messageHeaders) {
- Map responseHeaders = new HashMap<>();
- messageHeaders
- .forEach((key, value) -> responseHeaders.put(key, value.toString()));
- return responseHeaders;
- }
-
- private String serializeBody(Object body) {
- try {
- return this.mapper.writeValueAsString(body);
- }
- catch (JsonProcessingException e) {
- throw new IllegalStateException("Cannot convert output", e);
- }
- }
-
- @Override
- public Object handleRequest(APIGatewayProxyRequestEvent event, Context context) {
- Object response = super.handleRequest(event, context);
- if (returnsOutput()) {
- return response;
- }
- else {
- return new APIGatewayProxyResponseEvent()
- .withStatusCode(HttpStatus.OK.value());
- }
- }
-}
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootKinesisEventHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootKinesisEventHandler.java
deleted file mode 100644
index 506d7e03b..000000000
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootKinesisEventHandler.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2012-2020 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.function.adapter.aws;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-import com.amazonaws.kinesis.deagg.RecordDeaggregator;
-import com.amazonaws.services.kinesis.clientlibrary.types.UserRecord;
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.lambda.runtime.events.KinesisEvent;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper;
-import org.springframework.messaging.Message;
-import org.springframework.messaging.support.GenericMessage;
-
-import static java.util.stream.Collectors.toList;
-
-
-/**
- * @param payload type
- * @param response type
- * @author Mark Fisher
- * @author Halvdan Hoem Grelland
- * @author Oleg Zhurakousky
- *
- * @deprecated since 3.1 in favor of {@link FunctionInvoker}
- */
-@Deprecated
-public class SpringBootKinesisEventHandler
- extends SpringBootRequestHandler {
-
- @Autowired
- private ObjectMapper mapper;
-
- public SpringBootKinesisEventHandler() {
- super();
- }
-
- public SpringBootKinesisEventHandler(Class> configurationClass) {
- super(configurationClass);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public List handleRequest(KinesisEvent event, Context context) {
- return (List) super.handleRequest(event, context);
- }
-
- @Override
- protected Object convertEvent(KinesisEvent event) {
- List payloads = deserializePayloads(event.getRecords());
-
- if (((FunctionInvocationWrapper) function()).isInputTypeMessage()) {
- return wrapInMessages(payloads);
- }
- else {
- return payloads;
- }
- }
-
- private List> wrapInMessages(List payloads) {
- return payloads.stream().map(GenericMessage::new).collect(Collectors.toList());
- }
-
- private List deserializePayloads(List records) {
- return RecordDeaggregator.deaggregate(records).stream()
- .map(this::deserializeUserRecord).collect(toList());
- }
-
- @SuppressWarnings("unchecked")
- private E deserializeUserRecord(UserRecord userRecord) {
- try {
- byte[] jsonBytes = userRecord.getData().array();
- return (E) this.mapper.readValue(jsonBytes, getInputType());
- }
- catch (Exception e) {
- throw new IllegalStateException("Cannot convert event", e);
- }
- }
-}
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java
deleted file mode 100644
index 95bb543ec..000000000
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2012-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.function.adapter.aws;
-
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.lambda.runtime.RequestHandler;
-import org.reactivestreams.Publisher;
-import reactor.core.publisher.Flux;
-
-import org.springframework.cloud.function.context.AbstractSpringFunctionAdapterInitializer;
-import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper;
-import org.springframework.messaging.Message;
-
-/**
- * @param event type
- * @param result types
- * @author Mark Fisher
- * @author Oleg Zhurakousky
- *
- */
-@Deprecated
-public class SpringBootRequestHandler extends AbstractSpringFunctionAdapterInitializer
- implements RequestHandler {
-
- public SpringBootRequestHandler(Class> configurationClass) {
- super(configurationClass);
- }
-
- public SpringBootRequestHandler() {
- super();
- }
-
- @Override
- public Object handleRequest(E event, Context context) {
- initialize(context);
- Object input = acceptsInput() ? convertEvent(event) : "";
- Publisher> output = apply(extract(input));
- return result(input, output);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- protected T result(Object input, Publisher> output) {
- List result = new ArrayList<>();
- for (Object value : Flux.from(output).toIterable()) {
- if (value instanceof Message> && !((FunctionInvocationWrapper) this.function()).isOutputTypeMessage()) {
- value = ((Message>) value).getPayload();
- }
- result.add(convertOutput(value));
- }
- if (isSingleValue(input) && result.size() == 1) {
- return (T) result.get(0);
- }
- return (T) result;
- }
-
- protected boolean acceptsInput() {
- Type inputType = ((FunctionInvocationWrapper) this.function()).getInputType();
- return inputType == null || inputType.equals(Void.class) ? false : true;
- }
-
- protected boolean returnsOutput() {
- Type outputType = ((FunctionInvocationWrapper) this.function()).getOutputType();
- return outputType == null || outputType.equals(Void.class) ? false : true;
- }
-
- private boolean isSingleValue(Object input) {
- return !(input instanceof Collection);
- }
-
- private Flux> extract(Object input) {
- if (input instanceof Collection) {
- return Flux.fromIterable((Iterable>) input);
- }
- return Flux.just(input);
- }
-
- protected Object convertEvent(E event) {
- return event;
- }
-
- @SuppressWarnings("unchecked")
- protected O convertOutput(Object output) {
- return (O) output;
- }
-
-}
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootStreamHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootStreamHandler.java
deleted file mode 100644
index 186f629c3..000000000
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootStreamHandler.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2017-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.function.adapter.aws;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Collection;
-
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.reactivestreams.Publisher;
-import reactor.core.publisher.Flux;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.function.context.AbstractSpringFunctionAdapterInitializer;
-
-/**
- * @author Dave Syer
- * @author Oleg Zhurakousky
- */
-public class SpringBootStreamHandler extends AbstractSpringFunctionAdapterInitializer
- implements RequestStreamHandler {
-
- @Autowired(required = false)
- private ObjectMapper mapper;
-
- public SpringBootStreamHandler() {
- super();
- }
-
- public SpringBootStreamHandler(Class> configurationClass) {
- super(configurationClass);
- }
-
- @Override
- public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException {
- initialize(context);
- Object value = convertStream(input);
- Publisher> flux = apply(extract(value));
- this.mapper.writeValue(output, result(value, flux));
- }
-
- @Override
- protected void initialize(Context context) {
- super.initialize(context);
- if (this.mapper == null) {
- this.mapper = new ObjectMapper();
- }
- }
-
- private Flux> extract(Object input) {
- if (input instanceof Collection) {
- return Flux.fromIterable((Iterable>) input);
- }
- return Flux.just(input);
- }
-
- /*
- * Will convert to POJOP or generic map unless user
- * explicitly requests InputStream (e.g., Function).
- */
- private Object convertStream(InputStream input) {
- Object convertedResult = input;
- try {
- Class> inputType = getInputType();
- if (!InputStream.class.isAssignableFrom(inputType)) {
- convertedResult = this.mapper.readValue(input, inputType);
- }
- }
- catch (Exception e) {
- throw new IllegalStateException("Cannot convert event stream", e);
- }
- return convertedResult;
- }
-
-}
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/resources/META-INF/spring.factories b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/resources/META-INF/spring.factories
index b10fc836b..caf1d26e9 100644
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/resources/META-INF/spring.factories
+++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/resources/META-INF/spring.factories
@@ -1,4 +1,2 @@
org.springframework.context.ApplicationContextInitializer=\
-org.springframework.cloud.function.adapter.aws.CustomRuntimeInitializer
-org.springframework.boot.env.EnvironmentPostProcessor=\
-org.springframework.cloud.function.adapter.aws.CustomRuntimeEnvironmentPostProcessor
\ No newline at end of file
+org.springframework.cloud.function.adapter.aws.CustomRuntimeInitializer
\ No newline at end of file
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/test/java/org/springframework/cloud/function/adapter/aws/SpringBootApiGatewayRequestHandlerTests.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/test/java/org/springframework/cloud/function/adapter/aws/SpringBootApiGatewayRequestHandlerTests.java
deleted file mode 100644
index 425e040cd..000000000
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/test/java/org/springframework/cloud/function/adapter/aws/SpringBootApiGatewayRequestHandlerTests.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright 2012-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.function.adapter.aws;
-
-import java.util.Base64;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Supplier;
-
-import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
-import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Test;
-
-import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
-import org.springframework.cloud.function.context.config.ContextFunctionCatalogAutoConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.messaging.Message;
-import org.springframework.messaging.support.GenericMessage;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * @author Dimitry Declercq
- * @author Markus Gulden
- */
-public class SpringBootApiGatewayRequestHandlerTests {
-
- private SpringBootApiGatewayRequestHandler handler;
-
- @AfterEach
- public void after() {
- System.clearProperty("function.name");
- }
-
- @Test
- public void supplierBean() {
- System.setProperty("function.name", "supplier");
- this.handler = new SpringBootApiGatewayRequestHandler(FunctionConfig.class);
- APIGatewayProxyRequestEvent request = new APIGatewayProxyRequestEvent();
-
- Object output = this.handler.handleRequest(request, null);
- assertThat(output).isInstanceOf(APIGatewayProxyResponseEvent.class);
- assertThat(((APIGatewayProxyResponseEvent) output).getStatusCode())
- .isEqualTo(200);
- assertThat(((APIGatewayProxyResponseEvent) output).getBody())
- .isEqualTo("\"hello!\"");
- }
-
- @Test
- public void functionBean() {
- System.setProperty("function.name", "function");
- this.handler = new SpringBootApiGatewayRequestHandler(FunctionConfig.class);
- APIGatewayProxyRequestEvent request = new APIGatewayProxyRequestEvent();
- request.setBody("{\"value\":\"foo\"}");
-
- Object output = this.handler.handleRequest(request, null);
- assertThat(output).isInstanceOf(APIGatewayProxyResponseEvent.class);
- assertThat(((APIGatewayProxyResponseEvent) output).getStatusCode())
- .isEqualTo(200);
- assertThat(((APIGatewayProxyResponseEvent) output).getBody())
- .isEqualTo("{\"value\":\"FOO\"}");
-
- APIGatewayProxyRequestEvent bodyEncryptedRequest = new APIGatewayProxyRequestEvent();
- bodyEncryptedRequest.setBody(
- Base64.getEncoder().encodeToString("{\"value\":\"foo\"}".getBytes()));
- bodyEncryptedRequest.setIsBase64Encoded(true);
-
- output = this.handler.handleRequest(bodyEncryptedRequest, null);
- assertThat(output).isInstanceOf(APIGatewayProxyResponseEvent.class);
- assertThat(((APIGatewayProxyResponseEvent) output).getStatusCode())
- .isEqualTo(200);
- assertThat(((APIGatewayProxyResponseEvent) output).getBody())
- .isEqualTo("{\"value\":\"FOO\"}");
- }
-
- @Test
- public void consumerBean() {
- System.setProperty("function.name", "consumer");
- this.handler = new SpringBootApiGatewayRequestHandler(FunctionConfig.class);
- APIGatewayProxyRequestEvent request = new APIGatewayProxyRequestEvent();
- request.setBody("\"strVal\":\"test for consumer\"");
-
- Object output = this.handler.handleRequest(request, null);
- assertThat(output).isInstanceOf(APIGatewayProxyResponseEvent.class);
- assertThat(((APIGatewayProxyResponseEvent) output).getStatusCode())
- .isEqualTo(200);
- }
-
- @Test
- public void functionMessageBean() {
- this.handler = new SpringBootApiGatewayRequestHandler(
- FunctionMessageConfig.class);
- APIGatewayProxyRequestEvent request = new APIGatewayProxyRequestEvent();
- request.setBody("{\"value\":\"foo\"}");
-
- Object output = this.handler.handleRequest(request, null);
- assertThat(output).isInstanceOf(APIGatewayProxyResponseEvent.class);
- assertThat(((APIGatewayProxyResponseEvent) output).getStatusCode())
- .isEqualTo(200);
- assertThat(((APIGatewayProxyResponseEvent) output).getHeaders().get("spring"))
- .isEqualTo("cloud");
- assertThat(((APIGatewayProxyResponseEvent) output).getBody())
- .isEqualTo("{\"value\":\"FOO\"}");
- }
-
-
- @Test
- public void functionMessageBeanWithRequestParameters() {
- this.handler = new SpringBootApiGatewayRequestHandler(
- FunctionMessageEchoReqParametersConfig.class);
- APIGatewayProxyRequestEvent request = new APIGatewayProxyRequestEvent();
- request.setPathParameters(Collections.singletonMap("path", "pathValue"));
- request.setQueryStringParameters(Collections.singletonMap("query", "queryValue"));
- request.setHeaders(Collections.singletonMap("test-header", "headerValue"));
- request.setHttpMethod("GET");
-
- Object output = this.handler.handleRequest(request, null);
- assertThat(output).isInstanceOf(APIGatewayProxyResponseEvent.class);
- assertThat(((APIGatewayProxyResponseEvent) output).getStatusCode())
- .isEqualTo(200);
- assertThat(((APIGatewayProxyResponseEvent) output).getHeaders().get("path"))
- .isEqualTo("pathValue");
- assertThat(((APIGatewayProxyResponseEvent) output).getHeaders().get("query"))
- .isEqualTo("queryValue");
- assertThat(
- ((APIGatewayProxyResponseEvent) output).getHeaders().get("test-header"))
- .isEqualTo("headerValue");
- assertThat(((APIGatewayProxyResponseEvent) output).getHeaders().get("httpMethod"))
- .isEqualTo("GET");
- assertThat(((APIGatewayProxyResponseEvent) output).getBody())
- .isEqualTo("{\"value\":\"body\"}");
-
- }
-
- @Test
- public void functionMessageBeanWithEmptyResponse() {
- this.handler = new SpringBootApiGatewayRequestHandler(
- FunctionMessageConsumerConfig.class);
- APIGatewayProxyRequestEvent request = new APIGatewayProxyRequestEvent();
-
- Object output = this.handler.handleRequest(request, null);
- assertThat(output).isInstanceOf(APIGatewayProxyResponseEvent.class);
- assertThat(((APIGatewayProxyResponseEvent) output).getStatusCode())
- .isEqualTo(200);
- assertThat(((APIGatewayProxyResponseEvent) output).getBody()).isNull();
- }
-
- @Configuration
- @Import({ ContextFunctionCatalogAutoConfiguration.class,
- JacksonAutoConfiguration.class })
- protected static class FunctionConfig {
-
- @Bean
- public Function function() {
- return foo -> new Bar(foo.getValue().toUpperCase());
- }
-
- @Bean
- public Consumer consumer() {
- return v -> System.out.println(v);
- }
-
- @Bean
- public Supplier supplier() {
- return () -> "hello!";
- }
-
- }
-
- @Configuration
- @Import({ ContextFunctionCatalogAutoConfiguration.class,
- JacksonAutoConfiguration.class })
- protected static class FunctionMessageConfig {
-
- @Bean
- public Function, Message> function() {
- return (foo -> {
- Map headers = Collections.singletonMap("spring", "cloud");
- return new GenericMessage<>(
- new Bar(foo.getPayload().getValue().toUpperCase()), headers);
- });
- }
-
- }
-
- @Configuration
- @Import({ ContextFunctionCatalogAutoConfiguration.class,
- JacksonAutoConfiguration.class })
- protected static class FunctionMessageEchoReqParametersConfig {
-
- @Bean
- public Function, Message> function() {
- return (message -> {
- Map headers = new HashMap<>();
- headers.put("path", message.getHeaders().get("path"));
- headers.put("query", message.getHeaders().get("query"));
- headers.put("test-header", message.getHeaders().get("test-header"));
- headers.put("httpMethod", message.getHeaders().get("httpMethod"));
- return new GenericMessage<>(new Bar("body"), headers);
- });
- }
-
- }
-
- @Configuration
- @Import({ ContextFunctionCatalogAutoConfiguration.class,
- JacksonAutoConfiguration.class })
- protected static class FunctionMessageConsumerConfig {
-
- @Bean
- public Consumer> function() {
- return (foo -> {
- });
- }
-
- }
-
- protected static class Foo {
-
- private String value;
-
- public String getValue() {
- return this.value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- }
-
- protected static class Bar {
-
- private String value;
-
- public Bar() {
- }
-
- public Bar(String value) {
- this.value = value;
- }
-
- public String getValue() {
- return this.value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- }
-
-}
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/test/java/org/springframework/cloud/function/adapter/aws/SpringBootKinesisEventHandlerTests.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/test/java/org/springframework/cloud/function/adapter/aws/SpringBootKinesisEventHandlerTests.java
deleted file mode 100644
index 89d26f0da..000000000
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/test/java/org/springframework/cloud/function/adapter/aws/SpringBootKinesisEventHandlerTests.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright 2012-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.function.adapter.aws;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.function.Function;
-
-import com.amazonaws.kinesis.agg.AggRecord;
-import com.amazonaws.kinesis.agg.RecordAggregator;
-import com.amazonaws.services.lambda.runtime.events.KinesisEvent;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-
-import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
-import org.springframework.cloud.function.context.config.ContextFunctionCatalogAutoConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.messaging.Message;
-
-import static java.util.Arrays.asList;
-import static java.util.Collections.singletonList;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.fail;
-
-/**
- * @author Halvdan Hoem Grelland
- */
-@Disabled
-public class SpringBootKinesisEventHandlerTests {
-
- private static final ObjectMapper mapper = new ObjectMapper();
-
- private SpringBootKinesisEventHandler handler;
-
- private static KinesisEvent asKinesisEvent(List