1
1
/*
2
- * Copyright 2014-2019 the original author or authors.
2
+ * Copyright 2014-2022 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
33
33
34
34
/**
35
35
* @author Gary Russell
36
+ * @author Artem Bilan
37
+ *
36
38
* @since 4.0
37
39
*
38
40
*/
@@ -46,16 +48,20 @@ protected AbstractBeanDefinition parseInternal(Element element, ParserContext pa
46
48
Element backOffPolicyEle = DomUtils .getChildElementByTagName (element , "fixed-back-off" );
47
49
BeanDefinitionBuilder backOffBuilder = null ;
48
50
if (backOffPolicyEle != null ) {
49
- backOffBuilder = BeanDefinitionBuilder .genericBeanDefinition (FixedBackOffPolicy .class );
50
- IntegrationNamespaceUtils .setValueIfAttributeDefined (backOffBuilder , backOffPolicyEle , "interval" , "backOffPeriod" );
51
+ backOffBuilder = BeanDefinitionBuilder .genericBeanDefinition (ParsedFixedBackOffPolicy .class );
52
+ IntegrationNamespaceUtils .setValueIfAttributeDefined (
53
+ backOffBuilder , backOffPolicyEle , "interval" , "backOffPeriodSimple" );
51
54
}
52
55
else {
53
56
backOffPolicyEle = DomUtils .getChildElementByTagName (element , "exponential-back-off" );
54
57
if (backOffPolicyEle != null ) {
55
- backOffBuilder = BeanDefinitionBuilder .genericBeanDefinition (ExponentialBackOffPolicy .class );
56
- IntegrationNamespaceUtils .setValueIfAttributeDefined (backOffBuilder , backOffPolicyEle , "initial" , "initialInterval" );
57
- IntegrationNamespaceUtils .setValueIfAttributeDefined (backOffBuilder , backOffPolicyEle , "multiplier" );
58
- IntegrationNamespaceUtils .setValueIfAttributeDefined (backOffBuilder , backOffPolicyEle , "maximum" , "maxInterval" );
58
+ backOffBuilder = BeanDefinitionBuilder .genericBeanDefinition (ParsedExponentialBackOffPolicy .class );
59
+ IntegrationNamespaceUtils .setValueIfAttributeDefined (backOffBuilder , backOffPolicyEle , "initial" ,
60
+ "initialIntervalSimple" );
61
+ IntegrationNamespaceUtils .setValueIfAttributeDefined (backOffBuilder , backOffPolicyEle ,
62
+ "multiplier" , "multiplierSimple" );
63
+ IntegrationNamespaceUtils .setValueIfAttributeDefined (backOffBuilder , backOffPolicyEle , "maximum" ,
64
+ "maxIntervalSimple" );
59
65
}
60
66
}
61
67
if (backOffBuilder != null ) {
@@ -64,8 +70,9 @@ protected AbstractBeanDefinition parseInternal(Element element, ParserContext pa
64
70
}
65
71
String maxAttemptsAttr = element .getAttribute ("max-attempts" );
66
72
if (StringUtils .hasText (maxAttemptsAttr )) {
67
- BeanDefinitionBuilder retryPolicyBuilder = BeanDefinitionBuilder .genericBeanDefinition (SimpleRetryPolicy .class );
68
- IntegrationNamespaceUtils .setValueIfAttributeDefined (retryPolicyBuilder , element , "max-attempts" );
73
+ BeanDefinitionBuilder retryPolicyBuilder =
74
+ BeanDefinitionBuilder .genericBeanDefinition (SimpleRetryPolicy .class )
75
+ .addConstructorArgValue (element .getAttribute ("max-attempts" ));
69
76
retryTemplateBuilder .addPropertyValue ("retryPolicy" , retryPolicyBuilder .getBeanDefinition ());
70
77
customTemplate = true ;
71
78
}
@@ -74,12 +81,42 @@ protected AbstractBeanDefinition parseInternal(Element element, ParserContext pa
74
81
}
75
82
String recoveryChannelAttr = element .getAttribute ("recovery-channel" );
76
83
if (StringUtils .hasText (recoveryChannelAttr )) {
77
- BeanDefinitionBuilder emsrBuilder = BeanDefinitionBuilder .genericBeanDefinition (ErrorMessageSendingRecoverer .class );
84
+ BeanDefinitionBuilder emsrBuilder =
85
+ BeanDefinitionBuilder .genericBeanDefinition (ErrorMessageSendingRecoverer .class );
78
86
emsrBuilder .addConstructorArgReference (recoveryChannelAttr );
79
87
IntegrationNamespaceUtils .setValueIfAttributeDefined (emsrBuilder , element , "send-timeout" );
80
88
builder .addPropertyValue ("recoveryCallback" , emsrBuilder .getBeanDefinition ());
81
89
}
82
90
return builder .getBeanDefinition ();
83
91
}
84
92
93
+ private static final class ParsedFixedBackOffPolicy extends FixedBackOffPolicy {
94
+
95
+ ParsedFixedBackOffPolicy () {
96
+ }
97
+
98
+ public void setBackOffPeriodSimple (long backOffPeriod ) {
99
+ setBackOffPeriod (backOffPeriod );
100
+ }
101
+
102
+ }
103
+ private static final class ParsedExponentialBackOffPolicy extends ExponentialBackOffPolicy {
104
+
105
+ ParsedExponentialBackOffPolicy () {
106
+ }
107
+
108
+ public void setInitialIntervalSimple (long initialInterval ) {
109
+ setInitialInterval (initialInterval );
110
+ }
111
+
112
+ public void setMultiplierSimple (double multiplier ) {
113
+ setMultiplier (multiplier );
114
+ }
115
+
116
+ public void setMaxIntervalSimple (long maxInterval ) {
117
+ setMaxInterval (maxInterval );
118
+ }
119
+
120
+ }
121
+
85
122
}
0 commit comments