Skip to content

Commit 6d7bc1f

Browse files
garyrussellartembilan
authored andcommitted
Sonar: repeated literals
* Polishing - PR Comments * GatewayParser: Restore suppress warnings; remove size from `toArray()`. * Merge conflict resolution
1 parent 444cd1e commit 6d7bc1f

File tree

38 files changed

+382
-281
lines changed

38 files changed

+382
-281
lines changed

spring-integration-core/src/main/java/org/springframework/integration/IntegrationMessageHeaderAccessor.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Map;
2424
import java.util.Set;
2525
import java.util.concurrent.atomic.AtomicInteger;
26+
import java.util.function.BiFunction;
2627

2728
import org.springframework.integration.acks.AcknowledgmentCallback;
2829
import org.springframework.lang.Nullable;
@@ -66,6 +67,9 @@ public class IntegrationMessageHeaderAccessor extends MessageHeaderAccessor {
6667

6768
public static final String ACKNOWLEDGMENT_CALLBACK = "acknowledgmentCallback";
6869

70+
private static final BiFunction<String, String, String> TYPE_VERIFY_MESSAGE_FUNCTION =
71+
(name, trailer) -> "The '" + name + trailer;
72+
6973
private Set<String> readOnlyHeaders = new HashSet<>();
7074

7175
public IntegrationMessageHeaderAccessor(@Nullable Message<?> message) {
@@ -168,22 +172,22 @@ protected void verifyType(String headerName, Object headerValue) {
168172
if (headerName != null && headerValue != null) {
169173
super.verifyType(headerName, headerValue);
170174
if (IntegrationMessageHeaderAccessor.EXPIRATION_DATE.equals(headerName)) {
171-
Assert.isTrue(headerValue instanceof Date || headerValue instanceof Long, "The '" + headerName
172-
+ "' header value must be a Date or Long.");
175+
Assert.isTrue(headerValue instanceof Date || headerValue instanceof Long,
176+
TYPE_VERIFY_MESSAGE_FUNCTION.apply(headerName, "' header value must be a Date or Long."));
173177
}
174178
else if (IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER.equals(headerName)
175179
|| IntegrationMessageHeaderAccessor.SEQUENCE_SIZE.equals(headerName)
176180
|| IntegrationMessageHeaderAccessor.PRIORITY.equals(headerName)) {
177-
Assert.isTrue(Number.class.isAssignableFrom(headerValue.getClass()), "The '" + headerName
178-
+ "' header value must be a Number.");
181+
Assert.isTrue(Number.class.isAssignableFrom(headerValue.getClass()),
182+
TYPE_VERIFY_MESSAGE_FUNCTION.apply(headerName, "' header value must be a Number."));
179183
}
180184
else if (IntegrationMessageHeaderAccessor.ROUTING_SLIP.equals(headerName)) {
181-
Assert.isTrue(Map.class.isAssignableFrom(headerValue.getClass()), "The '" + headerName
182-
+ "' header value must be a Map.");
185+
Assert.isTrue(Map.class.isAssignableFrom(headerValue.getClass()),
186+
TYPE_VERIFY_MESSAGE_FUNCTION.apply(headerName, "' header value must be a Map."));
183187
}
184188
else if (IntegrationMessageHeaderAccessor.DUPLICATE_MESSAGE.equals(headerName)) {
185-
Assert.isTrue(Boolean.class.isAssignableFrom(headerValue.getClass()), "The '" + headerName
186-
+ "' header value must be an Boolean.");
189+
Assert.isTrue(Boolean.class.isAssignableFrom(headerValue.getClass()),
190+
TYPE_VERIFY_MESSAGE_FUNCTION.apply(headerName, "' header value must be an Boolean."));
187191
}
188192
}
189193
}

spring-integration-core/src/main/java/org/springframework/integration/config/xml/EnricherParser.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
*/
4848
public class EnricherParser extends AbstractConsumerEndpointParser {
4949

50+
private static final String TYPE_ATTRIBUTE = "type";
51+
5052
@Override
5153
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
5254
final BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ContentEnricher.class);
@@ -65,8 +67,8 @@ protected BeanDefinitionBuilder parseHandler(Element element, ParserContext pars
6567
String name = subElement.getAttribute("name");
6668

6769
String value = subElement.getAttribute("value");
68-
String type = subElement.getAttribute("type");
69-
String expression = subElement.getAttribute("expression");
70+
String type = subElement.getAttribute(TYPE_ATTRIBUTE);
71+
String expression = subElement.getAttribute(EXPRESSION_ATTRIBUTE);
7072
String nullResultExpression = subElement.getAttribute("null-result-expression");
7173
boolean hasAttributeValue = StringUtils.hasText(value);
7274
boolean hasAttributeExpression = StringUtils.hasText(expression);
@@ -131,13 +133,13 @@ else if (hasAttributeExpression) {
131133
String name = subElement.getAttribute("name");
132134
String nullResultHeaderExpression = subElement.getAttribute("null-result-expression");
133135
String valueElementValue = subElement.getAttribute("value");
134-
String expressionElementValue = subElement.getAttribute("expression");
136+
String expressionElementValue = subElement.getAttribute(EXPRESSION_ATTRIBUTE);
135137
boolean hasAttributeValue = StringUtils.hasText(valueElementValue);
136138
boolean hasAttributeExpression = StringUtils.hasText(expressionElementValue);
137139
boolean hasAttributeNullResultExpression = StringUtils.hasText(nullResultHeaderExpression);
138140
if (hasAttributeValue && hasAttributeExpression) {
139141
parserContext.getReaderContext().error("Only one of '" + "value" + "' or '"
140-
+ "expression" + "' is allowed", subElement);
142+
+ EXPRESSION_ATTRIBUTE + "' is allowed", subElement);
141143
}
142144

143145
if (!hasAttributeValue && !hasAttributeExpression && !hasAttributeNullResultExpression) {
@@ -151,11 +153,12 @@ else if (hasAttributeExpression) {
151153
}
152154
else if (hasAttributeExpression) {
153155
expressionDef =
154-
IntegrationNamespaceUtils.createExpressionDefIfAttributeDefined("expression", subElement);
156+
IntegrationNamespaceUtils.createExpressionDefIfAttributeDefined(EXPRESSION_ATTRIBUTE,
157+
subElement);
155158
}
156159

157-
if (StringUtils.hasText(subElement.getAttribute("expression"))
158-
&& StringUtils.hasText(subElement.getAttribute("type"))) {
160+
if (StringUtils.hasText(subElement.getAttribute(EXPRESSION_ATTRIBUTE))
161+
&& StringUtils.hasText(subElement.getAttribute(TYPE_ATTRIBUTE))) {
159162
parserContext.getReaderContext()
160163
.warning("The use of a 'type' attribute is deprecated since 4.0 "
161164
+ "when using 'expression'", subElement);
@@ -164,8 +167,9 @@ else if (hasAttributeExpression) {
164167
BeanDefinitionBuilder valueProcessorBuilder = BeanDefinitionBuilder
165168
.genericBeanDefinition(ExpressionEvaluatingHeaderValueMessageProcessor.class)
166169
.addConstructorArgValue(expressionDef)
167-
.addConstructorArgValue(subElement.getAttribute("type"));
168-
IntegrationNamespaceUtils.setValueIfAttributeDefined(valueProcessorBuilder, subElement, "overwrite");
170+
.addConstructorArgValue(subElement.getAttribute(TYPE_ATTRIBUTE));
171+
IntegrationNamespaceUtils.setValueIfAttributeDefined(valueProcessorBuilder, subElement,
172+
"overwrite");
169173
expressions.put(name, valueProcessorBuilder.getBeanDefinition());
170174
}
171175
if (hasAttributeNullResultExpression) {
@@ -174,7 +178,7 @@ else if (hasAttributeExpression) {
174178
BeanDefinitionBuilder nullResultValueProcessorBuilder = BeanDefinitionBuilder
175179
.genericBeanDefinition(ExpressionEvaluatingHeaderValueMessageProcessor.class)
176180
.addConstructorArgValue(nullResultExpressionDefinition)
177-
.addConstructorArgValue(subElement.getAttribute("type"));
181+
.addConstructorArgValue(subElement.getAttribute(TYPE_ATTRIBUTE));
178182
IntegrationNamespaceUtils.setValueIfAttributeDefined(nullResultValueProcessorBuilder, subElement,
179183
"overwrite");
180184
nullResultHeaderExpressions.put(name, nullResultValueProcessorBuilder.getBeanDefinition());

spring-integration-core/src/main/java/org/springframework/integration/config/xml/GatewayParser.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ public BeanDefinition parse(final Element element, ParserContext parserContext)
5656
boolean isNested = parserContext.isNested();
5757

5858
final Map<String, Object> gatewayAttributes = new HashMap<String, Object>();
59-
gatewayAttributes.put("name", element.getAttribute(AbstractBeanDefinitionParser.ID_ATTRIBUTE));
59+
gatewayAttributes.put(AbstractBeanDefinitionParser.NAME_ATTRIBUTE,
60+
element.getAttribute(AbstractBeanDefinitionParser.ID_ATTRIBUTE));
6061
gatewayAttributes.put("defaultPayloadExpression", element.getAttribute("default-payload-expression"));
6162
gatewayAttributes.put("defaultRequestChannel",
6263
element.getAttribute(isNested ? "request-channel" : "default-request-channel"));
@@ -84,19 +85,20 @@ public BeanDefinition parse(final Element element, ParserContext parserContext)
8485
List<Map<String, Object>> headers = new ArrayList<Map<String, Object>>(headerElements.size());
8586
for (Element e : headerElements) {
8687
Map<String, Object> header = new HashMap<String, Object>();
87-
header.put("name", e.getAttribute("name"));
88+
header.put(AbstractBeanDefinitionParser.NAME_ATTRIBUTE,
89+
e.getAttribute(AbstractBeanDefinitionParser.NAME_ATTRIBUTE));
8890
header.put("value", e.getAttribute("value"));
8991
header.put("expression", e.getAttribute("expression"));
9092
headers.add(header);
9193
}
92-
gatewayAttributes.put("defaultHeaders", headers.toArray(new Map[headers.size()]));
94+
gatewayAttributes.put("defaultHeaders", headers.toArray(new Map[0]));
9395
}
9496

9597
List<Element> methodElements = DomUtils.getChildElementsByTagName(element, "method");
9698
if (!CollectionUtils.isEmpty(methodElements)) {
9799
Map<String, BeanDefinition> methodMetadataMap = new ManagedMap<String, BeanDefinition>();
98100
for (Element methodElement : methodElements) {
99-
String methodName = methodElement.getAttribute("name");
101+
String methodName = methodElement.getAttribute(AbstractBeanDefinitionParser.NAME_ATTRIBUTE);
100102
BeanDefinitionBuilder methodMetadataBuilder = BeanDefinitionBuilder.genericBeanDefinition(
101103
GatewayMethodMetadata.class);
102104
methodMetadataBuilder.addPropertyValue("requestChannelName",
@@ -122,7 +124,8 @@ public BeanDefinition parse(final Element element, ParserContext parserContext)
122124
.createExpressionDefinitionFromValueOrExpression("value", "expression", parserContext,
123125
headerElement, true);
124126

125-
headerExpressions.put(headerElement.getAttribute("name"), expressionDef);
127+
headerExpressions.put(headerElement.getAttribute(AbstractBeanDefinitionParser.NAME_ATTRIBUTE),
128+
expressionDef);
126129
}
127130
methodMetadataBuilder.addPropertyValue("headerExpressions", headerExpressions);
128131
}

spring-integration-core/src/main/java/org/springframework/integration/config/xml/HeaderEnricherParserSupport.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@
5555
*/
5656
public abstract class HeaderEnricherParserSupport extends AbstractTransformerParser {
5757

58+
private static final String TYPE_ATTRIBUTE = "type";
59+
5860
private static final Map<String, String[][]> cannedHeaderElementExpressions = new HashMap<>(); // NOSONAR lower case
5961

6062
private final Map<String, String> elementToNameMap = new HashMap<>();
@@ -114,14 +116,14 @@ protected void processHeaders(Element element, ManagedMap<String, Object> header
114116
else {
115117
headerName = this.elementToNameMap.get(elementName);
116118
headerType = this.elementToTypeMap.get(elementName);
117-
if (headerType != null && StringUtils.hasText(headerElement.getAttribute("type"))) {
119+
if (headerType != null && StringUtils.hasText(headerElement.getAttribute(TYPE_ATTRIBUTE))) {
118120
parserContext.getReaderContext().error("The " + elementName
119121
+ " header does not accept a 'type' attribute. The required type is ["
120122
+ headerType + "]", element);
121123
}
122124
}
123125
if (headerType == null) {
124-
headerType = headerElement.getAttribute("type");
126+
headerType = headerElement.getAttribute(TYPE_ATTRIBUTE);
125127
}
126128
if (headerName == null) {
127129
String ttlExpression = headerElement.getAttribute("time-to-live-expression");
@@ -261,7 +263,7 @@ else if (isExpression) {
261263
valueProcessorBuilder.addConstructorArgValue(headerType);
262264
}
263265
else if (isCustomBean) {
264-
if (StringUtils.hasText(headerElement.getAttribute("type"))) {
266+
if (StringUtils.hasText(headerElement.getAttribute(TYPE_ATTRIBUTE))) {
265267
parserContext.getReaderContext().error(
266268
"The 'type' attribute cannot be used with an inner bean.", element);
267269
}
@@ -280,7 +282,7 @@ else if (isCustomBean) {
280282
}
281283
}
282284
else {
283-
if (StringUtils.hasText(headerElement.getAttribute("type"))) {
285+
if (StringUtils.hasText(headerElement.getAttribute(TYPE_ATTRIBUTE))) {
284286
parserContext.getReaderContext().error(
285287
"The 'type' attribute cannot be used with the 'ref' attribute.", element);
286288
}

spring-integration-core/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ public static String createElementDescription(Element element) {
255255
public static void configurePollerMetadata(Element pollerElement, BeanDefinitionBuilder targetBuilder,
256256
ParserContext parserContext) {
257257

258-
if (pollerElement.hasAttribute("ref")) {
258+
if (pollerElement.hasAttribute(REF_ATTRIBUTE)) {
259259
int numberOfAttributes = pollerElement.getAttributes().getLength();
260260
if (numberOfAttributes != 1) {
261261
/*
@@ -273,7 +273,7 @@ public static void configurePollerMetadata(Element pollerElement, BeanDefinition
273273
parserContext.getReaderContext().error(
274274
"A 'poller' element that provides a 'ref' must have no child elements.", pollerElement);
275275
}
276-
targetBuilder.addPropertyReference("pollerMetadata", pollerElement.getAttribute("ref"));
276+
targetBuilder.addPropertyReference("pollerMetadata", pollerElement.getAttribute(REF_ATTRIBUTE));
277277
}
278278
else {
279279
BeanDefinition beanDefinition = parserContext.getDelegate().parseCustomElement(pollerElement,
@@ -519,7 +519,7 @@ public static ManagedList configureAdviceChain(Element adviceChainElement, Eleme
519519
parserContext.registerBeanComponent(new BeanComponentDefinition(holder)); // NOSONAR never null
520520
adviceChain.add(new RuntimeBeanReference(holder.getBeanName()));
521521
}
522-
else if ("ref".equals(localName)) {
522+
else if (REF_ATTRIBUTE.equals(localName)) {
523523
String ref = childElement.getAttribute("bean");
524524
adviceChain.add(new RuntimeBeanReference(ref));
525525
}

spring-integration-core/src/main/java/org/springframework/integration/config/xml/PublishingInterceptorParser.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
*/
4747
public class PublishingInterceptorParser extends AbstractBeanDefinitionParser {
4848

49+
private static final String PAYLOAD = "payload";
50+
4951
@Override
5052
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
5153
BeanDefinitionBuilder rootBuilder = BeanDefinitionBuilder.genericBeanDefinition(
@@ -54,7 +56,7 @@ protected AbstractBeanDefinition parseInternal(Element element, ParserContext pa
5456
.genericBeanDefinition(MethodNameMappingPublisherMetadataSource.class);
5557
Map<String, Map<?, ?>> mappings = this
5658
.getMappings(element, element.getAttribute("default-channel"), parserContext);
57-
spelSourceBuilder.addConstructorArgValue(mappings.get("payload"));
59+
spelSourceBuilder.addConstructorArgValue(mappings.get(PAYLOAD));
5860
if (mappings.get("headers") != null) {
5961
spelSourceBuilder.addPropertyValue("headerExpressionMap", mappings.get("headers"));
6062
}
@@ -81,8 +83,8 @@ protected AbstractBeanDefinition parseInternal(Element element, ParserContext pa
8183
// set payloadMap
8284
String methodPattern = StringUtils.hasText(mapping.getAttribute("pattern")) ?
8385
mapping.getAttribute("pattern") : "*";
84-
String payloadExpression = StringUtils.hasText(mapping.getAttribute("payload")) ?
85-
mapping.getAttribute("payload") : "#return";
86+
String payloadExpression = StringUtils.hasText(mapping.getAttribute(PAYLOAD)) ?
87+
mapping.getAttribute(PAYLOAD) : "#return";
8688
payloadExpressionMap.put(methodPattern, payloadExpression);
8789

8890
// set headersMap
@@ -125,7 +127,7 @@ protected AbstractBeanDefinition parseInternal(Element element, ParserContext pa
125127
if (payloadExpressionMap.size() == 0) {
126128
payloadExpressionMap.put("*", "#return");
127129
}
128-
interceptorMappings.put("payload", payloadExpressionMap);
130+
interceptorMappings.put(PAYLOAD, payloadExpressionMap);
129131
if (headersExpressionMap.size() > 0) {
130132
interceptorMappings.put("headers", headersExpressionMap);
131133
}

spring-integration-core/src/main/java/org/springframework/integration/config/xml/ResourceInboundChannelAdapterParser.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,28 @@
2929
* Parser for 'resource-inbound-channel-adapter'
3030
*
3131
* @author Oleg Zhurakousky
32+
* @author Gary Russell
3233
* @since 2.1
3334
*/
3435
public class ResourceInboundChannelAdapterParser extends AbstractPollingInboundChannelAdapterParser {
3536

37+
private static final String FILTER = "filter";
3638

3739
@Override
3840
protected BeanMetadataElement parseSource(Element element, ParserContext parserContext) {
3941
BeanDefinitionBuilder sourceBuilder = BeanDefinitionBuilder.genericBeanDefinition(ResourceRetrievingMessageSource.class);
4042
sourceBuilder.addConstructorArgValue(element.getAttribute("pattern"));
4143
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(sourceBuilder, element, "pattern-resolver");
42-
boolean hasFilter = element.hasAttribute("filter");
44+
boolean hasFilter = element.hasAttribute(FILTER);
4345
if (hasFilter) {
44-
String filterValue = element.getAttribute("filter");
46+
String filterValue = element.getAttribute(FILTER);
4547
if (StringUtils.hasText(filterValue)) {
46-
sourceBuilder.addPropertyReference("filter", filterValue);
48+
sourceBuilder.addPropertyReference(FILTER, filterValue);
4749
}
4850
}
4951
else {
5052
BeanDefinitionBuilder filterBuilder = BeanDefinitionBuilder.genericBeanDefinition(AcceptOnceCollectionFilter.class);
51-
sourceBuilder.addPropertyValue("filter", filterBuilder.getBeanDefinition());
53+
sourceBuilder.addPropertyValue(FILTER, filterBuilder.getBeanDefinition());
5254
}
5355
return sourceBuilder.getBeanDefinition();
5456
}

spring-integration-core/src/main/java/org/springframework/integration/core/AsyncMessagingTemplate.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
*/
3636
public class AsyncMessagingTemplate extends MessagingTemplate implements AsyncMessagingOperations {
3737

38+
private static final String UNCHECKED = "unchecked";
39+
3840
private volatile AsyncTaskExecutor executor = new SimpleAsyncTaskExecutor();
3941

4042

@@ -90,19 +92,19 @@ public Future<Message<?>> asyncReceive(final String channelName) {
9092
}
9193

9294
@Override
93-
@SuppressWarnings("unchecked")
95+
@SuppressWarnings(UNCHECKED)
9496
public <R> Future<R> asyncReceiveAndConvert() {
9597
return this.executor.submit(() -> (R) receiveAndConvert(Object.class));
9698
}
9799

98100
@Override
99-
@SuppressWarnings("unchecked")
101+
@SuppressWarnings(UNCHECKED)
100102
public <R> Future<R> asyncReceiveAndConvert(final PollableChannel channel) {
101103
return this.executor.submit(() -> (R) receiveAndConvert(channel, Object.class));
102104
}
103105

104106
@Override
105-
@SuppressWarnings("unchecked")
107+
@SuppressWarnings(UNCHECKED)
106108
public <R> Future<R> asyncReceiveAndConvert(final String channelName) {
107109
return this.executor.submit(() -> (R) receiveAndConvert(channelName, Object.class));
108110
}
@@ -123,40 +125,40 @@ public Future<Message<?>> asyncSendAndReceive(final String channelName, final Me
123125
}
124126

125127
@Override
126-
@SuppressWarnings("unchecked")
128+
@SuppressWarnings(UNCHECKED)
127129
public <R> Future<R> asyncConvertSendAndReceive(final Object request) {
128130
return this.executor.submit(() -> (R) convertSendAndReceive(request, Object.class));
129131
}
130132

131133
@Override
132-
@SuppressWarnings("unchecked")
134+
@SuppressWarnings(UNCHECKED)
133135
public <R> Future<R> asyncConvertSendAndReceive(final MessageChannel channel, final Object request) {
134136
return this.executor.submit(() -> (R) convertSendAndReceive(channel, request, Object.class));
135137
}
136138

137139
@Override
138-
@SuppressWarnings("unchecked")
140+
@SuppressWarnings(UNCHECKED)
139141
public <R> Future<R> asyncConvertSendAndReceive(final String channelName, final Object request) {
140142
return this.executor.submit(() -> (R) convertSendAndReceive(channelName, request, Object.class));
141143
}
142144

143145
@Override
144-
@SuppressWarnings("unchecked")
146+
@SuppressWarnings(UNCHECKED)
145147
public <R> Future<R> asyncConvertSendAndReceive(final Object request,
146148
final MessagePostProcessor requestPostProcessor) {
147149
return this.executor.submit(() -> (R) convertSendAndReceive(request, Object.class, requestPostProcessor));
148150
}
149151

150152
@Override
151-
@SuppressWarnings("unchecked")
153+
@SuppressWarnings(UNCHECKED)
152154
public <R> Future<R> asyncConvertSendAndReceive(final MessageChannel channel, final Object request,
153155
final MessagePostProcessor requestPostProcessor) {
154156
return this.executor
155157
.submit(() -> (R) convertSendAndReceive(channel, request, Object.class, requestPostProcessor));
156158
}
157159

158160
@Override
159-
@SuppressWarnings("unchecked")
161+
@SuppressWarnings(UNCHECKED)
160162
public <R> Future<R> asyncConvertSendAndReceive(final String channelName, final Object request,
161163
final MessagePostProcessor requestPostProcessor) {
162164
return this.executor

0 commit comments

Comments
 (0)