diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionInspector.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionInspector.java index 3787caaca..62627f395 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionInspector.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionInspector.java @@ -20,7 +20,6 @@ import java.util.Collections; import java.util.Set; import org.springframework.cloud.function.context.FunctionRegistration; -import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper; import org.springframework.cloud.function.context.config.RoutingFunction; /** @@ -33,9 +32,12 @@ public interface FunctionInspector { default boolean isMessage(Object function) { FunctionRegistration registration = getRegistration(function); - if (registration != null && registration.getTarget() instanceof FunctionInvocationWrapper - && ((FunctionInvocationWrapper) registration.getTarget()).getTarget() instanceof RoutingFunction) { - // we always want to give routing function as much information as possible +// if (registration != null && registration.getTarget() instanceof FunctionInvocationWrapper +// && ((FunctionInvocationWrapper) registration.getTarget()).getTarget() instanceof RoutingFunction) { +// // we always want to give routing function as much information as possible +// return true; +// } + if (registration != null && registration.getTarget() instanceof RoutingFunction) { return true; } return registration == null ? false : registration.getType().isMessage(); 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 2c8c0c9d0..86e93fec1 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 @@ -456,7 +456,10 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect if (this.delegate != null) { return this.delegate.hashCode(); } - return super.hashCode(); + else { + return this.target.hashCode(); + } + //return super.hashCode(); } @Override @@ -464,7 +467,10 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect if (this.delegate != null) { return this.delegate.equals(o); } - return super.equals(o); + else { + return this.target.equals(o); + } +// return super.equals(o); } public String getFunctionDefinition() { diff --git a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/mvc/RoutingFunctionTests.java b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/mvc/RoutingFunctionTests.java index 9df178778..992137501 100644 --- a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/mvc/RoutingFunctionTests.java +++ b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/mvc/RoutingFunctionTests.java @@ -89,6 +89,12 @@ public class RoutingFunctionTests { .contentType(MediaType.TEXT_PLAIN) .header("spring.cloud.function.definition", "echo") .body("{\"name\":\"Bob\",\"age\":25}"), String.class); + postForEntity = this.rest + .exchange(RequestEntity.post(new URI("/functions/" + RoutingFunction.FUNCTION_NAME)) + .contentType(MediaType.TEXT_PLAIN) + .header("spring.cloud.function.definition", "echo") + .body("{\"name\":\"Bob\",\"age\":25}"), String.class); + assertThat(postForEntity.getBody()).isEqualTo("{\"name\":\"Bob\",\"age\":25}"); assertThat(postForEntity.getStatusCode()).isEqualTo(HttpStatus.OK); }