Fix some Sonar smells
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -51,9 +51,11 @@ import org.springframework.util.StringUtils;
|
||||
* @author Mark Fisher
|
||||
* @author Diego Belfer
|
||||
* @author Gary Russell
|
||||
* @author Artem Bilan
|
||||
*
|
||||
* @since 1.0.3
|
||||
*/
|
||||
@SuppressWarnings({"unchecked"})
|
||||
@SuppressWarnings({ "unchecked" })
|
||||
class OrderedAwareCopyOnWriteArraySet<E> implements Set<E> {
|
||||
|
||||
private final OrderComparator comparator = new OrderComparator();
|
||||
@@ -69,7 +71,7 @@ class OrderedAwareCopyOnWriteArraySet<E> implements Set<E> {
|
||||
private final Set<E> unmodifiableElements;
|
||||
|
||||
OrderedAwareCopyOnWriteArraySet() {
|
||||
this.elements = new CopyOnWriteArraySet<E>();
|
||||
this.elements = new CopyOnWriteArraySet<>();
|
||||
this.unmodifiableElements = Collections.unmodifiableSet(this.elements);
|
||||
}
|
||||
|
||||
@@ -87,14 +89,12 @@ class OrderedAwareCopyOnWriteArraySet<E> implements Set<E> {
|
||||
Assert.notNull(o, "Can not add NULL object");
|
||||
this.writeLock.lock();
|
||||
try {
|
||||
boolean present = false;
|
||||
if (o instanceof Ordered) {
|
||||
present = this.addOrderedElement((Ordered) o);
|
||||
return addOrderedElement((Ordered) o);
|
||||
}
|
||||
else {
|
||||
present = this.elements.add(o);
|
||||
return this.elements.add(o);
|
||||
}
|
||||
return present;
|
||||
}
|
||||
finally {
|
||||
this.writeLock.unlock();
|
||||
@@ -110,7 +110,7 @@ class OrderedAwareCopyOnWriteArraySet<E> implements Set<E> {
|
||||
this.writeLock.lock();
|
||||
try {
|
||||
for (E object : c) {
|
||||
this.add(object);
|
||||
add(object);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -119,25 +119,17 @@ class OrderedAwareCopyOnWriteArraySet<E> implements Set<E> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
this.writeLock.lock();
|
||||
try {
|
||||
boolean removed = this.elements.remove(o);
|
||||
//unmodifiableElements = Collections.unmodifiableSet(this);
|
||||
return removed;
|
||||
return this.elements.remove(o);
|
||||
}
|
||||
finally {
|
||||
this.writeLock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean removeAll(Collection<?> c) {
|
||||
if (CollectionUtils.isEmpty(c)) {
|
||||
|
||||
@@ -347,48 +347,54 @@ public class DelayHandler extends AbstractReplyProducingMessageHandler implement
|
||||
}
|
||||
|
||||
private long determineDelayForMessage(Message<?> message) {
|
||||
if (this.delayExpression != null) {
|
||||
return determineDelayFromExpression(message);
|
||||
}
|
||||
else {
|
||||
return defaultDelay;
|
||||
}
|
||||
}
|
||||
|
||||
private long determineDelayFromExpression(Message<?> message) {
|
||||
long delay = this.defaultDelay;
|
||||
DelayedMessageWrapper delayedMessageWrapper = null;
|
||||
if (message.getPayload() instanceof DelayedMessageWrapper) {
|
||||
delayedMessageWrapper = (DelayedMessageWrapper) message.getPayload();
|
||||
}
|
||||
|
||||
long delay = this.defaultDelay;
|
||||
if (this.delayExpression != null) {
|
||||
Exception delayValueException = null;
|
||||
Object delayValue = null;
|
||||
Exception delayValueException = null;
|
||||
Object delayValue = null;
|
||||
try {
|
||||
delayValue = this.delayExpression.getValue(this.evaluationContext,
|
||||
delayedMessageWrapper != null ? delayedMessageWrapper.getOriginal() : message);
|
||||
}
|
||||
catch (EvaluationException e) {
|
||||
delayValueException = e;
|
||||
}
|
||||
if (delayValue instanceof Date) {
|
||||
long current = delayedMessageWrapper != null
|
||||
? delayedMessageWrapper.getRequestDate()
|
||||
: System.currentTimeMillis();
|
||||
delay = ((Date) delayValue).getTime() - current;
|
||||
}
|
||||
else if (delayValue != null) {
|
||||
try {
|
||||
delayValue = this.delayExpression.getValue(this.evaluationContext,
|
||||
delayedMessageWrapper != null ? delayedMessageWrapper.getOriginal() : message);
|
||||
delay = Long.parseLong(delayValue.toString());
|
||||
}
|
||||
catch (EvaluationException e) {
|
||||
catch (NumberFormatException e) {
|
||||
delayValueException = e;
|
||||
}
|
||||
if (delayValue instanceof Date) {
|
||||
long current = delayedMessageWrapper != null
|
||||
? delayedMessageWrapper.getRequestDate()
|
||||
: System.currentTimeMillis();
|
||||
delay = ((Date) delayValue).getTime() - current;
|
||||
}
|
||||
else if (delayValue != null) {
|
||||
try {
|
||||
delay = Long.valueOf(delayValue.toString());
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
delayValueException = e;
|
||||
}
|
||||
if (delayValueException != null) {
|
||||
if (this.ignoreExpressionFailures) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Failed to get delay value from 'delayExpression': " +
|
||||
delayValueException.getMessage() +
|
||||
". Will fall back to default delay: " + this.defaultDelay);
|
||||
}
|
||||
}
|
||||
if (delayValueException != null) {
|
||||
if (this.ignoreExpressionFailures) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Failed to get delay value from 'delayExpression': " +
|
||||
delayValueException.getMessage() +
|
||||
". Will fall back to default delay: " + this.defaultDelay);
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException("Error occurred during 'delay' value determination",
|
||||
delayValueException);
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException("Error occurred during 'delay' value determination",
|
||||
delayValueException);
|
||||
}
|
||||
}
|
||||
return delay;
|
||||
|
||||
@@ -174,7 +174,7 @@ public class LoggingHandler extends AbstractMessageHandler {
|
||||
this.evaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override // NOSONAR
|
||||
protected void handleMessageInternal(Message<?> message) {
|
||||
switch (this.level) {
|
||||
case FATAL:
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.springframework.integration.message;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageHeaders;
|
||||
@@ -52,7 +53,7 @@ public class AdviceMessage<T> extends GenericMessage<T> {
|
||||
|
||||
/**
|
||||
* A constructor with the {@link MessageHeaders} instance to use.
|
||||
* <p><strong>Note:</strong> the given {@code MessageHeaders} instance is used
|
||||
* <p><strong>Note:</strong> the given {@link MessageHeaders} instance is used
|
||||
* directly in the new message, i.e. it is not copied.
|
||||
* @param payload the message payload (never {@code null})
|
||||
* @param headers message headers
|
||||
@@ -76,4 +77,24 @@ public class AdviceMessage<T> extends GenericMessage<T> {
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (!(o instanceof AdviceMessage)) {
|
||||
return false;
|
||||
}
|
||||
if (!super.equals(o)) {
|
||||
return false;
|
||||
}
|
||||
AdviceMessage<?> that = (AdviceMessage<?>) o;
|
||||
return Objects.equals(this.inputMessage, that.inputMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(), this.inputMessage);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public abstract class AbstractMappingMessageRouter extends AbstractMessageRouter
|
||||
|
||||
@Override
|
||||
protected boolean removeEldestEntry(Entry<String, MessageChannel> eldest) {
|
||||
return this.size() > AbstractMappingMessageRouter.this.dynamicChannelLimit;
|
||||
return size() > AbstractMappingMessageRouter.this.dynamicChannelLimit;
|
||||
}
|
||||
|
||||
});
|
||||
@@ -288,14 +288,8 @@ public abstract class AbstractMappingMessageRouter extends AbstractMessageRouter
|
||||
}
|
||||
|
||||
private void addToCollection(Collection<MessageChannel> channels, Collection<?> channelKeys, Message<?> message) {
|
||||
if (channelKeys == null) {
|
||||
return;
|
||||
}
|
||||
for (Object channelKey : channelKeys) {
|
||||
if (channelKey == null) {
|
||||
continue;
|
||||
}
|
||||
else if (channelKey instanceof MessageChannel) {
|
||||
if (channelKey instanceof MessageChannel) {
|
||||
channels.add((MessageChannel) channelKey);
|
||||
}
|
||||
else if (channelKey instanceof MessageChannel[]) {
|
||||
|
||||
@@ -59,7 +59,7 @@ public class PayloadTypeRouter extends AbstractMappingMessageRouter {
|
||||
return (closestMatch != null) ? Collections.singletonList(closestMatch) : null;
|
||||
}
|
||||
|
||||
private String findClosestMatch(Class<?> type, boolean isArray) {
|
||||
private String findClosestMatch(Class<?> type, boolean isArray) { // NOSONAR
|
||||
int minTypeDiffWeight = Integer.MAX_VALUE;
|
||||
List<String> matches = new LinkedList<>();
|
||||
for (String candidate : getChannelMappings().keySet()) {
|
||||
|
||||
Reference in New Issue
Block a user