This commit is contained in:
@@ -352,10 +352,15 @@ public final class FunctionTypeUtils {
|
|||||||
type = getImmediateGenericType(type, 0);
|
type = getImmediateGenericType(type, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type instanceof ParameterizedType && !Message.class.isAssignableFrom(TypeResolver.resolveRawClass(type, null))) {
|
Class<?> resolveRawClass = FunctionTypeUtils.getRawType(type);
|
||||||
|
if (type instanceof ParameterizedType && !Message.class.isAssignableFrom(resolveRawClass)) {
|
||||||
type = getImmediateGenericType(type, 0);
|
type = getImmediateGenericType(type, 0);
|
||||||
}
|
}
|
||||||
return Message.class.isAssignableFrom(TypeResolver.resolveRawClass(type, null));
|
resolveRawClass = FunctionTypeUtils.getRawType(type);
|
||||||
|
if (resolveRawClass == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return Message.class.isAssignableFrom(resolveRawClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -17,10 +17,13 @@
|
|||||||
package org.springframework.cloud.function.context.catalog;
|
package org.springframework.cloud.function.context.catalog;
|
||||||
|
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.lang.reflect.ParameterizedType;
|
import java.lang.reflect.ParameterizedType;
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
@@ -32,8 +35,10 @@ import reactor.util.function.Tuple2;
|
|||||||
import reactor.util.function.Tuple3;
|
import reactor.util.function.Tuple3;
|
||||||
|
|
||||||
import org.springframework.cloud.function.context.FunctionType;
|
import org.springframework.cloud.function.context.FunctionType;
|
||||||
|
import org.springframework.core.MethodParameter;
|
||||||
import org.springframework.core.ParameterizedTypeReference;
|
import org.springframework.core.ParameterizedTypeReference;
|
||||||
import org.springframework.messaging.Message;
|
import org.springframework.messaging.Message;
|
||||||
|
import org.springframework.util.ReflectionUtils;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
@@ -43,7 +48,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class FunctionTypeUtilsTests {
|
public class FunctionTypeUtilsTests<T> {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFunctionTypeFrom() throws Exception {
|
public void testFunctionTypeFrom() throws Exception {
|
||||||
@@ -148,6 +153,21 @@ public class FunctionTypeUtilsTests {
|
|||||||
assertThat(FunctionTypeUtils.isTypeCollection(new ParameterizedTypeReference<Flux<Message<List<String>>>>() { }.getType())).isFalse();
|
assertThat(FunctionTypeUtils.isTypeCollection(new ParameterizedTypeReference<Flux<Message<List<String>>>>() { }.getType())).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNoNpeFromIsMessage() {
|
||||||
|
FunctionTypeUtilsTests<Date> testService = new FunctionTypeUtilsTests<>();
|
||||||
|
|
||||||
|
Method methodUnderTest =
|
||||||
|
ReflectionUtils.findMethod(testService.getClass(), "notAMessageMethod", AtomicReference.class);
|
||||||
|
MethodParameter methodParameter = MethodParameter.forExecutable(methodUnderTest, 0);
|
||||||
|
|
||||||
|
assertThat(FunctionTypeUtils.isMessage(methodParameter.getGenericParameterType())).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
void notAMessageMethod(AtomicReference<T> payload) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private static Function<String, Integer> function() {
|
private static Function<String, Integer> function() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user