use of com.haulmont.cuba.core.sys.CubaDefaultListableBeanFactory in project cuba by cuba-platform.
the class AbstractBeansMetadata method getAvailableMethods.
protected List<MethodInfo> getAvailableMethods(String beanName) {
List<MethodInfo> methods = new ArrayList<>();
try {
AutowireCapableBeanFactory beanFactory = AppContext.getApplicationContext().getAutowireCapableBeanFactory();
if (beanFactory instanceof CubaDefaultListableBeanFactory) {
BeanDefinition beanDefinition = ((CubaDefaultListableBeanFactory) beanFactory).getBeanDefinition(beanName);
if (beanDefinition.isAbstract())
return methods;
}
Object bean = AppBeans.get(beanName);
@SuppressWarnings("unchecked") List<Class> classes = ClassUtils.getAllInterfaces(bean.getClass());
for (Class aClass : classes) {
if (aClass.getName().startsWith("org.springframework."))
continue;
Class<?> targetClass = bean instanceof TargetClassAware ? ((TargetClassAware) bean).getTargetClass() : bean.getClass();
for (Method method : aClass.getMethods()) {
if (isMethodAvailable(method)) {
Method targetClassMethod = targetClass.getMethod(method.getName(), method.getParameterTypes());
List<MethodParameterInfo> methodParameters = getMethodParameters(targetClassMethod);
MethodInfo methodInfo = new MethodInfo(method.getName(), methodParameters);
addMethod(methods, methodInfo);
}
}
if (methods.isEmpty()) {
for (Method method : bean.getClass().getMethods()) {
if (!method.getDeclaringClass().equals(Object.class) && isMethodAvailable(method)) {
List<MethodParameterInfo> methodParameters = getMethodParameters(method);
MethodInfo methodInfo = new MethodInfo(method.getName(), methodParameters);
addMethod(methods, methodInfo);
}
}
}
}
} catch (Throwable t) {
log.debug(t.getMessage());
}
return methods;
}
Aggregations