Skip to content

Commit 56c4458

Browse files
artembilangaryrussell
authored andcommitted
Fix deprecations according latest SF
1 parent 572dc0e commit 56c4458

File tree

3 files changed

+53
-26
lines changed

3 files changed

+53
-26
lines changed

spring-integration-core/src/main/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessor.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
4545
import org.springframework.core.annotation.AnnotatedElementUtils;
4646
import org.springframework.core.annotation.AnnotationUtils;
47+
import org.springframework.core.annotation.MergedAnnotation;
48+
import org.springframework.core.annotation.MergedAnnotations;
4749
import org.springframework.integration.annotation.Aggregator;
4850
import org.springframework.integration.annotation.BridgeFrom;
4951
import org.springframework.integration.annotation.BridgeTo;
@@ -263,18 +265,17 @@ private void postProcessMethodAndRegisterEndpointIfAny(Object bean, String beanN
263265
* @return the hierarchical list of annotations in top-bottom order.
264266
*/
265267
protected List<Annotation> getAnnotationChain(Method method, Class<? extends Annotation> annotationType) {
266-
Annotation[] annotations = AnnotationUtils.getAnnotations(method);
267268
List<Annotation> annotationChain = new LinkedList<>();
268-
if (annotations != null) {
269-
Set<Annotation> visited = new HashSet<>();
270-
for (Annotation ann : annotations) {
271-
recursiveFindAnnotation(annotationType, ann, annotationChain, visited);
272-
if (annotationChain.size() > 0) {
273-
Collections.reverse(annotationChain);
274-
return annotationChain;
275-
}
269+
Set<Annotation> visited = new HashSet<>();
270+
271+
for (MergedAnnotation<Annotation> mergedAnnotation : MergedAnnotations.from(method)) {
272+
recursiveFindAnnotation(annotationType, mergedAnnotation.synthesize(), annotationChain, visited);
273+
if (annotationChain.size() > 0) {
274+
Collections.reverse(annotationChain);
275+
return annotationChain;
276276
}
277277
}
278+
278279
return annotationChain;
279280
}
280281

spring-integration-jmx/src/main/java/org/springframework/integration/monitor/IntegrationJmxAttributeSource.java

+37-11
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,19 @@
1616

1717
package org.springframework.integration.monitor;
1818

19-
import org.springframework.beans.annotation.AnnotationBeanUtils;
19+
import java.lang.reflect.Modifier;
20+
import java.util.ArrayList;
21+
import java.util.List;
22+
import java.util.Map;
23+
24+
import org.springframework.beans.MutablePropertyValues;
25+
import org.springframework.beans.PropertyAccessorFactory;
26+
import org.springframework.beans.PropertyValue;
2027
import org.springframework.beans.factory.BeanFactory;
2128
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
2229
import org.springframework.beans.factory.config.EmbeddedValueResolver;
23-
import org.springframework.core.annotation.AnnotationUtils;
30+
import org.springframework.core.annotation.MergedAnnotation;
31+
import org.springframework.core.annotation.MergedAnnotations;
2432
import org.springframework.integration.support.management.IntegrationManagedResource;
2533
import org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource;
2634
import org.springframework.jmx.export.metadata.InvalidMetadataException;
@@ -33,16 +41,13 @@
3341
*
3442
* @author Gary Russell
3543
* @author Artem Bilan
44+
*
3645
* @since 4.3
3746
*/
3847
public class IntegrationJmxAttributeSource extends AnnotationJmxAttributeSource {
3948

4049
private StringValueResolver valueResolver;
4150

42-
public void setValueResolver(StringValueResolver valueResolver) {
43-
this.valueResolver = valueResolver;
44-
}
45-
4651
@Override
4752
public void setBeanFactory(BeanFactory beanFactory) {
4853
super.setBeanFactory(beanFactory);
@@ -53,13 +58,34 @@ public void setBeanFactory(BeanFactory beanFactory) {
5358

5459
@Override
5560
public ManagedResource getManagedResource(Class<?> beanClass) throws InvalidMetadataException {
56-
IntegrationManagedResource ann = AnnotationUtils.getAnnotation(beanClass, IntegrationManagedResource.class);
57-
if (ann == null) {
61+
MergedAnnotation<IntegrationManagedResource> ann =
62+
MergedAnnotations.from(beanClass, MergedAnnotations.SearchStrategy.EXHAUSTIVE)
63+
.get(IntegrationManagedResource.class)
64+
.withNonMergedAttributes();
65+
if (!ann.isPresent()) {
5866
return null;
5967
}
60-
ManagedResource managedResource = new ManagedResource();
61-
AnnotationBeanUtils.copyPropertiesToBean(ann, managedResource, this.valueResolver);
62-
return managedResource;
68+
Class<?> declaringClass = (Class<?>) ann.getSource();
69+
Class<?> target = (declaringClass != null && !declaringClass.isInterface() ? declaringClass : beanClass);
70+
if (!Modifier.isPublic(target.getModifiers())) {
71+
throw new InvalidMetadataException("@IntegrationManagedResource class '" + target.getName() +
72+
"' must be public");
73+
}
74+
75+
ManagedResource bean = new ManagedResource();
76+
Map<String, Object> map = ann.asMap();
77+
List<PropertyValue> list = new ArrayList<>(map.size());
78+
map.forEach((attrName, attrValue) -> {
79+
if (!"value".equals(attrName)) {
80+
Object value = attrValue;
81+
if (this.valueResolver != null && value instanceof String) {
82+
value = this.valueResolver.resolveStringValue((String) value);
83+
}
84+
list.add(new PropertyValue(attrName, value));
85+
}
86+
});
87+
PropertyAccessorFactory.forBeanPropertyAccess(bean).setPropertyValues(new MutablePropertyValues(list));
88+
return bean;
6389
}
6490

6591
}

spring-integration-jmx/src/main/java/org/springframework/integration/monitor/IntegrationMBeanExporter.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@
3737
import org.springframework.aop.TargetSource;
3838
import org.springframework.aop.framework.Advised;
3939
import org.springframework.beans.BeansException;
40+
import org.springframework.beans.factory.BeanFactory;
4041
import org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor;
4142
import org.springframework.context.ApplicationContext;
4243
import org.springframework.context.ApplicationContextAware;
43-
import org.springframework.context.EmbeddedValueResolverAware;
4444
import org.springframework.context.Lifecycle;
4545
import org.springframework.integration.channel.QueueChannel;
4646
import org.springframework.integration.config.IntegrationManagementConfigurer;
@@ -84,7 +84,6 @@
8484
import org.springframework.messaging.MessageHandler;
8585
import org.springframework.util.Assert;
8686
import org.springframework.util.ReflectionUtils;
87-
import org.springframework.util.StringValueResolver;
8887

8988
/**
9089
* <p>
@@ -115,8 +114,8 @@
115114
* @author Meherzad Lahewala
116115
*/
117116
@ManagedResource
118-
public class IntegrationMBeanExporter extends MBeanExporter implements ApplicationContextAware,
119-
EmbeddedValueResolverAware, DestructionAwareBeanPostProcessor {
117+
public class IntegrationMBeanExporter extends MBeanExporter
118+
implements ApplicationContextAware, DestructionAwareBeanPostProcessor {
120119

121120
private static final String SI_PACKAGE = "org.springframework.integration";
122121

@@ -217,8 +216,9 @@ public void setApplicationContext(ApplicationContext applicationContext)
217216
}
218217

219218
@Override
220-
public void setEmbeddedValueResolver(StringValueResolver resolver) {
221-
this.attributeSource.setValueResolver(resolver);
219+
public void setBeanFactory(BeanFactory beanFactory) {
220+
super.setBeanFactory(beanFactory);
221+
this.attributeSource.setBeanFactory(beanFactory);
222222
}
223223

224224
@Override

0 commit comments

Comments
 (0)