Sonar fixes

Critical smells `o.s.i.m*`.
This commit is contained in:
Gary Russell
2018-12-18 11:48:17 -05:00
committed by Artem Bilan
parent 3f48d2043b
commit 65df35bfd1
8 changed files with 40 additions and 13 deletions

View File

@@ -507,6 +507,7 @@ public abstract class MessagingGatewaySupport extends AbstractEndpoint
else {
requestMessage = (object instanceof Message<?>)
? (Message<?>) object : this.requestMapper.toMessage(object);
Assert.state(requestMessage != null, () -> "request mapper resulted in no message for " + object);
requestMessage = this.historyWritingPostProcessor.postProcessMessage(requestMessage);
reply = this.messagingTemplate.sendAndReceive(requestChannel, requestMessage);
if (reply instanceof ErrorMessage) {

View File

@@ -16,6 +16,12 @@
package org.springframework.integration.mapping;
import java.util.Map;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
/**
* An {@link OutboundMessageMapper} and {@link InboundMessageMapper} that
* maps to/from {@code byte[]}.
@@ -26,4 +32,14 @@ package org.springframework.integration.mapping;
*/
public interface BytesMessageMapper extends InboundMessageMapper<byte[]>, OutboundMessageMapper<byte[]> {
@Override
@NonNull // override
default Message<?> toMessage(byte[] object) {
return toMessage(object, null);
}
@Override
@NonNull // override
Message<?> toMessage(byte[] bytes, @Nullable Map<String, Object> headers);
}

View File

@@ -26,6 +26,7 @@ import org.springframework.messaging.Message;
*
* @author Mark Fisher
* @author Artem Bilan
* @author Gary Russell
*/
@FunctionalInterface
public interface InboundMessageMapper<T> {
@@ -36,7 +37,8 @@ public interface InboundMessageMapper<T> {
* @return the message as a result of mapping
* @throws Exception the exception thrown by the underlying mapper implementation
*/
default Message<?> toMessage(T object) throws Exception {
@Nullable
default Message<?> toMessage(T object) throws Exception { // NOSONAR - TODO remove Exception in 5.2
return toMessage(object, null);
}
@@ -50,6 +52,6 @@ public interface InboundMessageMapper<T> {
* @since 5.0
*/
@Nullable
Message<?> toMessage(T object, @Nullable Map<String, Object> headers) throws Exception;
Message<?> toMessage(T object, @Nullable Map<String, Object> headers) throws Exception; // NOSONAR
}

View File

@@ -16,6 +16,7 @@
package org.springframework.integration.support.json;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.Collection;
@@ -229,11 +230,12 @@ public class EmbeddedJsonHeadersMessageMapper implements BytesMessageMapper {
return message;
}
else {
return new GenericMessage<>(bytes, headers);
return headers == null ? new GenericMessage<>(bytes) : new GenericMessage<>(bytes, headers);
}
}
private Message<?> decodeNativeFormat(byte[] bytes, Map<String, Object> headersToAdd) throws Exception {
@Nullable
private Message<?> decodeNativeFormat(byte[] bytes, @Nullable Map<String, Object> headersToAdd) throws IOException {
ByteBuffer buffer = ByteBuffer.wrap(bytes);
if (buffer.remaining() > 4) {
int headersLen = buffer.getInt();

View File

@@ -846,9 +846,6 @@ public class IntegrationMBeanExporter extends MBeanExporter implements Applicati
return bean;
}
Advised advised = (Advised) bean;
if (advised.getTargetSource() == null) {
return null;
}
try {
return extractTarget(advised.getTargetSource().getTarget());
}
@@ -1075,7 +1072,7 @@ public class IntegrationMBeanExporter extends MBeanExporter implements Applicati
if (target instanceof MessagingGatewaySupport) {
outputChannel = ((MessagingGatewaySupport) target).getRequestChannel();
}
else {
else if (target instanceof SourcePollingChannelAdapter) {
outputChannel = ((SourcePollingChannelAdapter) target).getOutputChannel();
}

View File

@@ -201,7 +201,7 @@ public abstract class AbstractConfigurableMongoDbMessageStore extends AbstractMe
new Update().inc(MessageDocumentFields.SEQUENCE, 1),
FindAndModifyOptions.options().returnNew(true).upsert(true),
Map.class, this.collectionName)
.get(MessageDocumentFields.SEQUENCE);
.get(MessageDocumentFields.SEQUENCE); // NOSONAR - never returns null
}
protected void addMessageDocument(final MessageDocument document) {

View File

@@ -473,7 +473,7 @@ public class MongoDbMessageStore extends AbstractMessageGroupStore
new Update().inc(SEQUENCE, 1),
FindAndModifyOptions.options().returnNew(true).upsert(true),
Map.class,
this.collectionName).get(SEQUENCE);
this.collectionName).get(SEQUENCE); // NOSONAR - never returns null
}
@SuppressWarnings("unchecked")
@@ -481,8 +481,14 @@ public class MongoDbMessageStore extends AbstractMessageGroupStore
Map<String, Object> innerMap =
(Map<String, Object>) new DirectFieldAccessor(messageHeaders).getPropertyValue("headers");
// using reflection to set ID and TIMESTAMP since they are immutable through MessageHeaders
innerMap.put(MessageHeaders.ID, headers.get(MessageHeaders.ID));
innerMap.put(MessageHeaders.TIMESTAMP, headers.get(MessageHeaders.TIMESTAMP));
Object idHeader = headers.get(MessageHeaders.ID);
if (idHeader != null) {
innerMap.put(MessageHeaders.ID, idHeader);
}
Object tsHeader = headers.get(MessageHeaders.TIMESTAMP);
if (tsHeader != null) {
innerMap.put(MessageHeaders.TIMESTAMP, tsHeader);
}
}
@SuppressWarnings("unchecked")
@@ -760,7 +766,7 @@ public class MongoDbMessageStore extends AbstractMessageGroupStore
MongoDbMessageStore.this.converter.normalizeHeaders((Map<String, Object>) source.get("headers"));
Object payload = this.deserializingConverter.convert(((Binary) source.get("payload")).getData());
ErrorMessage message = new ErrorMessage((Throwable) payload, headers);
ErrorMessage message = new ErrorMessage((Throwable) payload, headers); // NOSONAR not null
enhanceHeaders(message.getHeaders(), headers);
return message;

View File

@@ -59,6 +59,9 @@ public class MongoDbMessageBytesConverter implements GenericConverter {
@Override
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
if (source == null) {
return null;
}
if (Message.class.isAssignableFrom(sourceType.getObjectType())) {
return new Binary(this.serializingConverter.convert(source));
}