From 0ef707a76c9148dc79a651b1c6de6ecce3262396 Mon Sep 17 00:00:00 2001 From: Deepankar Dixit Date: Wed, 25 May 2022 17:13:00 -0400 Subject: [PATCH] working on comments --- .../function/adapter/gcp/FunctionInvoker.java | 22 +-- .../adapter/gcp/FunctionInvokerHttpTests.java | 130 ++++++++++++------ 2 files changed, 98 insertions(+), 54 deletions(-) diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcp/FunctionInvoker.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcp/FunctionInvoker.java index 7d50ae084..8af860512 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcp/FunctionInvoker.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcp/FunctionInvoker.java @@ -19,9 +19,9 @@ package org.springframework.cloud.function.adapter.gcp; import java.io.BufferedReader; import java.nio.charset.StandardCharsets; import java.util.Collection; -import java.util.Iterator; import java.util.Map.Entry; import java.util.function.Function; +import java.util.stream.Collectors; import com.google.cloud.functions.Context; import com.google.cloud.functions.HttpFunction; @@ -54,6 +54,11 @@ public class FunctionInvoker extends AbstractSpringFunctionAdapterInitializer, Message> function = lookupFunction(); Message message = getInputType() == Void.class || getInputType() == null ? null @@ -110,14 +113,8 @@ public class FunctionInvoker extends AbstractSpringFunctionAdapterInitializer header : headers.entrySet()) { Object values = header.getValue(); if (values instanceof Collection) { - StringBuilder sb = new StringBuilder(); - for (Iterator iterator = ((Collection) values).iterator(); iterator.hasNext();) { - sb.append(iterator.next()); - if (iterator.hasNext()) { - sb.append(","); - } - } - httpResponse.appendHeader(header.getKey(), sb.toString()); + String headerValue = ((Collection) values).stream().map(item -> item.toString()).collect(Collectors.joining(",")); + httpResponse.appendHeader(header.getKey(), headerValue); } else { httpResponse.appendHeader(header.getKey(), header.getValue().toString()); @@ -128,6 +125,9 @@ public class FunctionInvoker extends AbstractSpringFunctionAdapterInitializer void testHttpFunction(Class configurationClass, I input, O expectedOutput, boolean statusCodeCheck, boolean multiHeaderCheck) throws Exception { - try (FunctionInvoker handler = new FunctionInvoker(configurationClass);) { - - HttpRequest request = Mockito.mock(HttpRequest.class); - - if (input != null) { - when(request.getReader()).thenReturn(new BufferedReader(new StringReader(gson.toJson(input)))); - } - - HttpResponse response = Mockito.mock(HttpResponse.class); - StringWriter writer = new StringWriter(); - - BufferedWriter bufferedWriter = new BufferedWriter(writer); - when(response.getWriter()).thenReturn(bufferedWriter); - handler.service(request, response); - - if (statusCodeCheck) { - verify(response).setStatusCode(404); - } - - if (multiHeaderCheck) { - verify(response).appendHeader("multiValueHeader", "123,headerThing"); - } - - // Closing the writer is done by the Framework/caller. - bufferedWriter.close(); - - if (expectedOutput != null) { - assertThat(writer.toString()).isEqualTo(gson.toJson(expectedOutput)); - } - } + verify(response).appendHeader("multiValueHeader", "123,headerThing"); } @Configuration @@ -133,7 +177,7 @@ public class FunctionInvokerHttpTests { @Configuration @Import({ ContextFunctionCatalogAutoConfiguration.class }) - protected static class statusCodeSupplier { + protected static class StatusCodeSupplier { @Bean public Function> function() { @@ -150,7 +194,7 @@ public class FunctionInvokerHttpTests { @Configuration @Import({ ContextFunctionCatalogAutoConfiguration.class }) - protected static class multiValueHeaderSupplier { + protected static class MultiValueHeaderSupplier { @Bean public Function> function() { @@ -197,7 +241,7 @@ public class FunctionInvokerHttpTests { @Bean public Consumer function() { - return (in) -> System.out.println("Thank you for sending the message: " + in.message); + return (in) -> System.out.print("Thank you for sending the message: " + in.message); } }