diff --git a/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/alb/ApplicationLoadBalancerServletResponse.java b/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/alb/ApplicationLoadBalancerServletResponse.java index 2963407a4a..d1e7bbb3fc 100644 --- a/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/alb/ApplicationLoadBalancerServletResponse.java +++ b/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/alb/ApplicationLoadBalancerServletResponse.java @@ -18,6 +18,7 @@ import com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerResponseEvent; import io.micronaut.core.annotation.Internal; import io.micronaut.core.convert.ConversionService; +import io.micronaut.core.util.StringUtils; import io.micronaut.function.BinaryTypeConfiguration; import io.micronaut.function.aws.proxy.AbstractServletHttpResponse; import io.micronaut.function.aws.proxy.MapCollapseUtils; @@ -49,7 +50,10 @@ public ApplicationLoadBalancerResponseEvent getNativeResponse() { nativeResponse.setBody(Base64.getMimeEncoder().encodeToString(body.toByteArray())); } else { nativeResponse.setIsBase64Encoded(false); - nativeResponse.setBody(body.toString(getCharacterEncoding())); + String bodyStr = body.toString(getCharacterEncoding()); + if (StringUtils.isNotEmpty(bodyStr)) { + nativeResponse.setBody(bodyStr); + } } return nativeResponse; } diff --git a/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/payload1/ApiGatewayProxyServletResponse.java b/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/payload1/ApiGatewayProxyServletResponse.java index c5f991142f..07b0a1d2ef 100644 --- a/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/payload1/ApiGatewayProxyServletResponse.java +++ b/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/payload1/ApiGatewayProxyServletResponse.java @@ -18,6 +18,7 @@ import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; import io.micronaut.core.annotation.Internal; import io.micronaut.core.convert.ConversionService; +import io.micronaut.core.util.StringUtils; import io.micronaut.function.BinaryTypeConfiguration; import io.micronaut.function.aws.proxy.AbstractServletHttpResponse; import io.micronaut.function.aws.proxy.MapCollapseUtils; @@ -42,7 +43,6 @@ protected ApiGatewayProxyServletResponse(ConversionService conversionService, Bi @Override public APIGatewayProxyResponseEvent getNativeResponse() { APIGatewayProxyResponseEvent apiGatewayProxyResponseEvent = new APIGatewayProxyResponseEvent() - .withBody(body.toString()) .withStatusCode(status) .withMultiValueHeaders(MapCollapseUtils.getMultiHeaders(headers)) .withHeaders(MapCollapseUtils.getSingleValueHeaders(headers)); @@ -53,8 +53,11 @@ public APIGatewayProxyResponseEvent getNativeResponse() { .withBody(Base64.getMimeEncoder().encodeToString(body.toByteArray())); } else { apiGatewayProxyResponseEvent - .withIsBase64Encoded(false) - .withBody(body.toString(getCharacterEncoding())); + .withIsBase64Encoded(false); + String bodyStr = body.toString(getCharacterEncoding()); + if (StringUtils.isNotEmpty(bodyStr)) { + apiGatewayProxyResponseEvent.withBody(bodyStr); + } } return apiGatewayProxyResponseEvent; } diff --git a/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/payload2/APIGatewayV2HTTPResponseServletResponse.java b/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/payload2/APIGatewayV2HTTPResponseServletResponse.java index 94d50314a4..08370447ea 100644 --- a/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/payload2/APIGatewayV2HTTPResponseServletResponse.java +++ b/function-aws-api-proxy/src/main/java/io/micronaut/function/aws/proxy/payload2/APIGatewayV2HTTPResponseServletResponse.java @@ -18,6 +18,7 @@ import com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse; import io.micronaut.core.annotation.Internal; import io.micronaut.core.convert.ConversionService; +import io.micronaut.core.util.StringUtils; import io.micronaut.function.BinaryTypeConfiguration; import io.micronaut.function.aws.proxy.AbstractServletHttpResponse; import io.micronaut.function.aws.proxy.MapCollapseUtils; @@ -51,7 +52,10 @@ public APIGatewayV2HTTPResponse getNativeResponse() { .withIsBase64Encoded(true) .withBody(Base64.getMimeEncoder().encodeToString(body.toByteArray())); } else { - apiGatewayV2HTTPResponseBuilder.withBody(body.toString(getCharacterEncoding())); + String bodyStr = body.toString(getCharacterEncoding()); + if (StringUtils.isNotEmpty(bodyStr)) { + apiGatewayV2HTTPResponseBuilder.withBody(bodyStr); + } } return apiGatewayV2HTTPResponseBuilder.build(); diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1a2219ca60..c2dad40fe3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,8 @@ [versions] -micronaut = "4.6.1" +micronaut = "4.6.2" micronaut-docs = "2.0.0" micronaut-test = "4.5.0" -groovy = "4.0.15" +groovy = "4.0.22" spock = "2.3-groovy-4.0" bouncycastle = '1.70' @@ -18,7 +18,7 @@ micronaut-reactor = "3.5.0" micronaut-security = "4.9.1" micronaut-serde = "2.11.0" -micronaut-servlet = "4.10.0" +micronaut-servlet = "4.10.1" micronaut-test-resources="2.5.4" micronaut-views = "5.4.4" micronaut-validation = "4.7.0" diff --git a/test-suite-http-server-tck-function-aws-api-gateway-proxy-alb/src/test/java/io/micronaut/http/server/tck/lambda/tests/ApplicationLoadBalancerTckTestSuite.java b/test-suite-http-server-tck-function-aws-api-gateway-proxy-alb/src/test/java/io/micronaut/http/server/tck/lambda/tests/ApplicationLoadBalancerTckTestSuite.java index e285408def..30aaa93401 100644 --- a/test-suite-http-server-tck-function-aws-api-gateway-proxy-alb/src/test/java/io/micronaut/http/server/tck/lambda/tests/ApplicationLoadBalancerTckTestSuite.java +++ b/test-suite-http-server-tck-function-aws-api-gateway-proxy-alb/src/test/java/io/micronaut/http/server/tck/lambda/tests/ApplicationLoadBalancerTckTestSuite.java @@ -16,8 +16,6 @@ "io.micronaut.http.server.tck.tests.FilterProxyTest", // Immmutable request "io.micronaut.http.server.tck.tests.filter.options.OptionsFilterTest", "io.micronaut.http.server.tck.tests.hateoas.JsonErrorTest", - "io.micronaut.http.server.tck.tests.NoBodyResponseTest", - "io.micronaut.http.server.tck.tests.ResponseStatusTest", "io.micronaut.http.server.tck.tests.hateoas.VndErrorTest" }) @SuiteDisplayName("HTTP Server TCK for Function AWS API Gateway Proxy Application Load Balancer Event") diff --git a/test-suite-http-server-tck-function-aws-api-gateway-proxy-payloadv1/src/test/java/io/micronaut/http/server/tck/lambda/tests/FunctionAwsApiGatewayProxyV1HttpServerTestSuite.java b/test-suite-http-server-tck-function-aws-api-gateway-proxy-payloadv1/src/test/java/io/micronaut/http/server/tck/lambda/tests/FunctionAwsApiGatewayProxyV1HttpServerTestSuite.java index 2699c7ae5a..cf16f79d60 100644 --- a/test-suite-http-server-tck-function-aws-api-gateway-proxy-payloadv1/src/test/java/io/micronaut/http/server/tck/lambda/tests/FunctionAwsApiGatewayProxyV1HttpServerTestSuite.java +++ b/test-suite-http-server-tck-function-aws-api-gateway-proxy-payloadv1/src/test/java/io/micronaut/http/server/tck/lambda/tests/FunctionAwsApiGatewayProxyV1HttpServerTestSuite.java @@ -1,9 +1,6 @@ package io.micronaut.http.server.tck.lambda.tests; -import org.junit.platform.suite.api.ExcludeClassNamePatterns; -import org.junit.platform.suite.api.SelectPackages; -import org.junit.platform.suite.api.Suite; -import org.junit.platform.suite.api.SuiteDisplayName; +import org.junit.platform.suite.api.*; @Suite @SelectPackages({ @@ -16,8 +13,6 @@ "io.micronaut.http.server.tck.tests.filter.options.OptionsFilterTest", "io.micronaut.http.server.tck.tests.FilterProxyTest", // Immmutable request "io.micronaut.http.server.tck.tests.hateoas.JsonErrorTest", - "io.micronaut.http.server.tck.tests.NoBodyResponseTest", - "io.micronaut.http.server.tck.tests.ResponseStatusTest", "io.micronaut.http.server.tck.tests.hateoas.VndErrorTest" }) @SuiteDisplayName("HTTP Server TCK for Function AWS API Gateway Proxy v1 Event model") diff --git a/test-suite-http-server-tck-function-aws-api-gateway-proxy-payloadv2/src/test/java/io/micronaut/http/server/tck/lambda/tests/FunctionAwsApiGatewayProxyV2HttpServerTestSuite.java b/test-suite-http-server-tck-function-aws-api-gateway-proxy-payloadv2/src/test/java/io/micronaut/http/server/tck/lambda/tests/FunctionAwsApiGatewayProxyV2HttpServerTestSuite.java index 336d9a95ed..05a1abd645 100644 --- a/test-suite-http-server-tck-function-aws-api-gateway-proxy-payloadv2/src/test/java/io/micronaut/http/server/tck/lambda/tests/FunctionAwsApiGatewayProxyV2HttpServerTestSuite.java +++ b/test-suite-http-server-tck-function-aws-api-gateway-proxy-payloadv2/src/test/java/io/micronaut/http/server/tck/lambda/tests/FunctionAwsApiGatewayProxyV2HttpServerTestSuite.java @@ -1,9 +1,6 @@ package io.micronaut.http.server.tck.lambda.tests; -import org.junit.platform.suite.api.ExcludeClassNamePatterns; -import org.junit.platform.suite.api.SelectPackages; -import org.junit.platform.suite.api.Suite; -import org.junit.platform.suite.api.SuiteDisplayName; +import org.junit.platform.suite.api.*; @Suite @SelectPackages({ @@ -16,8 +13,6 @@ "io.micronaut.http.server.tck.tests.filter.options.OptionsFilterTest", "io.micronaut.http.server.tck.tests.FilterProxyTest", // Immmutable request "io.micronaut.http.server.tck.tests.hateoas.JsonErrorTest", - "io.micronaut.http.server.tck.tests.NoBodyResponseTest", - "io.micronaut.http.server.tck.tests.ResponseStatusTest", "io.micronaut.http.server.tck.tests.hateoas.VndErrorTest" }) @SuiteDisplayName("HTTP Server TCK for Function AWS API Gateway Proxy v2 Event model") diff --git a/test-suite-http-server-tck-function-aws-api-proxy-test/src/test/java/io/micronaut/http/server/tck/lambda/tests/MicronautLambdaHandlerHttpServerTestSuite.java b/test-suite-http-server-tck-function-aws-api-proxy-test/src/test/java/io/micronaut/http/server/tck/lambda/tests/MicronautLambdaHandlerHttpServerTestSuite.java index dbcb034341..805e205716 100644 --- a/test-suite-http-server-tck-function-aws-api-proxy-test/src/test/java/io/micronaut/http/server/tck/lambda/tests/MicronautLambdaHandlerHttpServerTestSuite.java +++ b/test-suite-http-server-tck-function-aws-api-proxy-test/src/test/java/io/micronaut/http/server/tck/lambda/tests/MicronautLambdaHandlerHttpServerTestSuite.java @@ -11,7 +11,6 @@ "io.micronaut.http.server.tck.lambda.tests" }) @ExcludeClassNamePatterns({ - "io.micronaut.http.server.tck.tests.ResponseStatusTest", "io.micronaut.http.server.tck.tests.forms.FormsSubmissionsWithListsTest", "io.micronaut.http.server.tck.tests.filter.options.OptionsFilterTest", "io.micronaut.http.server.tck.tests.LocalErrorReadingBodyTest", // Binding body different type (e.g. a String in error handler)