diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java index b83b94c40..fd194bac0 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java @@ -152,11 +152,6 @@ public T lookup(Class type, String functionDefinition, String... expected if (functionCandidate != null) { Type functionType = null; FunctionRegistration functionRegistration = null; - System.out.println("\n=======> " + functionCandidate.getClass().getSuperclass()); - Annotation[] a = functionCandidate.getClass().getDeclaredAnnotations(); - for (int i = 0; i < a.length; i++) { - System.out.println("===> KOTLIN ANNOTATION: " + a[i]); - } if (functionCandidate instanceof FunctionRegistration) { functionRegistration = (FunctionRegistration) functionCandidate; @@ -164,7 +159,8 @@ public T lookup(Class type, String functionDefinition, String... expected else if (functionCandidate instanceof BiFunction || functionCandidate instanceof BiConsumer) { functionRegistration = this.registerMessagingBiFunction(functionCandidate, functionName); } - else if (KotlinDetector.isKotlinType(functionCandidate.getClass())) { + //else if (KotlinDetector.isKotlinType(functionCandidate.getClass())) { + else if (this.isKotlinType(functionCandidate)) { KotlinLambdaToFunctionAutoConfiguration.KotlinFunctionWrapper wrapper = new KotlinLambdaToFunctionAutoConfiguration.KotlinFunctionWrapper(functionCandidate); wrapper.setName(functionName); @@ -203,6 +199,16 @@ else if (this.isSpecialFunctionRegistration(functionNames, functionName)) { return (T) function; } + private boolean isKotlinType(Object functionCandidate) { + Annotation[] a = functionCandidate.getClass().getDeclaredAnnotations(); + for (int i = 0; i < a.length; i++) { + if (a[i].annotationType().getName().contains("kotlin.")) { + return true; + } + } + return false; + } + @SuppressWarnings({ "rawtypes", "unchecked" }) private FunctionRegistration registerMessagingBiFunction(Object userFunction, String functionName) { Type biFunctionType = FunctionContextUtils.findType(this.applicationContext.getBeanFactory(), functionName);