diff --git a/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarListenerEndpointRegistry.java b/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarListenerEndpointRegistry.java index 2879e83c..543a09b4 100644 --- a/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarListenerEndpointRegistry.java +++ b/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarListenerEndpointRegistry.java @@ -39,7 +39,6 @@ import org.springframework.lang.Nullable; import org.springframework.pulsar.listener.AbstractPulsarMessageListenerContainer; import org.springframework.pulsar.listener.PulsarListenerContainerRegistry; import org.springframework.pulsar.listener.PulsarMessageListenerContainer; -import org.springframework.pulsar.support.EndpointHandlerMethod; import org.springframework.util.Assert; /** @@ -128,17 +127,6 @@ public class PulsarListenerEndpointRegistry implements PulsarListenerContainerRe protected PulsarMessageListenerContainer createListenerContainer(PulsarListenerEndpoint endpoint, PulsarListenerContainerFactory factory) { - - if (endpoint instanceof MethodPulsarListenerEndpoint) { - MethodPulsarListenerEndpoint mkle = (MethodPulsarListenerEndpoint) endpoint; - Object bean = mkle.getBean(); - if (bean instanceof EndpointHandlerMethod) { - EndpointHandlerMethod ehm = (EndpointHandlerMethod) bean; - ehm = new EndpointHandlerMethod(ehm.resolveBean(this.applicationContext), ehm.getMethodName()); - mkle.setBean(ehm.resolveBean(this.applicationContext)); - mkle.setMethod(ehm.getMethod()); - } - } PulsarMessageListenerContainer listenerContainer = factory.createListenerContainer(endpoint); if (listenerContainer instanceof InitializingBean) { diff --git a/spring-pulsar/src/main/java/org/springframework/pulsar/support/EndpointHandlerMethod.java b/spring-pulsar/src/main/java/org/springframework/pulsar/support/EndpointHandlerMethod.java deleted file mode 100644 index c7053369..00000000 --- a/spring-pulsar/src/main/java/org/springframework/pulsar/support/EndpointHandlerMethod.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2022 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. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.pulsar.support; - -import java.lang.reflect.Method; -import java.util.Arrays; - -import org.springframework.beans.factory.BeanCurrentlyInCreationException; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.support.RootBeanDefinition; -import org.springframework.util.Assert; -import org.springframework.util.ReflectionUtils; - -/** - * Handler method for endpoints. - * - * @author Soby Chacko - */ -public class EndpointHandlerMethod { - - private final Object beanOrClass; - - private final String methodName; - - private Object bean; - - private Method method; - - public EndpointHandlerMethod(Object beanOrClass, String methodName) { - Assert.notNull(beanOrClass, () -> "No destination bean or class provided!"); - Assert.notNull(methodName, () -> "No method name for destination bean class provided!"); - this.beanOrClass = beanOrClass; - this.methodName = methodName; - } - - public EndpointHandlerMethod(Object bean, Method method) { - Assert.notNull(bean, () -> "No bean for destination provided!"); - Assert.notNull(method, () -> "No method for destination bean class provided!"); - this.method = method; - this.bean = bean; - this.beanOrClass = bean.getClass(); - this.methodName = method.getName(); - } - - /** - * Return the method. - * @return the method. - */ - public Method getMethod() { - if (this.beanOrClass instanceof Class) { - return forClass((Class) this.beanOrClass); - } - Assert.state(this.bean != null, "Bean must be resolved before accessing its method"); - if (this.bean instanceof EndpointHandlerMethod) { - try { - return Object.class.getMethod("toString"); - } - catch (NoSuchMethodException | SecurityException e) { - } - } - return forClass(this.bean.getClass()); - } - - public String getMethodName() { - Assert.state(this.methodName != null, "Unexpected call to getMethodName()"); - return this.methodName; - } - - public Object resolveBean(BeanFactory beanFactory) { - if (this.bean instanceof EndpointHandlerMethod) { - return ((EndpointHandlerMethod) this.bean).beanOrClass; - } - if (this.bean == null) { - try { - if (this.beanOrClass instanceof Class) { - Class clazz = (Class) this.beanOrClass; - try { - this.bean = beanFactory.getBean(clazz); - } - catch (NoSuchBeanDefinitionException e) { - String beanName = clazz.getSimpleName() + "-handlerMethod"; - ((BeanDefinitionRegistry) beanFactory).registerBeanDefinition(beanName, - new RootBeanDefinition(clazz)); - this.bean = beanFactory.getBean(beanName); - } - } - else { - String beanName = (String) this.beanOrClass; - this.bean = beanFactory.getBean(beanName); - } - } - catch (BeanCurrentlyInCreationException ex) { - this.bean = this; - } - } - return this.bean; - } - - private Method forClass(Class clazz) { - if (this.method == null) { - this.method = Arrays.stream(ReflectionUtils.getDeclaredMethods(clazz)) - .filter(mthd -> mthd.getName().equals(this.methodName)).findFirst() - .orElseThrow(() -> new IllegalArgumentException( - String.format("No method %s in class %s", this.methodName, clazz))); - } - return this.method; - } - -}