Fix deprecations according latest SF
This commit is contained in:
committed by
Gary Russell
parent
572dc0ec14
commit
56c4458150
@@ -44,6 +44,8 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||
import org.springframework.core.annotation.AnnotatedElementUtils;
|
||||
import org.springframework.core.annotation.AnnotationUtils;
|
||||
import org.springframework.core.annotation.MergedAnnotation;
|
||||
import org.springframework.core.annotation.MergedAnnotations;
|
||||
import org.springframework.integration.annotation.Aggregator;
|
||||
import org.springframework.integration.annotation.BridgeFrom;
|
||||
import org.springframework.integration.annotation.BridgeTo;
|
||||
@@ -263,18 +265,17 @@ public class MessagingAnnotationPostProcessor implements BeanPostProcessor, Bean
|
||||
* @return the hierarchical list of annotations in top-bottom order.
|
||||
*/
|
||||
protected List<Annotation> getAnnotationChain(Method method, Class<? extends Annotation> annotationType) {
|
||||
Annotation[] annotations = AnnotationUtils.getAnnotations(method);
|
||||
List<Annotation> annotationChain = new LinkedList<>();
|
||||
if (annotations != null) {
|
||||
Set<Annotation> visited = new HashSet<>();
|
||||
for (Annotation ann : annotations) {
|
||||
recursiveFindAnnotation(annotationType, ann, annotationChain, visited);
|
||||
if (annotationChain.size() > 0) {
|
||||
Collections.reverse(annotationChain);
|
||||
return annotationChain;
|
||||
}
|
||||
Set<Annotation> visited = new HashSet<>();
|
||||
|
||||
for (MergedAnnotation<Annotation> mergedAnnotation : MergedAnnotations.from(method)) {
|
||||
recursiveFindAnnotation(annotationType, mergedAnnotation.synthesize(), annotationChain, visited);
|
||||
if (annotationChain.size() > 0) {
|
||||
Collections.reverse(annotationChain);
|
||||
return annotationChain;
|
||||
}
|
||||
}
|
||||
|
||||
return annotationChain;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,11 +16,19 @@
|
||||
|
||||
package org.springframework.integration.monitor;
|
||||
|
||||
import org.springframework.beans.annotation.AnnotationBeanUtils;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.beans.MutablePropertyValues;
|
||||
import org.springframework.beans.PropertyAccessorFactory;
|
||||
import org.springframework.beans.PropertyValue;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.beans.factory.config.EmbeddedValueResolver;
|
||||
import org.springframework.core.annotation.AnnotationUtils;
|
||||
import org.springframework.core.annotation.MergedAnnotation;
|
||||
import org.springframework.core.annotation.MergedAnnotations;
|
||||
import org.springframework.integration.support.management.IntegrationManagedResource;
|
||||
import org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource;
|
||||
import org.springframework.jmx.export.metadata.InvalidMetadataException;
|
||||
@@ -33,16 +41,13 @@ import org.springframework.util.StringValueResolver;
|
||||
*
|
||||
* @author Gary Russell
|
||||
* @author Artem Bilan
|
||||
*
|
||||
* @since 4.3
|
||||
*/
|
||||
public class IntegrationJmxAttributeSource extends AnnotationJmxAttributeSource {
|
||||
|
||||
private StringValueResolver valueResolver;
|
||||
|
||||
public void setValueResolver(StringValueResolver valueResolver) {
|
||||
this.valueResolver = valueResolver;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBeanFactory(BeanFactory beanFactory) {
|
||||
super.setBeanFactory(beanFactory);
|
||||
@@ -53,13 +58,34 @@ public class IntegrationJmxAttributeSource extends AnnotationJmxAttributeSource
|
||||
|
||||
@Override
|
||||
public ManagedResource getManagedResource(Class<?> beanClass) throws InvalidMetadataException {
|
||||
IntegrationManagedResource ann = AnnotationUtils.getAnnotation(beanClass, IntegrationManagedResource.class);
|
||||
if (ann == null) {
|
||||
MergedAnnotation<IntegrationManagedResource> ann =
|
||||
MergedAnnotations.from(beanClass, MergedAnnotations.SearchStrategy.EXHAUSTIVE)
|
||||
.get(IntegrationManagedResource.class)
|
||||
.withNonMergedAttributes();
|
||||
if (!ann.isPresent()) {
|
||||
return null;
|
||||
}
|
||||
ManagedResource managedResource = new ManagedResource();
|
||||
AnnotationBeanUtils.copyPropertiesToBean(ann, managedResource, this.valueResolver);
|
||||
return managedResource;
|
||||
Class<?> declaringClass = (Class<?>) ann.getSource();
|
||||
Class<?> target = (declaringClass != null && !declaringClass.isInterface() ? declaringClass : beanClass);
|
||||
if (!Modifier.isPublic(target.getModifiers())) {
|
||||
throw new InvalidMetadataException("@IntegrationManagedResource class '" + target.getName() +
|
||||
"' must be public");
|
||||
}
|
||||
|
||||
ManagedResource bean = new ManagedResource();
|
||||
Map<String, Object> map = ann.asMap();
|
||||
List<PropertyValue> list = new ArrayList<>(map.size());
|
||||
map.forEach((attrName, attrValue) -> {
|
||||
if (!"value".equals(attrName)) {
|
||||
Object value = attrValue;
|
||||
if (this.valueResolver != null && value instanceof String) {
|
||||
value = this.valueResolver.resolveStringValue((String) value);
|
||||
}
|
||||
list.add(new PropertyValue(attrName, value));
|
||||
}
|
||||
});
|
||||
PropertyAccessorFactory.forBeanPropertyAccess(bean).setPropertyValues(new MutablePropertyValues(list));
|
||||
return bean;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -37,10 +37,10 @@ import javax.management.modelmbean.ModelMBean;
|
||||
import org.springframework.aop.TargetSource;
|
||||
import org.springframework.aop.framework.Advised;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.EmbeddedValueResolverAware;
|
||||
import org.springframework.context.Lifecycle;
|
||||
import org.springframework.integration.channel.QueueChannel;
|
||||
import org.springframework.integration.config.IntegrationManagementConfigurer;
|
||||
@@ -84,7 +84,6 @@ import org.springframework.messaging.MessageChannel;
|
||||
import org.springframework.messaging.MessageHandler;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
import org.springframework.util.StringValueResolver;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -115,8 +114,8 @@ import org.springframework.util.StringValueResolver;
|
||||
* @author Meherzad Lahewala
|
||||
*/
|
||||
@ManagedResource
|
||||
public class IntegrationMBeanExporter extends MBeanExporter implements ApplicationContextAware,
|
||||
EmbeddedValueResolverAware, DestructionAwareBeanPostProcessor {
|
||||
public class IntegrationMBeanExporter extends MBeanExporter
|
||||
implements ApplicationContextAware, DestructionAwareBeanPostProcessor {
|
||||
|
||||
private static final String SI_PACKAGE = "org.springframework.integration";
|
||||
|
||||
@@ -217,8 +216,9 @@ public class IntegrationMBeanExporter extends MBeanExporter implements Applicati
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEmbeddedValueResolver(StringValueResolver resolver) {
|
||||
this.attributeSource.setValueResolver(resolver);
|
||||
public void setBeanFactory(BeanFactory beanFactory) {
|
||||
super.setBeanFactory(beanFactory);
|
||||
this.attributeSource.setBeanFactory(beanFactory);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user