GH-578 Fix FunctionRegistration lookup

The root of the issue was in implementation of  equals() and hashCode() of FunctionInvocationWrapper

Resolves #578
This commit is contained in:
Oleg Zhurakousky
2020-09-21 15:22:21 +02:00
parent 6df15f8a8a
commit 8a87f08525
3 changed files with 22 additions and 4 deletions

View File

@@ -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();

View File

@@ -427,6 +427,16 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect
this.headersField.setAccessible(true);
}
@Override
public int hashCode() {
return this.target.hashCode();
}
@Override
public boolean equals(Object o) {
return this.target.equals(o);
}
public String getFunctionDefinition() {
return this.functionDefinition;
}