diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/actuator/FunctionsEndpoint.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/actuator/FunctionsEndpoint.java index 69135d46c..008a969db 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/actuator/FunctionsEndpoint.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/actuator/FunctionsEndpoint.java @@ -24,6 +24,7 @@ import java.util.TreeMap; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.cloud.function.context.FunctionCatalog; +import org.springframework.cloud.function.context.catalog.FunctionTypeUtils; import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper; /** @@ -51,20 +52,30 @@ public class FunctionsEndpoint { Map functionMap = new LinkedHashMap<>(); if (function.isFunction()) { functionMap.put("type", "FUNCTION"); - functionMap.put("input-type", function.getInputType().toString()); - functionMap.put("output-type", function.getOutputType().toString()); + functionMap.put("input-type", this.toSimplePolyIn(function)); + functionMap.put("output-type", this.toSimplePolyOut(function)); } else if (function.isConsumer()) { functionMap.put("type", "CONSUMER"); - functionMap.put("input-type", function.getInputType().toString()); + functionMap.put("input-type", this.toSimplePolyIn(function)); } else { functionMap.put("type", "SUPPLIER"); - functionMap.put("output-type", function.getOutputType().toString()); + functionMap.put("output-type", this.toSimplePolyOut(function)); } allFunctions.put(name, functionMap); } + + return allFunctions; } + + private String toSimplePolyOut(FunctionInvocationWrapper function) { + return FunctionTypeUtils.getRawType(function.getItemType(function.getOutputType())).getSimpleName().toLowerCase(); + } + + private String toSimplePolyIn(FunctionInvocationWrapper function) { + return FunctionTypeUtils.getRawType(function.getItemType(function.getInputType())).getSimpleName().toLowerCase(); + } } diff --git a/spring-cloud-function-samples/function-sample/src/main/java/com/example/SampleApplication.java b/spring-cloud-function-samples/function-sample/src/main/java/com/example/SampleApplication.java index 54f2e9dc6..4fb75cf8c 100644 --- a/spring-cloud-function-samples/function-sample/src/main/java/com/example/SampleApplication.java +++ b/spring-cloud-function-samples/function-sample/src/main/java/com/example/SampleApplication.java @@ -40,8 +40,8 @@ public class SampleApplication { } @Bean - public Function, String> uppercaseMessage() { - return value -> value.getPayload().toUpperCase(); + public Function, Integer> uppercaseMessage() { + return value -> value.getPayload().toUpperCase().length(); } @Bean