From 7efe79f457f16f980e878069a4104cd992841833 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Fri, 14 Dec 2018 15:26:11 -0500 Subject: [PATCH] Sonar fixes Critical issues for `o.s.i.j*` (except `jdbc`). --- .../integration/core/MessageSource.java | 2 ++ .../endpoint/AbstractMessageSource.java | 2 ++ .../CachingClientConnectionFactory.java | 4 +++- .../jms/JmsDestinationPollingSource.java | 6 +++++- .../jms/SubscribableJmsChannel.java | 10 ++++++++-- .../jms/config/JmsChannelFactoryBean.java | 6 ++++-- .../jms/dsl/JmsPollableMessageChannelSpec.java | 8 ++++++-- .../jmx/OperationInvokingMessageHandler.java | 9 +++------ .../JpaOutboundGatewayFactoryBean.java | 8 ++++++-- .../integration/jpa/support/JpaParameter.java | 18 ++++++++++++------ 10 files changed, 51 insertions(+), 22 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/core/MessageSource.java b/spring-integration-core/src/main/java/org/springframework/integration/core/MessageSource.java index 04d85d4ec9..2b95137994 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/core/MessageSource.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/core/MessageSource.java @@ -16,6 +16,7 @@ package org.springframework.integration.core; +import org.springframework.lang.Nullable; import org.springframework.messaging.Message; /** @@ -31,6 +32,7 @@ public interface MessageSource { * Returns null if no message is available. * @return The message or null. */ + @Nullable Message receive(); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractMessageSource.java b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractMessageSource.java index 7087092047..eb2798d1e0 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractMessageSource.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractMessageSource.java @@ -31,6 +31,7 @@ import org.springframework.integration.support.management.MessageSourceMetrics; import org.springframework.integration.support.management.metrics.CounterFacade; import org.springframework.integration.support.management.metrics.MetricsCaptor; import org.springframework.integration.util.AbstractExpressionEvaluator; +import org.springframework.lang.Nullable; import org.springframework.messaging.Message; import org.springframework.messaging.MessagingException; import org.springframework.util.CollectionUtils; @@ -231,6 +232,7 @@ public abstract class AbstractMessageSource extends AbstractExpressionEvaluat * also can be {@link AbstractIntegrationMessageBuilder} which is used for additional headers population. * @return The value returned. */ + @Nullable protected abstract Object doReceive(); @Override diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/CachingClientConnectionFactory.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/CachingClientConnectionFactory.java index a9532c4ae8..a457fa1704 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/CachingClientConnectionFactory.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/CachingClientConnectionFactory.java @@ -393,7 +393,9 @@ public class CachingClientConnectionFactory extends AbstractClientConnectionFact private final AtomicBoolean released = new AtomicBoolean(); - private CachedConnection(TcpConnectionSupport connection, @Nullable TcpListener tcpListener) { + private CachedConnection(TcpConnectionSupport connection, // NOSONAR false positive, not marked @Nullable + @Nullable TcpListener tcpListener) { + super.setTheConnection(connection); registerListener(tcpListener); } diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsDestinationPollingSource.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsDestinationPollingSource.java index 42c03991bf..e62dc2df5d 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsDestinationPollingSource.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsDestinationPollingSource.java @@ -24,6 +24,7 @@ import org.springframework.integration.endpoint.AbstractMessageSource; import org.springframework.integration.jms.util.JmsAdapterUtils; import org.springframework.integration.support.AbstractIntegrationMessageBuilder; import org.springframework.jms.core.JmsTemplate; +import org.springframework.jms.support.converter.MessageConverter; import org.springframework.messaging.Message; import org.springframework.messaging.MessagingException; import org.springframework.util.Assert; @@ -131,7 +132,10 @@ public class JmsDestinationPollingSource extends AbstractMessageSource { Map mappedHeaders = this.headerMapper.toHeaders(jmsMessage); Object object = jmsMessage; if (this.extractPayload) { - object = this.jmsTemplate.getMessageConverter().fromMessage(jmsMessage); + MessageConverter converter = this.jmsTemplate.getMessageConverter(); + if (converter != null) { + object = converter.fromMessage(jmsMessage); + } } AbstractIntegrationMessageBuilder builder = (object instanceof Message) diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/SubscribableJmsChannel.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/SubscribableJmsChannel.java index cc25beca19..20735b50dc 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/SubscribableJmsChannel.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/SubscribableJmsChannel.java @@ -33,6 +33,7 @@ import org.springframework.integration.dispatcher.UnicastingDispatcher; import org.springframework.integration.support.MessageBuilderFactory; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.listener.AbstractMessageListenerContainer; +import org.springframework.jms.support.converter.MessageConverter; import org.springframework.messaging.Message; import org.springframework.messaging.MessageDeliveryException; import org.springframework.messaging.MessageHandler; @@ -206,14 +207,19 @@ public class SubscribableJmsChannel extends AbstractJmsChannel public void onMessage(javax.jms.Message message) { Message messageToSend = null; try { - Object converted = this.jmsTemplate.getMessageConverter().fromMessage(message); + MessageConverter converter = this.jmsTemplate.getMessageConverter(); + Object converted = null; + if (converter != null) { + converted = converter.fromMessage(message); + } if (converted != null) { messageToSend = (converted instanceof Message) ? (Message) converted : this.messageBuilderFactory.withPayload(converted).build(); this.dispatcher.dispatch(messageToSend); } else if (this.logger.isWarnEnabled()) { - this.logger.warn("MessageConverter returned null, no Message to dispatch"); + this.logger.warn("No converter found, or converter returned null for: " + message + + ", no Message to dispatch"); } } catch (MessageDispatchingException e) { diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsChannelFactoryBean.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsChannelFactoryBean.java index a80757c7a8..8029aa2074 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsChannelFactoryBean.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsChannelFactoryBean.java @@ -24,6 +24,7 @@ import javax.jms.Destination; import javax.jms.ExceptionListener; import javax.jms.Session; +import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.config.AbstractFactoryBean; @@ -392,8 +393,9 @@ public class JmsChannelFactoryBean extends AbstractFactoryBean the target {@link JmsPollableMessageChannelSpec} implementation type. * * @author Artem Bilan + * @author Gary Russell * * @since 5.0 */ @@ -53,8 +55,10 @@ public class JmsPollableMessageChannelSpec resolveParameters(Message message) { - Map map = null; + Map map; if (message.getPayload() instanceof Map) { map = (Map) message.getPayload(); } @@ -233,11 +233,8 @@ public class OperationInvokingMessageHandler extends AbstractReplyProducingMessa map = this.createParameterMapFromList( Arrays.asList(ObjectUtils.toObjectArray(message.getPayload()))); } - else if (message.getPayload() != null) { - map = this.createParameterMapFromList(Collections.singletonList(message.getPayload())); - } else { - map = Collections.EMPTY_MAP; + map = this.createParameterMapFromList(Collections.singletonList(message.getPayload())); } return map; } diff --git a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/outbound/JpaOutboundGatewayFactoryBean.java b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/outbound/JpaOutboundGatewayFactoryBean.java index 092efe4eab..3f9bf7155d 100644 --- a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/outbound/JpaOutboundGatewayFactoryBean.java +++ b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/outbound/JpaOutboundGatewayFactoryBean.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2018 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. @@ -20,6 +20,7 @@ import java.util.List; import org.aopalliance.aop.Advice; +import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.config.AbstractFactoryBean; import org.springframework.integration.jpa.core.JpaExecutor; @@ -132,7 +133,10 @@ public class JpaOutboundGatewayFactoryBean extends AbstractFactoryBean