From 36c33bb5ab30f446f91c478b21cb4c3e21cb2ebd Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Mon, 29 Apr 2019 16:34:39 -0400 Subject: [PATCH] Sonar fixes - a few complexities - final method calls from ctor - raw exception throwing - useless overrides - loss of stack trace --- .../AbstractMessageListenerContainerSpec.java | 2 +- .../GlobalChannelInterceptorWrapper.java | 4 +- .../codec/kryo/CompositeKryoRegistrar.java | 6 +-- .../RouterAnnotationPostProcessor.java | 8 +++- .../xml/AbstractConsumerEndpointParser.java | 46 ++++++++++--------- ...tractDelegatingConsumerEndpointParser.java | 15 ++++-- .../dsl/IntegrationComponentSpec.java | 11 ++--- .../dsl/IntegrationFlowBuilder.java | 2 +- .../integration/dsl/MessageChannelSpec.java | 25 ++++------ .../integration/dsl/PublishSubscribeSpec.java | 2 +- .../expression/FunctionExpression.java | 2 +- .../expression/SupplierExpression.java | 2 +- .../integration/graph/IntegrationNode.java | 16 +++---- .../handler/LambdaMessageProcessor.java | 2 +- .../integration/handler/LoggingHandler.java | 4 +- .../support/MutableMessageHeaders.java | 2 +- .../support/SmartLifecycleRoleController.java | 4 +- .../support/utils/IntegrationUtils.java | 2 +- .../transformer/ContentEnricher.java | 2 +- .../integration/util/UUIDConverter.java | 7 ++- ...InboundFileSynchronizingMessageSource.java | 2 +- .../session/DefaultFtpsSessionFactory.java | 2 +- .../IntegrationGraphControllerTests.java | 6 +-- .../FailoverClientConnectionFactory.java | 2 +- .../tcp/connection/TcpConnectionSupport.java | 2 +- .../ip/tcp/connection/TcpNioConnection.java | 4 +- .../tcp/connection/TcpNioSSLConnection.java | 2 +- .../ChannelPublishingJmsMessageListener.java | 4 +- .../integration/jms/JmsOutboundGateway.java | 6 +-- .../jms/dsl/JmsDestinationAccessorSpec.java | 2 +- .../integration/jpa/core/JpaExecutor.java | 2 +- .../BeanPropertyParameterSource.java | 2 +- ...ressionEvaluatingParameterSourceUtils.java | 4 +- .../integration/sftp/session/SftpSession.java | 9 +++- .../integration/test/mail/TestMailServer.java | 8 ++-- .../test/matcher/HeaderMatcher.java | 2 +- .../test/matcher/MapContentMatchers.java | 3 +- .../test/matcher/MockitoMessageMatchers.java | 2 +- .../test/matcher/PayloadAndHeaderMatcher.java | 2 +- .../test/matcher/PayloadMatcher.java | 2 +- .../test/rule/Log4j2LevelAdjuster.java | 3 +- .../test/util/OnlyOnceTrigger.java | 5 +- .../integration/test/util/TestUtils.java | 2 +- .../xml/result/DomResultFactory.java | 4 +- .../zookeeper/lock/ZookeeperLockRegistry.java | 2 +- 45 files changed, 134 insertions(+), 114 deletions(-) diff --git a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/dsl/AbstractMessageListenerContainerSpec.java b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/dsl/AbstractMessageListenerContainerSpec.java index 45b21c42ab..d41c4aa76f 100644 --- a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/dsl/AbstractMessageListenerContainerSpec.java +++ b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/dsl/AbstractMessageListenerContainerSpec.java @@ -52,7 +52,7 @@ public abstract class AbstractMessageListenerContainerSpec getRegistrations() { + public final List getRegistrations() { List registrations = new ArrayList(); for (KryoRegistrar registrar : this.delegates) { registrations.addAll(registrar.getRegistrations()); @@ -59,13 +59,13 @@ public class CompositeKryoRegistrar extends AbstractKryoRegistrar { Assert.isTrue(registration.getId() >= MIN_REGISTRATION_VALUE, "registration ID must be >= " + MIN_REGISTRATION_VALUE); if (ids.contains(registration.getId())) { - throw new RuntimeException(String.format("Duplicate registration ID found: %d", + throw new IllegalArgumentException(String.format("Duplicate registration ID found: %d", registration.getId())); } ids.add(registration.getId()); if (types.contains(registration.getType())) { - throw new RuntimeException(String.format("Duplicate registration found for type: %s", + throw new IllegalArgumentException(String.format("Duplicate registration found for type: %s", registration.getType())); } types.add(registration.getType()); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessor.java index 8b83d45fa4..7050b69311 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessor.java @@ -94,6 +94,12 @@ public class RouterAnnotationPostProcessor extends AbstractMethodAnnotationPostP router.setIgnoreSendFailures(resolveAttributeToBoolean(ignoreSendFailures)); } + routerAttributes(annotations, router); + + return router; + } + + private void routerAttributes(List annotations, AbstractMessageRouter router) { if (routerAttributesProvided(annotations)) { MethodInvokingRouter methodInvokingRouter = (MethodInvokingRouter) router; @@ -127,8 +133,6 @@ public class RouterAnnotationPostProcessor extends AbstractMethodAnnotationPostP } } - - return router; } private boolean routerAttributesProvided(List annotations) { diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java index fe205c0137..852ed96003 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java @@ -144,27 +144,7 @@ public abstract class AbstractConsumerEndpointParser extends AbstractBeanDefinit String inputChannelName = element.getAttribute(inputChannelAttributeName); if (!parserContext.getRegistry().containsBeanDefinition(inputChannelName)) { - if (parserContext.getRegistry() - .containsBeanDefinition(IntegrationContextUtils.AUTO_CREATE_CHANNEL_CANDIDATES_BEAN_NAME)) { - - BeanDefinition channelRegistry = parserContext.getRegistry(). - getBeanDefinition(IntegrationContextUtils.AUTO_CREATE_CHANNEL_CANDIDATES_BEAN_NAME); - ConstructorArgumentValues caValues = channelRegistry.getConstructorArgumentValues(); - ValueHolder vh = caValues.getArgumentValue(0, Collection.class); - if (vh == null) { //although it should never happen if it does we can fix it - caValues.addIndexedArgumentValue(0, new ManagedSet()); - } - - @SuppressWarnings("unchecked") - Collection channelCandidateNames = - (Collection) caValues.getArgumentValue(0, Collection.class).getValue(); // NOSONAR see comment above - channelCandidateNames.add(inputChannelName); // NOSONAR - } - else { - parserContext.getReaderContext().error("Failed to locate '" + - IntegrationContextUtils.AUTO_CREATE_CHANNEL_CANDIDATES_BEAN_NAME + "'", - parserContext.getRegistry()); - } + registerChannelForCreation(parserContext, inputChannelName); } IntegrationNamespaceUtils.checkAndConfigureFixedSubscriberChannel(element, parserContext, inputChannelName, handlerBeanName); @@ -188,6 +168,30 @@ public abstract class AbstractConsumerEndpointParser extends AbstractBeanDefinit return null; } + private void registerChannelForCreation(ParserContext parserContext, String inputChannelName) { + if (parserContext.getRegistry() + .containsBeanDefinition(IntegrationContextUtils.AUTO_CREATE_CHANNEL_CANDIDATES_BEAN_NAME)) { + + BeanDefinition channelRegistry = parserContext.getRegistry(). + getBeanDefinition(IntegrationContextUtils.AUTO_CREATE_CHANNEL_CANDIDATES_BEAN_NAME); + ConstructorArgumentValues caValues = channelRegistry.getConstructorArgumentValues(); + ValueHolder vh = caValues.getArgumentValue(0, Collection.class); + if (vh == null) { //although it should never happen if it does we can fix it + caValues.addIndexedArgumentValue(0, new ManagedSet()); + } + + @SuppressWarnings("unchecked") + Collection channelCandidateNames = + (Collection) caValues.getArgumentValue(0, Collection.class).getValue(); // NOSONAR see comment above + channelCandidateNames.add(inputChannelName); // NOSONAR + } + else { + parserContext.getReaderContext().error("Failed to locate '" + + IntegrationContextUtils.AUTO_CREATE_CHANNEL_CANDIDATES_BEAN_NAME + "'", + parserContext.getRegistry()); + } + } + /** * Override to allow 'reply-channel' within a chain, for components where it * makes sense (e.g. enricher). Default is false for outbound gateways, else true. diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractDelegatingConsumerEndpointParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractDelegatingConsumerEndpointParser.java index 2c820beb43..b60f579b7c 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractDelegatingConsumerEndpointParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractDelegatingConsumerEndpointParser.java @@ -101,6 +101,17 @@ abstract class AbstractDelegatingConsumerEndpointParser extends AbstractConsumer IntegrationNamespaceUtils.createElementDescription(element) + ".", source); return null; } + methodAttribute(element, parserContext, source, builder, innerDefinition, hasRef, hasExpression, + expressionElement); + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "requires-reply"); + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "send-timeout"); + this.postProcess(builder, element, parserContext); + return builder; + } + + private void methodAttribute(Element element, ParserContext parserContext, Object source, + BeanDefinitionBuilder builder, BeanComponentDefinition innerDefinition, boolean hasRef, + boolean hasExpression, Element expressionElement) { String method = element.getAttribute(METHOD_ATTRIBUTE); if (StringUtils.hasText(method)) { if (hasExpression || expressionElement != null) { @@ -117,10 +128,6 @@ abstract class AbstractDelegatingConsumerEndpointParser extends AbstractConsumer IntegrationNamespaceUtils.createElementDescription(element) + ".", source); } } - IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "requires-reply"); - IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "send-timeout"); - this.postProcess(builder, element, parserContext); - return builder; } /** diff --git a/spring-integration-core/src/main/java/org/springframework/integration/dsl/IntegrationComponentSpec.java b/spring-integration-core/src/main/java/org/springframework/integration/dsl/IntegrationComponentSpec.java index 639b8f7901..6abeb7540b 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/dsl/IntegrationComponentSpec.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/dsl/IntegrationComponentSpec.java @@ -16,9 +16,6 @@ package org.springframework.integration.dsl; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.config.AbstractFactoryBean; @@ -42,8 +39,6 @@ public abstract class IntegrationComponentSpec, C e super(); } - @Override - protected S id(String id) { - return super.id(id); - } - - public S datatype(Class... datatypes) { - Assert.notNull(datatypes, "'datatypes' must not be null"); - Assert.noNullElements(datatypes, "'datatypes' must not contain null elements"); - this.datatypes.addAll(Arrays.asList(datatypes)); + public S datatype(Class... types) { + Assert.notNull(types, "'datatypes' must not be null"); + Assert.noNullElements(types, "'datatypes' must not contain null elements"); + this.datatypes.addAll(Arrays.asList(types)); return _this(); } - public S interceptor(ChannelInterceptor... interceptors) { - Assert.notNull(interceptors, "'interceptors' must not be null"); - Assert.noNullElements(interceptors, "'interceptors' must not contain null elements"); - this.interceptors.addAll(Arrays.asList(interceptors)); + public S interceptor(ChannelInterceptor... interceptorArray) { + Assert.notNull(interceptorArray, "'interceptorArray' must not be null"); + Assert.noNullElements(interceptorArray, "'interceptorArray' must not contain null elements"); + this.interceptors.addAll(Arrays.asList(interceptorArray)); return _this(); } @@ -111,8 +106,8 @@ public abstract class MessageChannelSpec, C e return interceptor(interceptor); } - public S messageConverter(MessageConverter messageConverter) { - this.messageConverter = messageConverter; + public S messageConverter(MessageConverter converter) { + this.messageConverter = converter; return _this(); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/dsl/PublishSubscribeSpec.java b/spring-integration-core/src/main/java/org/springframework/integration/dsl/PublishSubscribeSpec.java index 06527a6f89..f5ee5db071 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/dsl/PublishSubscribeSpec.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/dsl/PublishSubscribeSpec.java @@ -41,7 +41,7 @@ public class PublishSubscribeSpec extends PublishSubscribeChannelSpec implements Expression { } @Override - public String getExpressionString() { + public final String getExpressionString() { return this.function.toString(); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/expression/SupplierExpression.java b/spring-integration-core/src/main/java/org/springframework/integration/expression/SupplierExpression.java index d2510f1fd1..ea3c5fdcff 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/expression/SupplierExpression.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/expression/SupplierExpression.java @@ -178,7 +178,7 @@ public class SupplierExpression implements Expression { } @Override - public String getExpressionString() { + public final String getExpressionString() { return this.supplier.toString(); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/graph/IntegrationNode.java b/spring-integration-core/src/main/java/org/springframework/integration/graph/IntegrationNode.java index 0794e157d9..c7e188560f 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/graph/IntegrationNode.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/graph/IntegrationNode.java @@ -39,7 +39,7 @@ public abstract class IntegrationNode { private final int nodeId; - private final String name; + private final String nodeName; private final Stats stats; @@ -51,7 +51,7 @@ public abstract class IntegrationNode { protected IntegrationNode(int nodeId, String name, Object nodeObject, Stats stats) { this.nodeId = nodeId; - this.name = name; + this.nodeName = name; this.componentType = nodeObject instanceof NamedComponent ? ((NamedComponent) nodeObject).getComponentType() @@ -70,10 +70,10 @@ public abstract class IntegrationNode { } public String getName() { - return this.name; + return this.nodeName; } - public String getComponentType() { + public final String getComponentType() { return this.componentType; } @@ -98,12 +98,12 @@ public abstract class IntegrationNode { /** * Add extra property to the node. - * @param properties additional properties to add + * @param props additional properties to add * @since 5.1 */ - public void addProperties(@Nullable Map properties) { - if (properties != null) { - this.properties.putAll(properties); + public void addProperties(@Nullable Map props) { + if (props != null) { + this.properties.putAll(props); } } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java index 220b3805c3..e607feb923 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java @@ -106,7 +106,7 @@ public class LambdaMessageProcessor implements MessageProcessor, BeanFac "An example of when this often occurs is if the lambda is configured to " + "receive a Message argument.", e.getCause()); } - throw new MessageHandlingException(message, e.getCause()); + throw new MessageHandlingException(message, e.getCause()); // NOSONAR lost stack trace } catch (Exception e) { throw IntegrationUtils.wrapInHandlingExceptionIfNecessary(message, diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/LoggingHandler.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/LoggingHandler.java index 0f05d982cc..80035159f0 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/LoggingHandler.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/LoggingHandler.java @@ -84,10 +84,10 @@ public class LoggingHandler extends AbstractMessageHandler { try { return Level.valueOf(level.toUpperCase()); } - catch (IllegalArgumentException e) { + catch (@SuppressWarnings("unused") IllegalArgumentException e) { throw new IllegalArgumentException("Invalid log level '" + level + "'. The (case-insensitive) supported values are: " - + StringUtils.arrayToCommaDelimitedString(Level.values())); + + StringUtils.arrayToCommaDelimitedString(Level.values())); // NOSONAR lost stack trace } } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/MutableMessageHeaders.java b/spring-integration-core/src/main/java/org/springframework/integration/support/MutableMessageHeaders.java index 8246c5c962..1730050712 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/MutableMessageHeaders.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/MutableMessageHeaders.java @@ -50,7 +50,7 @@ public class MutableMessageHeaders extends MessageHeaders { } @Override - protected Map getRawHeaders() { + protected Map getRawHeaders() { // NOSONAR - not useless; increases visibility return super.getRawHeaders(); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/SmartLifecycleRoleController.java b/spring-integration-core/src/main/java/org/springframework/integration/support/SmartLifecycleRoleController.java index ad241c8c8b..964107d014 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/SmartLifecycleRoleController.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/SmartLifecycleRoleController.java @@ -75,7 +75,7 @@ public class SmartLifecycleRoleController implements ApplicationListener roles, List lifecycles) { Assert.notNull(roles, "'roles' cannot be null"); Assert.notNull(lifecycles, "'lifecycles' cannot be null"); - Assert.isTrue(roles.size() == lifecycles.size(), "'roles' and 'lifecycles' must be the same lenght"); + Assert.isTrue(roles.size() == lifecycles.size(), "'roles' and 'lifecycles' must be the same length"); Iterator iterator = lifecycles.iterator(); for (String role : roles) { SmartLifecycle lifecycle = iterator.next(); @@ -134,7 +134,7 @@ public class SmartLifecycleRoleController implements ApplicationListener sendAndReceiveMessage(Object object) { + protected Message sendAndReceiveMessage(Object object) { // NOSONAR - not useless, increases visibility return super.sendAndReceiveMessage(object); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/util/UUIDConverter.java b/spring-integration-core/src/main/java/org/springframework/integration/util/UUIDConverter.java index be49db589c..2c4283ecc4 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/util/UUIDConverter.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/util/UUIDConverter.java @@ -29,6 +29,7 @@ import org.springframework.util.ClassUtils; * Utility to help generate UUID instances from generic objects. * * @author Dave Syer + * @author Gary Russell */ public class UUIDConverter implements Converter { @@ -41,6 +42,7 @@ public class UUIDConverter implements Converter { * * @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object) */ + @Override public UUID convert(Object source) { return getUUID(source); } @@ -80,7 +82,10 @@ public class UUIDConverter implements Converter { return UUID.nameUUIDFromBytes(((String) input).getBytes(DEFAULT_CHARSET)); } catch (UnsupportedEncodingException ex) { - throw new IllegalStateException("Cannot convert String using charset=" + DEFAULT_CHARSET, ex); + IllegalStateException exception = + new IllegalStateException("Cannot convert String using charset=" + DEFAULT_CHARSET, ex); + exception.addSuppressed(e); + throw exception; // NOSONAR - added to suppressed exceptions } } } diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/synchronizer/AbstractInboundFileSynchronizingMessageSource.java b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/synchronizer/AbstractInboundFileSynchronizingMessageSource.java index c60813d18e..1787b40f5e 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/synchronizer/AbstractInboundFileSynchronizingMessageSource.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/synchronizer/AbstractInboundFileSynchronizingMessageSource.java @@ -283,7 +283,7 @@ public abstract class AbstractInboundFileSynchronizingMessageSource } @Override - protected AbstractIntegrationMessageBuilder doReceive() { + protected AbstractIntegrationMessageBuilder doReceive() { // NOSONAR - not useless, increases visibility return super.doReceive(); } diff --git a/spring-integration-ftp/src/main/java/org/springframework/integration/ftp/session/DefaultFtpsSessionFactory.java b/spring-integration-ftp/src/main/java/org/springframework/integration/ftp/session/DefaultFtpsSessionFactory.java index 22623ba130..a882651998 100644 --- a/spring-integration-ftp/src/main/java/org/springframework/integration/ftp/session/DefaultFtpsSessionFactory.java +++ b/spring-integration-ftp/src/main/java/org/springframework/integration/ftp/session/DefaultFtpsSessionFactory.java @@ -130,7 +130,7 @@ public class DefaultFtpsSessionFactory extends AbstractFtpSessionFactory message = null; diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioSSLConnection.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioSSLConnection.java index e10c093fe0..2c63990bcd 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioSSLConnection.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioSSLConnection.java @@ -421,7 +421,7 @@ public class TcpNioSSLConnection extends TcpNioConnection { } catch (InterruptedException e) { Thread.currentThread().interrupt(); - throw new MessagingException("Interrupted during SSL Handshaking"); + throw new MessagingException("Interrupted during SSL Handshaking", e); } } diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/ChannelPublishingJmsMessageListener.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/ChannelPublishingJmsMessageListener.java index 62a3a98af3..34024dacb7 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/ChannelPublishingJmsMessageListener.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/ChannelPublishingJmsMessageListener.java @@ -502,12 +502,12 @@ public class ChannelPublishingJmsMessageListener } @Override - protected void send(Object request) { + protected void send(Object request) { // NOSONAR - not useless, increases visibility super.send(request); } @Override - protected Message sendAndReceiveMessage(Object request) { + protected Message sendAndReceiveMessage(Object request) { // NOSONAR - not useless, increases visibility return super.sendAndReceiveMessage(request); } diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsOutboundGateway.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsOutboundGateway.java index 23abde8642..3aa6bfb3dc 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsOutboundGateway.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsOutboundGateway.java @@ -1337,7 +1337,7 @@ public class JmsOutboundGateway extends AbstractReplyProducingMessageHandler imp debugLogger.debug("No pending reply for " + siMessage + " with correlationId: " + correlnId + " pending replies: " + this.replies.keySet()); } - throw new RuntimeException("No sender waiting for reply"); + throw new IllegalStateException("No sender waiting for reply"); } synchronized (this.earlyOrLateReplies) { queue = this.replies.get(correlnId); @@ -1410,9 +1410,9 @@ public class JmsOutboundGateway extends AbstractReplyProducingMessageHandler imp try { Thread.sleep(100); } - catch (@SuppressWarnings("unused") InterruptedException e) { + catch (InterruptedException e) { Thread.currentThread().interrupt(); - throw new IllegalStateException("Container did not establish a destination"); + throw new IllegalStateException("Container did not establish a destination", e); } } if (this.replyDestination == null) { diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/dsl/JmsDestinationAccessorSpec.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/dsl/JmsDestinationAccessorSpec.java index 3d82f80d88..543e825875 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/dsl/JmsDestinationAccessorSpec.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/dsl/JmsDestinationAccessorSpec.java @@ -45,7 +45,7 @@ public abstract class JmsDestinationAccessorSpec { } } catch (IOException ioex) { - throw new NestedIOException("Failed to delete file " + pathTo, ioex); + NestedIOException exception = new NestedIOException("Failed to delete file " + pathTo, sftpex); + exception.addSuppressed(ioex); + throw exception; // NOSONAR - added to suppressed exceptions } try { // attempt to rename again this.channel.rename(pathFrom, pathTo); } catch (SftpException sftpex2) { - throw new NestedIOException("failed to rename from " + pathFrom + " to " + pathTo, sftpex2); + NestedIOException exception = + new NestedIOException("failed to rename from " + pathFrom + " to " + pathTo, sftpex); + exception.addSuppressed(sftpex2); + throw exception; // NOSONAR - added to suppressed exceptions } } if (this.logger.isDebugEnabled()) { diff --git a/spring-integration-test-support/src/main/java/org/springframework/integration/test/mail/TestMailServer.java b/spring-integration-test-support/src/main/java/org/springframework/integration/test/mail/TestMailServer.java index 9885282851..1e05508cf4 100644 --- a/spring-integration-test-support/src/main/java/org/springframework/integration/test/mail/TestMailServer.java +++ b/spring-integration-test-support/src/main/java/org/springframework/integration/test/mail/TestMailServer.java @@ -46,14 +46,14 @@ import org.springframework.util.Base64Utils; * @since 5.0 * */ -public class TestMailServer { +public final class TestMailServer { public static SmtpServer smtp(int port) { try { return new SmtpServer(port); } catch (IOException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } } @@ -62,7 +62,7 @@ public class TestMailServer { return new Pop3Server(port); } catch (IOException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } } @@ -71,7 +71,7 @@ public class TestMailServer { return new ImapServer(port); } catch (IOException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } } diff --git a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/HeaderMatcher.java b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/HeaderMatcher.java index ae4c741c4b..12c8fc7039 100644 --- a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/HeaderMatcher.java +++ b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/HeaderMatcher.java @@ -70,7 +70,7 @@ import org.springframework.messaging.MessageHeaders; * @author Gary Russell * */ -public class HeaderMatcher extends TypeSafeMatcher> { +public final class HeaderMatcher extends TypeSafeMatcher> { private final Matcher matcher; diff --git a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/MapContentMatchers.java b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/MapContentMatchers.java index 47cf2d5cff..fadc1ce059 100644 --- a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/MapContentMatchers.java +++ b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/MapContentMatchers.java @@ -61,9 +61,10 @@ import org.hamcrest.core.AllOf; * @author Iwein Fuld * @author Gunnar Hillert * @author Artem Bilan + * @author Gary Russell * */ -public class MapContentMatchers extends TypeSafeMatcher> { +public final class MapContentMatchers extends TypeSafeMatcher> { private final T key; diff --git a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/MockitoMessageMatchers.java b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/MockitoMessageMatchers.java index 9cdc72b207..bdae50ae28 100644 --- a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/MockitoMessageMatchers.java +++ b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/MockitoMessageMatchers.java @@ -64,7 +64,7 @@ import org.springframework.messaging.Message; * @author Artem Bilan * */ -public class MockitoMessageMatchers { +public final class MockitoMessageMatchers { private MockitoMessageMatchers() { super(); diff --git a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/PayloadAndHeaderMatcher.java b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/PayloadAndHeaderMatcher.java index 1c8cf8e0a7..800c67793f 100644 --- a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/PayloadAndHeaderMatcher.java +++ b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/PayloadAndHeaderMatcher.java @@ -49,7 +49,7 @@ import org.springframework.messaging.MessageHeaders; * @author Gary Russell * */ -public class PayloadAndHeaderMatcher extends BaseMatcher> { +public final class PayloadAndHeaderMatcher extends BaseMatcher> { private final T payload; diff --git a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/PayloadMatcher.java b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/PayloadMatcher.java index 0d763d5baf..6ac2bfb092 100644 --- a/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/PayloadMatcher.java +++ b/spring-integration-test-support/src/main/java/org/springframework/integration/test/matcher/PayloadMatcher.java @@ -57,7 +57,7 @@ import org.springframework.messaging.Message; * @author Gary Russell * */ -public class PayloadMatcher extends TypeSafeMatcher> { +public final class PayloadMatcher extends TypeSafeMatcher> { private final Matcher matcher; diff --git a/spring-integration-test-support/src/main/java/org/springframework/integration/test/rule/Log4j2LevelAdjuster.java b/spring-integration-test-support/src/main/java/org/springframework/integration/test/rule/Log4j2LevelAdjuster.java index ea0496f68b..991648cf9d 100644 --- a/spring-integration-test-support/src/main/java/org/springframework/integration/test/rule/Log4j2LevelAdjuster.java +++ b/spring-integration-test-support/src/main/java/org/springframework/integration/test/rule/Log4j2LevelAdjuster.java @@ -42,11 +42,12 @@ import org.springframework.util.ObjectUtils; * enabling debug logging for a test case. * * @author Artem Bilan + * @author Gary Russell * * @since 5.0.1 * */ -public class Log4j2LevelAdjuster implements MethodRule { +public final class Log4j2LevelAdjuster implements MethodRule { private static final Log logger = LogFactory.getLog(Log4j2LevelAdjuster.class); diff --git a/spring-integration-test-support/src/main/java/org/springframework/integration/test/util/OnlyOnceTrigger.java b/spring-integration-test-support/src/main/java/org/springframework/integration/test/util/OnlyOnceTrigger.java index 3ed3b8a267..3dcd0366be 100644 --- a/spring-integration-test-support/src/main/java/org/springframework/integration/test/util/OnlyOnceTrigger.java +++ b/spring-integration-test-support/src/main/java/org/springframework/integration/test/util/OnlyOnceTrigger.java @@ -97,11 +97,12 @@ public class OnlyOnceTrigger implements Trigger { public void await() { try { if (!this.latch.await(10000, TimeUnit.MILLISECONDS)) { - throw new RuntimeException("test latch.await() did not count down"); + throw new IllegalStateException("test latch.await() did not count down"); } } catch (InterruptedException e) { - throw new RuntimeException("test latch.await() interrupted"); + Thread.currentThread().interrupt(); + throw new IllegalStateException("test latch.await() interrupted", e); } } diff --git a/spring-integration-test-support/src/main/java/org/springframework/integration/test/util/TestUtils.java b/spring-integration-test-support/src/main/java/org/springframework/integration/test/util/TestUtils.java index 5bc1195a98..ae4fb4f3fe 100644 --- a/spring-integration-test-support/src/main/java/org/springframework/integration/test/util/TestUtils.java +++ b/spring-integration-test-support/src/main/java/org/springframework/integration/test/util/TestUtils.java @@ -257,7 +257,7 @@ public abstract class TestUtils { logger.warn("Error message was not delivered.", errorDeliveryError); } if (errorDeliveryError instanceof Error) { - throw ((Error) errorDeliveryError); + throw ((Error) errorDeliveryError); // NOSONAR } } } diff --git a/spring-integration-xml/src/main/java/org/springframework/integration/xml/result/DomResultFactory.java b/spring-integration-xml/src/main/java/org/springframework/integration/xml/result/DomResultFactory.java index 01a60d5d0b..76bd1ac322 100644 --- a/spring-integration-xml/src/main/java/org/springframework/integration/xml/result/DomResultFactory.java +++ b/spring-integration-xml/src/main/java/org/springframework/integration/xml/result/DomResultFactory.java @@ -29,6 +29,7 @@ import org.springframework.xml.DocumentBuilderFactoryUtils; /** * @author Jonas Partner * @author Artem Bilan + * @author Gary Russell */ public class DomResultFactory implements ResultFactory { @@ -46,13 +47,14 @@ public class DomResultFactory implements ResultFactory { } + @Override public synchronized Result createResult(Object payload) { try { return new DOMResult(getNewDocumentBuilder().newDocument()); } catch (ParserConfigurationException e) { throw new MessagingException("failed to create Result for payload type [" + - payload.getClass().getName() + "]"); + payload.getClass().getName() + "]", e); } } diff --git a/spring-integration-zookeeper/src/main/java/org/springframework/integration/zookeeper/lock/ZookeeperLockRegistry.java b/spring-integration-zookeeper/src/main/java/org/springframework/integration/zookeeper/lock/ZookeeperLockRegistry.java index 27608a453c..450c557b1c 100644 --- a/spring-integration-zookeeper/src/main/java/org/springframework/integration/zookeeper/lock/ZookeeperLockRegistry.java +++ b/spring-integration-zookeeper/src/main/java/org/springframework/integration/zookeeper/lock/ZookeeperLockRegistry.java @@ -246,7 +246,7 @@ public class ZookeeperLockRegistry implements ExpirableLockRegistry, DisposableB this.mutex.acquire(); } catch (Exception e) { - throw new RuntimeException("Failed to acquire mutex at " + this.path, e); + throw new IllegalStateException("Failed to acquire mutex at " + this.path, e); } }