diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionTypeUtils.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionTypeUtils.java index 8806ddca4..b9b332d1e 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionTypeUtils.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionTypeUtils.java @@ -308,8 +308,13 @@ public final class FunctionTypeUtils { } public static boolean isOfType(Type type, Class cls) { - Class c = type instanceof ParameterizedType ? (Class) ((ParameterizedType) type).getRawType() : (Class) type; - return cls.isAssignableFrom(c); + if (type instanceof Class) { + return cls.isAssignableFrom((Class) type); + } + else if (type instanceof ParameterizedType) { + return isOfType(((ParameterizedType) type).getRawType(), cls); + } + return false; } public static boolean isMono(Type type) { diff --git a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java index 10e471472..df58f0e9f 100644 --- a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java +++ b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2019 the original author or authors. + * Copyright 2019-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -482,7 +482,7 @@ public class BeanFactoryAwareFunctionRegistryTests { @Bean public Consumer imperativeConsumer() { - return null; + return System.out::println; } @Bean