Fix some Sonar smells

This commit is contained in:
Artem Bilan
2020-01-24 16:46:32 -05:00
parent a201bdebee
commit ad5496fa4b
6 changed files with 73 additions and 60 deletions

View File

@@ -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)) {

View File

@@ -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;

View File

@@ -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:

View File

@@ -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);
}
}

View File

@@ -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[]) {

View File

@@ -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()) {