From 4ac3a79df7356aad47147edad7b9581febffe1c4 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Sat, 2 Apr 2016 10:52:19 -0400 Subject: [PATCH] checkstyle FinalClassCheck fixes fixModifiers after fixFinal Revert CachingSessionFactory Class is spied in tests. checkstyle - Import Rules checkstyle InterfaceIsType checkstyle InnerTypeLast checkstyle OneStatementPerLine CovariantEquals OneTopLevelClass * Revert `'\n'` -> `System.lineSeparator()` in the Gradle scripts to meet Git `autocrlf = true` on Windows * Fix timing issue with the `LastModifiedFileListFilterTests`, when the `age = 1` might not be enough for the file object when we have some delay before checking --- build.gradle | 1 + .../AbstractSubscribableAmqpChannel.java | 97 +++++----- .../AbstractAmqpOutboundEndpoint.java | 2 +- .../amqp/support/MappingUtils.java | 2 +- .../integration/annotation/GatewayHeader.java | 5 +- .../integration/annotation/Poller.java | 7 +- .../aop/PublisherAnnotationAdvisor.java | 6 +- .../channel/DefaultHeaderChannelRegistry.java | 6 +- .../integration/channel/PriorityChannel.java | 4 +- ...eadStatePropagationChannelInterceptor.java | 2 +- ...criberChannelBeanFactoryPostProcessor.java | 2 +- ...rviceActivatorAnnotationPostProcessor.java | 4 +- .../config/xml/IntegrationNamespaceUtils.java | 7 +- .../core/AsyncMessagingTemplate.java | 46 ++++- .../endpoint/AbstractPollingEndpoint.java | 2 +- ...oadableResourceBundleExpressionSource.java | 2 +- ...ewayCompletableFutureProxyFactoryBean.java | 2 +- .../gateway/GatewayProxyFactoryBean.java | 4 +- .../ExpressionCommandMessageProcessor.java | 2 +- .../advice/AbstractRequestHandlerAdvice.java | 2 +- .../RequestHandlerCircuitBreakerAdvice.java | 2 +- .../integration/history/MessageHistory.java | 4 +- .../mapping/support/JsonHeaders.java | 2 +- ...ionEvaluatingRoutingSlipRouteStrategy.java | 12 +- .../store/AbstractKeyValueMessageStore.java | 2 +- .../support/MutableMessageBuilder.java | 2 +- .../support/utils/IntegrationUtils.java | 2 +- ...aultTransactionSynchronizationFactory.java | 2 +- .../util/MessagingMethodInvokerHelper.java | 2 +- .../integration/util/StackTraceUtils.java | 2 +- ...bstractCorrelatingMessageHandlerTests.java | 10 +- ...esequencingMessageGroupProcessorTests.java | 22 ++- .../PartialSequencesWithGapsTests.java | 36 ++-- .../channel/DirectChannelParserTests.java | 5 +- .../ChannelWithCustomQueueParserTests.java | 7 +- .../ImplicitConsumerChannelTests.java | 6 +- ...MessagingAnnotationPostProcessorTests.java | 13 +- .../ControlBusRecipientListRouterTests.java | 3 +- .../dispatcher/RoundRobinDispatcherTests.java | 28 +-- ...PseudoTransactionalMessageSourceTests.java | 26 ++- .../json/JsonOutboundMessageMapperTests.java | 17 +- .../json/JsonToObjectTransformerTests.java | 10 +- .../ObjectToJsonTransformerParserTests.java | 9 +- .../router/config/SplitterParserTests.java | 37 ++-- .../router/config/splitterParserTests.xml | 4 +- .../SpelSplitterIntegrationTests.java | 5 +- .../splitter/SplitterIntegrationTests.java | 24 ++- .../splitter/StreamingSplitterTests.java | 17 +- .../ObjectToMapTransformerTests.java | 4 +- ...PayloadTypeConvertingTransformerTests.java | 16 +- .../transformer/SysLogTransformerTests.java | 6 +- .../file/HeadDirectoryScanner.java | 2 +- .../file/remote/RemoteFileTemplate.java | 2 +- .../file/remote/RemoteFileUtils.java | 2 +- .../remote/session/CachingSessionFactory.java | 2 +- .../file/CompositeFileListFilterTests.java | 78 ++++---- .../LastModifiedFileListFilterTests.java | 6 +- ...GroovyScriptExecutingMessageProcessor.java | 2 +- .../config/GroovyControlBusFactoryBean.java | 2 +- .../ip/tcp/TcpOutboundGateway.java | 2 +- .../connection/AbstractConnectionFactory.java | 2 +- .../CachingClientConnectionFactory.java | 176 +++++++++--------- .../FailoverClientConnectionFactory.java | 2 +- .../tcp/connection/TcpNioSSLConnection.java | 2 +- .../integration/ip/util/TestingUtilities.java | 2 +- ...BeanPropertySqlParameterSourceFactory.java | 2 +- .../integration/jdbc/StoredProcExecutor.java | 2 +- .../AbstractJdbcChannelMessageStoreTests.java | 7 +- .../ChannelPublishingJmsMessageListener.java | 2 +- .../jms/DefaultJmsHeaderMapper.java | 2 +- .../integration/jms/JmsHeaderMapper.java | 2 +- .../integration/jms/JmsOutboundGateway.java | 2 +- .../jms/JmsSendingMessageHandler.java | 4 +- .../jms/SubscribableJmsChannel.java | 97 +++++----- .../jms/config/TestJmsHeaderMapper.java | 9 +- .../integration/jpa/support/JpaUtils.java | 6 +- .../BeanPropertyParameterSourceFactory.java | 2 +- ...ressionEvaluatingParameterSourceUtils.java | 2 +- .../JpaOutboundGatewayIntegrationTests.java | 6 +- .../mail/AbstractMailReceiver.java | 2 +- .../mail/ImapIdleChannelAdapter.java | 96 +++++----- .../mongodb/config/MongoParserUtils.java | 2 +- .../mongodb/store/MongoDbMessageStore.java | 24 +-- .../mongodb/support/MongoHeaders.java | 2 +- ...stractMqttMessageDrivenChannelAdapter.java | 2 +- .../integration/mqtt/support/MqttHeaders.java | 2 +- .../redis/support/RedisHeaders.java | 2 +- .../redis/util/RedisLockRegistry.java | 2 +- .../redis/config/RedisChannelParserTests.java | 6 +- .../outbound/RedisOutboundGatewayTests.java | 8 +- .../integration/syslog/SyslogHeaders.java | 2 +- .../websocket/ClientWebSocketContainer.java | 4 +- .../MarshallingWebServiceOutboundGateway.java | 2 +- .../ws/SimpleWebServiceOutboundGateway.java | 4 +- .../xml/splitter/XPathMessageSplitter.java | 2 +- .../xml/source/StringSourceTests.java | 24 +-- .../integration/xmpp/XmppHeaders.java | 3 +- .../xmpp/core/XmppContextUtils.java | 10 +- .../ChatMessageSendingMessageHandler.java | 4 +- .../zookeeper/lock/ZookeeperLockRegistry.java | 4 +- .../metadata/ZookeeperMetadataStore.java | 10 +- .../CuratorFrameworkFactoryBeanTests.java | 2 - src/checkstyle/checkstyle-suppressions.xml | 4 + src/checkstyle/checkstyle.xml | 44 ++--- src/checkstyle/fixFinal.gradle | 55 ++++++ 105 files changed, 752 insertions(+), 539 deletions(-) create mode 100644 src/checkstyle/fixFinal.gradle diff --git a/build.gradle b/build.gradle index b5bdd14660..af5257c247 100644 --- a/build.gradle +++ b/build.gradle @@ -64,6 +64,7 @@ subprojects { subproject -> apply plugin: 'jacoco' apply plugin: 'checkstyle' + apply from: "${rootDir}/src/checkstyle/fixFinal.gradle" apply from: "${rootDir}/src/checkstyle/fixHeaders.gradle" apply from: "${rootDir}/src/checkstyle/fixModifiers.gradle" apply from: "${rootDir}/src/checkstyle/fixThis.gradle" diff --git a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/channel/AbstractSubscribableAmqpChannel.java b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/channel/AbstractSubscribableAmqpChannel.java index 98b77ef9ad..5ead17b6c9 100644 --- a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/channel/AbstractSubscribableAmqpChannel.java +++ b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/channel/AbstractSubscribableAmqpChannel.java @@ -201,12 +201,59 @@ abstract class AbstractSubscribableAmqpChannel extends AbstractAmqpChannel } } + /* + * SmartLifecycle implementation (delegates to the MessageListener container) + */ + + @Override + public boolean isAutoStartup() { + return (this.container != null) && this.container.isAutoStartup(); + } + + @Override + public int getPhase() { + return (this.container != null) ? this.container.getPhase() : 0; + } + + @Override + public boolean isRunning() { + return (this.container != null) && this.container.isRunning(); + } + + @Override + public void start() { + if (this.container != null) { + this.container.start(); + } + } + + @Override + public void stop() { + if (this.container != null) { + this.container.stop(); + } + } + + @Override + public void stop(Runnable callback) { + if (this.container != null) { + this.container.stop(callback); + } + } + + @Override + public void destroy() throws Exception { + if (this.container != null) { + this.container.destroy(); + } + } + protected abstract AbstractDispatcher createDispatcher(); protected abstract String obtainQueueName(AmqpAdmin admin, String channelName); - private static class DispatchingMessageListener implements MessageListener { + private static final class DispatchingMessageListener implements MessageListener { private final Log logger = LogFactory.getLog(this.getClass()); @@ -283,52 +330,4 @@ abstract class AbstractSubscribableAmqpChannel extends AbstractAmqpChannel } - - /* - * SmartLifecycle implementation (delegates to the MessageListener container) - */ - - @Override - public boolean isAutoStartup() { - return (this.container != null) && this.container.isAutoStartup(); - } - - @Override - public int getPhase() { - return (this.container != null) ? this.container.getPhase() : 0; - } - - @Override - public boolean isRunning() { - return (this.container != null) && this.container.isRunning(); - } - - @Override - public void start() { - if (this.container != null) { - this.container.start(); - } - } - - @Override - public void stop() { - if (this.container != null) { - this.container.stop(); - } - } - - @Override - public void stop(Runnable callback) { - if (this.container != null) { - this.container.stop(callback); - } - } - - @Override - public void destroy() throws Exception { - if (this.container != null) { - this.container.destroy(); - } - } - } diff --git a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AbstractAmqpOutboundEndpoint.java b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AbstractAmqpOutboundEndpoint.java index 8c1290762d..325d519763 100644 --- a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AbstractAmqpOutboundEndpoint.java +++ b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AbstractAmqpOutboundEndpoint.java @@ -431,7 +431,7 @@ public abstract class AbstractAmqpOutboundEndpoint extends AbstractReplyProducin } } - protected static class CorrelationDataWrapper extends CorrelationData { + protected static final class CorrelationDataWrapper extends CorrelationData { private final Object userData; diff --git a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/support/MappingUtils.java b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/support/MappingUtils.java index efb71b0c4d..4d824cf9e9 100644 --- a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/support/MappingUtils.java +++ b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/support/MappingUtils.java @@ -30,7 +30,7 @@ import org.springframework.messaging.Message; * @since 4.3 * */ -public class MappingUtils { +public final class MappingUtils { private MappingUtils() { super(); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/annotation/GatewayHeader.java b/spring-integration-core/src/main/java/org/springframework/integration/annotation/GatewayHeader.java index bd6df714af..b4a8486f68 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/annotation/GatewayHeader.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/annotation/GatewayHeader.java @@ -16,9 +16,8 @@ package org.springframework.integration.annotation; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** @@ -28,7 +27,7 @@ import java.lang.annotation.Target; * @since 4.0 */ @Target({ }) -@Retention(RUNTIME) +@Retention(RetentionPolicy.RUNTIME) public @interface GatewayHeader { /** diff --git a/spring-integration-core/src/main/java/org/springframework/integration/annotation/Poller.java b/spring-integration-core/src/main/java/org/springframework/integration/annotation/Poller.java index 4b1848e038..98950158ad 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/annotation/Poller.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/annotation/Poller.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2015 the original author or authors. + * Copyright 2014-2016 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. @@ -16,9 +16,8 @@ package org.springframework.integration.annotation; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.integration.scheduling.PollerMetadata; @@ -43,7 +42,7 @@ import org.springframework.scheduling.support.PeriodicTrigger; * @since 4.0 */ @Target({}) -@Retention(RUNTIME) +@Retention(RetentionPolicy.RUNTIME) public @interface Poller { /** diff --git a/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationAdvisor.java b/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationAdvisor.java index 9466e65a9b..5b31225f78 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationAdvisor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationAdvisor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 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. @@ -108,7 +108,7 @@ public class PublisherAnnotationAdvisor extends AbstractPointcutAdvisor implemen } - private static class MetaAnnotationMatchingPointcut implements Pointcut { + private static final class MetaAnnotationMatchingPointcut implements Pointcut { private final ClassFilter classFilter; @@ -168,7 +168,7 @@ public class PublisherAnnotationAdvisor extends AbstractPointcutAdvisor implemen } - private static class MetaAnnotationMethodMatcher extends AnnotationMethodMatcher { + private static final class MetaAnnotationMethodMatcher extends AnnotationMethodMatcher { private final Class annotationType; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/DefaultHeaderChannelRegistry.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/DefaultHeaderChannelRegistry.java index 394743bf64..b2a1f57ee0 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/channel/DefaultHeaderChannelRegistry.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/DefaultHeaderChannelRegistry.java @@ -226,7 +226,7 @@ public class DefaultHeaderChannelRegistry extends IntegrationObjectSupport } - private class MessageChannelWrapper { + private final class MessageChannelWrapper { private final MessageChannel channel; @@ -237,11 +237,11 @@ public class DefaultHeaderChannelRegistry extends IntegrationObjectSupport this.expireAt = expireAt; } - public final long getExpireAt() { + public long getExpireAt() { return this.expireAt; } - public final MessageChannel getChannel() { + public MessageChannel getChannel() { return this.channel; } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java index 03548ce9f7..6b0594035a 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java @@ -103,7 +103,7 @@ public class PriorityChannel extends QueueChannel { return message; } - private static class SequenceFallbackComparator implements Comparator> { + private static final class SequenceFallbackComparator implements Comparator> { private final Comparator> targetComparator; @@ -136,7 +136,7 @@ public class PriorityChannel extends QueueChannel { } //we need this because of INT-2508 - private class MessageWrapper implements Message { + private final class MessageWrapper implements Message { private final Message rootMessage; private final long sequence; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/interceptor/ThreadStatePropagationChannelInterceptor.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/interceptor/ThreadStatePropagationChannelInterceptor.java index e408adc1d7..01e489b124 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/channel/interceptor/ThreadStatePropagationChannelInterceptor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/interceptor/ThreadStatePropagationChannelInterceptor.java @@ -91,7 +91,7 @@ public abstract class ThreadStatePropagationChannelInterceptor protected abstract void populatePropagatedContext(S state, Message message, MessageChannel channel); - private static class MessageWithThreadState implements Message { + private static final class MessageWithThreadState implements Message { private final Message message; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/FixedSubscriberChannelBeanFactoryPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/FixedSubscriberChannelBeanFactoryPostProcessor.java index df6e1b8132..8fc8bddf3e 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/FixedSubscriberChannelBeanFactoryPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/FixedSubscriberChannelBeanFactoryPostProcessor.java @@ -35,7 +35,7 @@ import org.springframework.util.Assert; * @since 4.0 * */ -public class FixedSubscriberChannelBeanFactoryPostProcessor implements BeanFactoryPostProcessor { +public final class FixedSubscriberChannelBeanFactoryPostProcessor implements BeanFactoryPostProcessor { private final Map candidateFixedChannelHandlerMap; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/ServiceActivatorAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/ServiceActivatorAnnotationPostProcessor.java index c853dbcbf6..1bb7ff3161 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/ServiceActivatorAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/ServiceActivatorAnnotationPostProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 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. @@ -84,7 +84,7 @@ public class ServiceActivatorAnnotationPostProcessor extends AbstractMethodAnnot return serviceActivator; } - private class ReplyProducingMessageHandlerWrapper extends AbstractReplyProducingMessageHandler + private final class ReplyProducingMessageHandlerWrapper extends AbstractReplyProducingMessageHandler implements Lifecycle { private final MessageHandler target; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java index b54d321285..4b5186d667 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java @@ -16,8 +16,6 @@ package org.springframework.integration.config.xml; -import static org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.ID_ATTRIBUTE; - import java.util.List; import java.util.Map; @@ -39,6 +37,7 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.ManagedList; import org.springframework.beans.factory.support.ManagedMap; import org.springframework.beans.factory.support.RootBeanDefinition; +import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser; import org.springframework.beans.factory.xml.BeanDefinitionParserDelegate; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.core.Conventions; @@ -407,7 +406,7 @@ public abstract class IntegrationNamespaceUtils { public static String[] generateAlias(Element element) { String[] handlerAlias = null; - String id = element.getAttribute(ID_ATTRIBUTE); + String id = element.getAttribute(AbstractBeanDefinitionParser.ID_ATTRIBUTE); if (StringUtils.hasText(id)) { handlerAlias = new String[] {id + IntegrationConfigUtils.HANDLER_ALIAS_SUFFIX}; } @@ -517,7 +516,7 @@ public abstract class IntegrationNamespaceUtils { } public static String createDirectChannel(Element element, ParserContext parserContext) { - String channelId = element.getAttribute(ID_ATTRIBUTE); + String channelId = element.getAttribute(AbstractBeanDefinitionParser.ID_ATTRIBUTE); if (!StringUtils.hasText(channelId)) { parserContext.getReaderContext().error("The channel-adapter's 'id' attribute is required when no 'channel' " + "reference has been provided, because that 'id' would be used for the created channel.", element); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/core/AsyncMessagingTemplate.java b/spring-integration-core/src/main/java/org/springframework/integration/core/AsyncMessagingTemplate.java index 4ec871f7f0..8e403de014 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/core/AsyncMessagingTemplate.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/core/AsyncMessagingTemplate.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2016 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. @@ -26,12 +26,12 @@ import org.springframework.core.task.support.TaskExecutorAdapter; import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.PollableChannel; -import org.springframework.integration.core.MessagingTemplate; import org.springframework.messaging.core.MessagePostProcessor; import org.springframework.util.Assert; /** * @author Mark Fisher + * @author Gary Russell * @since 2.0 */ public class AsyncMessagingTemplate extends MessagingTemplate implements AsyncMessagingOperations { @@ -45,177 +45,219 @@ public class AsyncMessagingTemplate extends MessagingTemplate implements AsyncMe (AsyncTaskExecutor) executor : new TaskExecutorAdapter(executor); } + @Override public Future asyncSend(final Message message) { return this.executor.submit(new Runnable() { + @Override public void run() { send(message); } }); } + @Override public Future asyncSend(final MessageChannel channel, final Message message) { return this.executor.submit(new Runnable() { + @Override public void run() { send(channel, message); } }); } + @Override public Future asyncSend(final String channelName, final Message message) { return this.executor.submit(new Runnable() { + @Override public void run() { send(channelName, message); } }); } + @Override public Future asyncConvertAndSend(final Object object) { return this.executor.submit(new Runnable() { + @Override public void run() { convertAndSend(object); } }); } + @Override public Future asyncConvertAndSend(final MessageChannel channel, final Object object) { return this.executor.submit(new Runnable() { + @Override public void run() { convertAndSend(channel, object); } }); } + @Override public Future asyncConvertAndSend(final String channelName, final Object object) { return this.executor.submit(new Runnable() { + @Override public void run() { convertAndSend(channelName, object); } }); } + @Override public Future> asyncReceive() { return this.executor.submit(new Callable>() { + @Override public Message call() throws Exception { return receive(); } }); } + @Override public Future> asyncReceive(final PollableChannel channel) { return this.executor.submit(new Callable>() { + @Override public Message call() throws Exception { return receive(channel); } }); } + @Override public Future> asyncReceive(final String channelName) { return this.executor.submit(new Callable>() { + @Override public Message call() throws Exception { return receive(channelName); } }); } + @Override @SuppressWarnings("unchecked") public Future asyncReceiveAndConvert() { return this.executor.submit(new Callable() { + @Override public R call() throws Exception { return (R) receiveAndConvert(null); } }); } + @Override @SuppressWarnings("unchecked") public Future asyncReceiveAndConvert(final PollableChannel channel) { return this.executor.submit(new Callable() { + @Override public R call() throws Exception { return (R) receiveAndConvert(channel, null); } }); } + @Override @SuppressWarnings("unchecked") public Future asyncReceiveAndConvert(final String channelName) { return this.executor.submit(new Callable() { + @Override public R call() throws Exception { return (R) receiveAndConvert(channelName, null); } }); } + @Override public Future> asyncSendAndReceive(final Message requestMessage) { return this.executor.submit(new Callable>() { + @Override public Message call() throws Exception { return sendAndReceive(requestMessage); } }); } + @Override public Future> asyncSendAndReceive(final MessageChannel channel, final Message requestMessage) { return this.executor.submit(new Callable>() { + @Override public Message call() throws Exception { return sendAndReceive(channel, requestMessage); } }); } + @Override public Future> asyncSendAndReceive(final String channelName, final Message requestMessage) { return this.executor.submit(new Callable>() { + @Override public Message call() throws Exception { return sendAndReceive(channelName, requestMessage); } }); } + @Override @SuppressWarnings("unchecked") public Future asyncConvertSendAndReceive(final Object request) { return this.executor.submit(new Callable() { + @Override public R call() throws Exception { return (R) convertSendAndReceive(request, null); } }); } + @Override @SuppressWarnings("unchecked") public Future asyncConvertSendAndReceive(final MessageChannel channel, final Object request) { return this.executor.submit(new Callable() { + @Override public R call() throws Exception { return (R) convertSendAndReceive(channel, request, null); } }); } + @Override @SuppressWarnings("unchecked") public Future asyncConvertSendAndReceive(final String channelName, final Object request) { return this.executor.submit(new Callable() { + @Override public R call() throws Exception { return (R) convertSendAndReceive(channelName, request, null); } }); } + @Override @SuppressWarnings("unchecked") public Future asyncConvertSendAndReceive(final Object request, final MessagePostProcessor requestPostProcessor) { return this.executor.submit(new Callable() { + @Override public R call() throws Exception { return (R) convertSendAndReceive(request, null, requestPostProcessor); } }); } + @Override @SuppressWarnings("unchecked") public Future asyncConvertSendAndReceive(final MessageChannel channel, final Object request, final MessagePostProcessor requestPostProcessor) { return this.executor.submit(new Callable() { + @Override public R call() throws Exception { return (R) convertSendAndReceive(channel, request, null, requestPostProcessor); } }); } + @Override @SuppressWarnings("unchecked") public Future asyncConvertSendAndReceive(final String channelName, final Object request, final MessagePostProcessor requestPostProcessor) { return this.executor.submit(new Callable() { + @Override public R call() throws Exception { return (R) convertSendAndReceive(channelName, request, null, requestPostProcessor); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractPollingEndpoint.java b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractPollingEndpoint.java index 5e84bef8ff..70513204b1 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractPollingEndpoint.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractPollingEndpoint.java @@ -312,7 +312,7 @@ public abstract class AbstractPollingEndpoint extends AbstractEndpoint implement /** * Default Poller implementation */ - private class Poller implements Runnable { + private final class Poller implements Runnable { private final Callable pollingTask; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/expression/ReloadableResourceBundleExpressionSource.java b/spring-integration-core/src/main/java/org/springframework/integration/expression/ReloadableResourceBundleExpressionSource.java index ba81942e1e..574e3c9ce7 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/expression/ReloadableResourceBundleExpressionSource.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/expression/ReloadableResourceBundleExpressionSource.java @@ -537,7 +537,7 @@ public class ReloadableResourceBundleExpressionSource implements ExpressionSourc * change detection, and the timestamp of the last refresh attempt * (updated every time the cache entry gets re-validated). */ - private class PropertiesHolder { + private final class PropertiesHolder { private Properties properties; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayCompletableFutureProxyFactoryBean.java b/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayCompletableFutureProxyFactoryBean.java index ae20224d22..1811b5144b 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayCompletableFutureProxyFactoryBean.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayCompletableFutureProxyFactoryBean.java @@ -65,7 +65,7 @@ public class GatewayCompletableFutureProxyFactoryBean extends GatewayProxyFactor return super.invoke(invocation); } - private class Invoker implements Supplier { + private final class Invoker implements Supplier { private final MethodInvocation invocation; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayProxyFactoryBean.java b/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayProxyFactoryBean.java index c5641c2eb4..1825157349 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayProxyFactoryBean.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayProxyFactoryBean.java @@ -613,7 +613,7 @@ public class GatewayProxyFactoryBean extends AbstractEndpoint } - private static class MethodInvocationGateway extends MessagingGatewaySupport { + private static final class MethodInvocationGateway extends MessagingGatewaySupport { private MethodInvocationGateway(GatewayMethodInboundMessageMapper messageMapper) { this.setRequestMapper(messageMapper); @@ -622,7 +622,7 @@ public class GatewayProxyFactoryBean extends AbstractEndpoint } - private class AsyncInvocationTask implements Callable { + private final class AsyncInvocationTask implements Callable { private final MethodInvocation invocation; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/ExpressionCommandMessageProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/ExpressionCommandMessageProcessor.java index 9d174f56ab..9bf2c7dae7 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/ExpressionCommandMessageProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/ExpressionCommandMessageProcessor.java @@ -79,7 +79,7 @@ public class ExpressionCommandMessageProcessor extends AbstractMessageProcessor< } - private static class ExpressionCommandMethodResolver extends ReflectiveMethodResolver { + private static final class ExpressionCommandMethodResolver extends ReflectiveMethodResolver { private final MethodFilter methodFilter; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/AbstractRequestHandlerAdvice.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/AbstractRequestHandlerAdvice.java index d1506566d8..96d11610ec 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/AbstractRequestHandlerAdvice.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/AbstractRequestHandlerAdvice.java @@ -182,7 +182,7 @@ public abstract class AbstractRequestHandlerAdvice extends IntegrationObjectSupp } @SuppressWarnings("serial") - private class ThrowableHolderException extends RuntimeException { + private final class ThrowableHolderException extends RuntimeException { private ThrowableHolderException(Throwable cause) { super(cause); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/RequestHandlerCircuitBreakerAdvice.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/RequestHandlerCircuitBreakerAdvice.java index 0e364fdab0..2410d828ae 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/RequestHandlerCircuitBreakerAdvice.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/RequestHandlerCircuitBreakerAdvice.java @@ -95,7 +95,7 @@ public class RequestHandlerCircuitBreakerAdvice extends AbstractRequestHandlerAd /** * An exception thrown when the circuit breaker is in an open state. */ - public static class CircuitBreakerOpenException extends RuntimeException { + public static final class CircuitBreakerOpenException extends RuntimeException { private static final long serialVersionUID = 1L; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/history/MessageHistory.java b/spring-integration-core/src/main/java/org/springframework/integration/history/MessageHistory.java index 91cf3c4a8b..b656559e6e 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/history/MessageHistory.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/history/MessageHistory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2016 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. @@ -37,7 +37,7 @@ import org.springframework.util.StringUtils; * @since 2.0 */ @SuppressWarnings("serial") -public class MessageHistory implements List, Serializable { +public final class MessageHistory implements List, Serializable { public static final String HEADER_NAME = "history"; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/mapping/support/JsonHeaders.java b/spring-integration-core/src/main/java/org/springframework/integration/mapping/support/JsonHeaders.java index 2827b6bfab..523e580b51 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/mapping/support/JsonHeaders.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/mapping/support/JsonHeaders.java @@ -28,7 +28,7 @@ import java.util.Collections; * @author Gary Russell * @since 3.0 */ -public class JsonHeaders { +public final class JsonHeaders { private JsonHeaders() { super(); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java index 70d54758ec..dec8a8a6bd 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java @@ -58,6 +58,7 @@ import org.springframework.messaging.Message; * * * @author Artem Bilan + * @author Gary Russell * @since 4.1 */ public class ExpressionEvaluatingRoutingSlipRouteStrategy @@ -101,6 +102,11 @@ public class ExpressionEvaluatingRoutingSlipRouteStrategy String.class); } + @Override + public String toString() { + return "ExpressionEvaluatingRoutingSlipRouteStrategy for: [" + this.expression.getExpressionString() + "]"; + } + public static class RequestAndReply { private final Message request; @@ -122,10 +128,4 @@ public class ExpressionEvaluatingRoutingSlipRouteStrategy } } - - @Override - public String toString() { - return "ExpressionEvaluatingRoutingSlipRouteStrategy for: [" + this.expression.getExpressionString() + "]"; - } - } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/store/AbstractKeyValueMessageStore.java b/spring-integration-core/src/main/java/org/springframework/integration/store/AbstractKeyValueMessageStore.java index 987014e148..9b973630f3 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/store/AbstractKeyValueMessageStore.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/store/AbstractKeyValueMessageStore.java @@ -356,7 +356,7 @@ public abstract class AbstractKeyValueMessageStore extends AbstractMessageGroupS return (Message) message; } - private class MessageGroupIterator implements Iterator { + private final class MessageGroupIterator implements Iterator { private final Iterator idIterator; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/MutableMessageBuilder.java b/spring-integration-core/src/main/java/org/springframework/integration/support/MutableMessageBuilder.java index 3d9889d7a5..743518b983 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/MutableMessageBuilder.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/MutableMessageBuilder.java @@ -34,7 +34,7 @@ import org.springframework.util.StringUtils; * @since 4.0 * */ -public class MutableMessageBuilder extends AbstractIntegrationMessageBuilder { +public final class MutableMessageBuilder extends AbstractIntegrationMessageBuilder { private final MutableMessage mutableMessage; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/utils/IntegrationUtils.java b/spring-integration-core/src/main/java/org/springframework/integration/support/utils/IntegrationUtils.java index f13b345c3c..69538d5d65 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/utils/IntegrationUtils.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/utils/IntegrationUtils.java @@ -35,7 +35,7 @@ import org.springframework.util.Assert; * @since 4.0 * */ -public class IntegrationUtils { +public final class IntegrationUtils { private static final Log logger = LogFactory.getLog(IntegrationUtils.class); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transaction/DefaultTransactionSynchronizationFactory.java b/spring-integration-core/src/main/java/org/springframework/integration/transaction/DefaultTransactionSynchronizationFactory.java index 845cd97543..77a668350b 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/transaction/DefaultTransactionSynchronizationFactory.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/transaction/DefaultTransactionSynchronizationFactory.java @@ -53,7 +53,7 @@ public class DefaultTransactionSynchronizationFactory implements TransactionSync /** */ - private class DefaultTransactionalResourceSynchronization extends IntegrationResourceHolderSynchronization { + private final class DefaultTransactionalResourceSynchronization extends IntegrationResourceHolderSynchronization { private DefaultTransactionalResourceSynchronization(Object resourceKey) { super(new IntegrationResourceHolder(), resourceKey); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/util/MessagingMethodInvokerHelper.java b/spring-integration-core/src/main/java/org/springframework/integration/util/MessagingMethodInvokerHelper.java index 3b2801e848..7572253e9e 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/util/MessagingMethodInvokerHelper.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/util/MessagingMethodInvokerHelper.java @@ -922,7 +922,7 @@ public class MessagingMethodInvokerHelper extends AbstractExpressionEvaluator } @SuppressWarnings("serial") - private static class IneligibleMethodException extends RuntimeException { + private static final class IneligibleMethodException extends RuntimeException { private IneligibleMethodException(String message) { super(message); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/util/StackTraceUtils.java b/spring-integration-core/src/main/java/org/springframework/integration/util/StackTraceUtils.java index 9a0911d773..76efffc06f 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/util/StackTraceUtils.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/util/StackTraceUtils.java @@ -23,7 +23,7 @@ package org.springframework.integration.util; * @since 3.0 * */ -public class StackTraceUtils { +public final class StackTraceUtils { private StackTraceUtils() {} diff --git a/spring-integration-core/src/test/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandlerTests.java b/spring-integration-core/src/test/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandlerTests.java index 99dd58aa54..afbbe69849 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandlerTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandlerTests.java @@ -16,8 +16,14 @@ package org.springframework.integration.aggregator; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import java.lang.reflect.Method; import java.util.ArrayList; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/aggregator/ResequencingMessageGroupProcessorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/aggregator/ResequencingMessageGroupProcessorTests.java index 7d94f8a482..0070c42d6e 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/aggregator/ResequencingMessageGroupProcessorTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/aggregator/ResequencingMessageGroupProcessorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2016 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. @@ -16,23 +16,26 @@ package org.springframework.integration.aggregator; -import org.junit.Test; -import org.springframework.messaging.Message; -import org.springframework.integration.store.SimpleMessageGroup; -import org.springframework.integration.support.MessageBuilder; +import static org.hamcrest.Matchers.hasItems; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; import java.util.ArrayList; import java.util.List; -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.assertThat; +import org.junit.Test; + +import org.springframework.integration.store.SimpleMessageGroup; +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; /** * @author Iwein Fuld + * @author Gary Russell */ public class ResequencingMessageGroupProcessorTests { - private ResequencingMessageGroupProcessor processor = new ResequencingMessageGroupProcessor(); + private final ResequencingMessageGroupProcessor processor = new ResequencingMessageGroupProcessor(); @SuppressWarnings({ "rawtypes", "unchecked" }) @Test @@ -49,7 +52,7 @@ public class ResequencingMessageGroupProcessorTests { List processedMessages = (List) processor.processMessageGroup(group); assertThat(processedMessages, hasItems(message1, message2, message3)); } - + @SuppressWarnings({ "rawtypes", "unchecked" }) @Test public void shouldPartiallProcessIncompleteSequence() { @@ -66,4 +69,5 @@ public class ResequencingMessageGroupProcessorTests { assertThat(processedMessages, hasItems(message1)); assertThat(processedMessages.size(), is(1)); } + } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/aggregator/scenarios/PartialSequencesWithGapsTests.java b/spring-integration-core/src/test/java/org/springframework/integration/aggregator/scenarios/PartialSequencesWithGapsTests.java index 9e38fe5cb9..aac6eacbf8 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/aggregator/scenarios/PartialSequencesWithGapsTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/aggregator/scenarios/PartialSequencesWithGapsTests.java @@ -16,27 +16,31 @@ package org.springframework.integration.aggregator.scenarios; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.messaging.Message; -import org.springframework.messaging.MessageChannel; -import org.springframework.messaging.MessagingException; -import org.springframework.messaging.MessageHandler; -import org.springframework.messaging.SubscribableChannel; -import org.springframework.integration.IntegrationMessageHeaderAccessor; -import org.springframework.integration.support.MessageBuilder; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.nullValue; +import static org.junit.Assert.assertThat; import java.util.Queue; import java.util.concurrent.ArrayBlockingQueue; -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.assertThat; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.IntegrationMessageHeaderAccessor; +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.MessageHandler; +import org.springframework.messaging.MessagingException; +import org.springframework.messaging.SubscribableChannel; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * @author Iwein Fuld + * @author Gary Russell */ @ContextConfiguration @RunWith(SpringJUnit4ClassRunner.class) @@ -54,6 +58,7 @@ public class PartialSequencesWithGapsTests { @Before public void collectOutput() { out.subscribe(new MessageHandler() { + @Override public void handleMessage(Message message) throws MessagingException { received.add(message); } @@ -81,4 +86,5 @@ public class PartialSequencesWithGapsTests { .setSequenceSize(sequenceSize) .setCorrelationId("foo").build(); } + } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/DirectChannelParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/channel/DirectChannelParserTests.java index ed226e3689..a1eb459ab5 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/channel/DirectChannelParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/DirectChannelParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2008 the original author or authors. + * Copyright 2002-2016 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. @@ -23,12 +23,12 @@ import org.junit.Test; import org.springframework.beans.DirectFieldAccessor; import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.dispatcher.RoundRobinLoadBalancingStrategy; /** * @author Mark Fisher * @author Oleg Zhurakousky + * @author Gary Russell */ public class DirectChannelParserTests { @@ -40,6 +40,7 @@ public class DirectChannelParserTests { assertEquals(DirectChannel.class, channel.getClass()); DirectFieldAccessor dcAccessor = new DirectFieldAccessor(((DirectChannel)channel).getDispatcher()); assertTrue(dcAccessor.getPropertyValue("loadBalancingStrategy") instanceof RoundRobinLoadBalancingStrategy); + context.close(); } } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelWithCustomQueueParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelWithCustomQueueParserTests.java index 9c03bf20cc..d155316adb 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelWithCustomQueueParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelWithCustomQueueParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2016 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. @@ -16,15 +16,17 @@ package org.springframework.integration.channel.config; +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; -import static org.hamcrest.CoreMatchers.*; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import org.junit.Test; import org.junit.runner.RunWith; + import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -38,6 +40,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * * @author Iwein Fuld * @author Gunnar Hillert + * @author Gary Russell * * @see ChannelWithCustomQueueParserTests */ diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/ImplicitConsumerChannelTests.java b/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/ImplicitConsumerChannelTests.java index d1ca2618b8..cf887354c4 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/ImplicitConsumerChannelTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/ImplicitConsumerChannelTests.java @@ -16,8 +16,10 @@ package org.springframework.integration.channel.interceptor; -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; +import static org.hamcrest.Matchers.anyOf; +import static org.hamcrest.Matchers.instanceOf; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; import java.util.List; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessorTests.java index 8c041e5af5..493e618e8c 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessorTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessorTests.java @@ -16,7 +16,9 @@ package org.springframework.integration.config.annotation; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -81,7 +83,7 @@ public class MessagingAnnotationPostProcessorTests { inputChannel.send(new GenericMessage("world")); Message reply = outputChannel.receive(0); assertEquals("hello world", reply.getPayload()); - context.stop(); + context.close(); } @Test @@ -100,7 +102,7 @@ public class MessagingAnnotationPostProcessorTests { inputChannel.send(messageToSend); message = outputChannel.receive(1000); assertEquals("hello world advised", message.getPayload()); - context.stop(); + context.close(); } @Test @@ -113,7 +115,7 @@ public class MessagingAnnotationPostProcessorTests { inputChannel.send(new GenericMessage("world")); Message message = outputChannel.receive(1000); assertEquals("hello world", message.getPayload()); - context.stop(); + context.close(); } @Test @@ -126,7 +128,7 @@ public class MessagingAnnotationPostProcessorTests { inputChannel.send(new GenericMessage("123")); Message message = outputChannel.receive(1000); assertEquals(246, message.getPayload()); - context.stop(); + context.close(); } @Test @@ -353,6 +355,7 @@ public class MessagingAnnotationPostProcessorTests { private static class SimpleAnnotatedEndpointImplementation implements SimpleAnnotatedEndpointInterface { + @Override @ServiceActivator(inputChannel="inputChannel", outputChannel="outputChannel") public String test(String input) { return "test-" + input; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/ControlBusRecipientListRouterTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/ControlBusRecipientListRouterTests.java index 8f8e4dcda3..6188ffeaa9 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/ControlBusRecipientListRouterTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/ControlBusRecipientListRouterTests.java @@ -142,7 +142,8 @@ public class ControlBusRecipientListRouterTests { MessagingTemplate messagingTemplate = new MessagingTemplate(); messagingTemplate.setReceiveTimeout(1000); - Map map = new HashMap();map.put("channel6","true"); + Map map = new HashMap(); + map.put("channel6","true"); Message message = MessageBuilder.withPayload("@'simpleRouter.handler'.setRecipientMappings(headers.recipientMap)").setHeader("recipientMap", map).build(); this.input.send(message); message = new GenericMessage(1); diff --git a/spring-integration-core/src/test/java/org/springframework/integration/dispatcher/RoundRobinDispatcherTests.java b/spring-integration-core/src/test/java/org/springframework/integration/dispatcher/RoundRobinDispatcherTests.java index d250c864be..95327bcf06 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/dispatcher/RoundRobinDispatcherTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/dispatcher/RoundRobinDispatcherTests.java @@ -16,24 +16,26 @@ package org.springframework.integration.dispatcher; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.atLeast; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import java.util.concurrent.atomic.AtomicInteger; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; -import static org.mockito.Mockito.doThrow; import org.mockito.runners.MockitoJUnitRunner; + import org.springframework.beans.DirectFieldAccessor; -import org.springframework.messaging.Message; -import org.springframework.messaging.MessagingException; -import org.springframework.messaging.MessageHandler; import org.springframework.integration.support.MessageBuilder; - -import java.util.concurrent.atomic.AtomicInteger; - -import static org.mockito.Mockito.*; +import org.springframework.messaging.Message; +import org.springframework.messaging.MessageHandler; +import org.springframework.messaging.MessagingException; /** * @author Iwein Fuld @@ -43,7 +45,7 @@ import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class RoundRobinDispatcherTests { - private UnicastingDispatcher dispatcher = new UnicastingDispatcher(); + private final UnicastingDispatcher dispatcher = new UnicastingDispatcher(); @Mock private MessageHandler handler; @@ -84,7 +86,7 @@ public class RoundRobinDispatcherTests { dispatcher.dispatch(message); } verify(handler, times(4)).handleMessage(message); - verify(differentHandler, times(3)).handleMessage(message); + verify(differentHandler, times(3)).handleMessage(message); } @Test diff --git a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/PseudoTransactionalMessageSourceTests.java b/spring-integration-core/src/test/java/org/springframework/integration/endpoint/PseudoTransactionalMessageSourceTests.java index 10d89539c0..4eb65a18ab 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/PseudoTransactionalMessageSourceTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/endpoint/PseudoTransactionalMessageSourceTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 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. @@ -16,8 +16,11 @@ package org.springframework.integration.endpoint; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; import java.lang.reflect.Method; import java.util.concurrent.atomic.AtomicInteger; @@ -29,7 +32,7 @@ import org.mockito.Mockito; import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.factory.BeanFactory; -import org.springframework.context.ApplicationContext; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -86,6 +89,7 @@ public class PseudoTransactionalMessageSourceTests { adapter.setOutputChannel(outputChannel); adapter.setSource(new MessageSource() { + @Override public Message receive() { GenericMessage message = new GenericMessage("foo"); IntegrationResourceHolder holder = @@ -127,7 +131,7 @@ public class PseudoTransactionalMessageSourceTests { @Test public void testTransactionSynchronizationFactoryBean() { - ApplicationContext ctx = new AnnotationConfigApplicationContext(TestTxSyncConfiguration.class); + ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(TestTxSyncConfiguration.class); TransactionSynchronizationFactory syncFactory = ctx.getBean(TransactionSynchronizationFactory.class); @@ -141,6 +145,7 @@ public class PseudoTransactionalMessageSourceTests { adapter.setOutputChannel(outputChannel); adapter.setSource(new MessageSource() { + @Override public Message receive() { GenericMessage message = new GenericMessage("foo"); IntegrationResourceHolder holder = @@ -165,6 +170,7 @@ public class PseudoTransactionalMessageSourceTests { TransactionSynchronizationUtils.triggerAfterCompletion(TransactionSynchronization.STATUS_COMMITTED); TransactionSynchronizationManager.clearSynchronization(); TransactionSynchronizationManager.setActualTransactionActive(false); + ctx.close(); } @@ -187,6 +193,7 @@ public class PseudoTransactionalMessageSourceTests { adapter.setOutputChannel(outputChannel); adapter.setSource(new MessageSource() { + @Override public Message receive() { GenericMessage message = new GenericMessage("foo"); ((IntegrationResourceHolder) TransactionSynchronizationManager.getResource(this)) @@ -212,6 +219,7 @@ public class PseudoTransactionalMessageSourceTests { TransactionTemplate transactionTemplate = new TransactionTemplate(new PseudoTransactionManager()); transactionTemplate.execute(new TransactionCallback() { + @Override public Object doInTransaction(TransactionStatus status) { SourcePollingChannelAdapter adapter = new SourcePollingChannelAdapter(); ExpressionEvaluatingTransactionSynchronizationProcessor syncProcessor = @@ -231,6 +239,7 @@ public class PseudoTransactionalMessageSourceTests { adapter.setOutputChannel(outputChannel); adapter.setSource(new MessageSource() { + @Override public Message receive() { GenericMessage message = new GenericMessage("foo"); IntegrationResourceHolder holder = @@ -260,6 +269,7 @@ public class PseudoTransactionalMessageSourceTests { try { transactionTemplate.execute(new TransactionCallback() { + @Override public Object doInTransaction(TransactionStatus status) { SourcePollingChannelAdapter adapter = new SourcePollingChannelAdapter(); @@ -278,6 +288,7 @@ public class PseudoTransactionalMessageSourceTests { adapter.setOutputChannel(outputChannel); adapter.setSource(new MessageSource() { + @Override public Message receive() { GenericMessage message = new GenericMessage("foo"); ((IntegrationResourceHolder) TransactionSynchronizationManager.getResource(this)) @@ -305,6 +316,7 @@ public class PseudoTransactionalMessageSourceTests { TransactionTemplate transactionTemplate = new TransactionTemplate(new PseudoTransactionManager()); transactionTemplate.execute(new TransactionCallback() { + @Override public Object doInTransaction(TransactionStatus status) { SourcePollingChannelAdapter adapter = new SourcePollingChannelAdapter(); @@ -323,6 +335,7 @@ public class PseudoTransactionalMessageSourceTests { adapter.setOutputChannel(outputChannel); adapter.setSource(new MessageSource() { + @Override public Message receive() { GenericMessage message = new GenericMessage("foo"); ((IntegrationResourceHolder) TransactionSynchronizationManager.getResource(this)) @@ -347,6 +360,7 @@ public class PseudoTransactionalMessageSourceTests { adapter.setSource(new MessageSource() { + @Override public Message receive() { return null; } @@ -370,6 +384,7 @@ public class PseudoTransactionalMessageSourceTests { TransactionSynchronizationFactory syncFactory = new TransactionSynchronizationFactory() { + @Override public TransactionSynchronization create(Object key) { return new TransactionSynchronizationAdapter() { @Override @@ -383,6 +398,7 @@ public class PseudoTransactionalMessageSourceTests { adapter.setTransactionSynchronizationFactory(syncFactory); adapter.setSource(new MessageSource() { + @Override public Message receive() { return null; } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/json/JsonOutboundMessageMapperTests.java b/spring-integration-core/src/test/java/org/springframework/integration/json/JsonOutboundMessageMapperTests.java index f6b393aaa9..3eb565e96a 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/json/JsonOutboundMessageMapperTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/json/JsonOutboundMessageMapperTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2016 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. @@ -16,14 +16,11 @@ package org.springframework.integration.json; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.io.IOException; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.Test; import org.springframework.integration.history.MessageHistory; @@ -32,8 +29,14 @@ import org.springframework.integration.support.context.NamedComponent; import org.springframework.integration.support.json.JsonOutboundMessageMapper; import org.springframework.messaging.Message; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.ObjectMapper; + /** * @author Jeremy Grelle + * @author Gary Russell * @since 2.0 */ public class JsonOutboundMessageMapperTests { @@ -128,10 +131,12 @@ public class JsonOutboundMessageMapperTests { this.id = id; } + @Override public String getComponentName() { return "testName-" + this.id; } + @Override public String getComponentType() { return "testType-" + this.id; } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/json/JsonToObjectTransformerTests.java b/spring-integration-core/src/test/java/org/springframework/integration/json/JsonToObjectTransformerTests.java index a318983c39..c78ffd3d16 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/json/JsonToObjectTransformerTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/json/JsonToObjectTransformerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2016 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. @@ -16,10 +16,8 @@ package org.springframework.integration.json; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.Test; import org.springframework.integration.support.json.BoonJsonObjectMapper; @@ -27,9 +25,13 @@ import org.springframework.integration.support.json.Jackson2JsonObjectMapper; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.ObjectMapper; + /** * @author Mark Fisher * @author Artem Bilan + * @author Gary Russell * @since 2.0 */ public class JsonToObjectTransformerTests { diff --git a/spring-integration-core/src/test/java/org/springframework/integration/json/ObjectToJsonTransformerParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/json/ObjectToJsonTransformerParserTests.java index 902de88128..a6494e2923 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/json/ObjectToJsonTransformerParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/json/ObjectToJsonTransformerParserTests.java @@ -16,13 +16,16 @@ package org.springframework.integration.json; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.fasterxml.jackson.databind.JsonNode; import org.hamcrest.Matchers; import org.junit.Test; import org.junit.runner.RunWith; @@ -44,6 +47,8 @@ import org.springframework.messaging.MessageHeaders; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import com.fasterxml.jackson.databind.JsonNode; + /** * @author Mark Fisher * @author Oleg Zhurakousky diff --git a/spring-integration-core/src/test/java/org/springframework/integration/router/config/SplitterParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/router/config/SplitterParserTests.java index 1e60444c10..ea0b0dfabd 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/router/config/SplitterParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/router/config/SplitterParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2016 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. @@ -16,26 +16,29 @@ package org.springframework.integration.router.config; -import org.junit.Test; - -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.messaging.Message; -import org.springframework.messaging.MessageChannel; -import org.springframework.integration.IntegrationMessageHeaderAccessor; -import org.springframework.integration.channel.DirectChannel; -import org.springframework.messaging.PollableChannel; -import org.springframework.integration.handler.ReplyRequiredException; -import org.springframework.messaging.support.GenericMessage; -import org.springframework.integration.support.MessageBuilder; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThat; import java.util.Collections; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.*; +import org.junit.Test; + +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.IntegrationMessageHeaderAccessor; +import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.handler.ReplyRequiredException; +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.PollableChannel; +import org.springframework.messaging.support.GenericMessage; /** * @author Mark Fisher * @author Iwein Fuld + * @author Gary Russell */ public class SplitterParserTests { @@ -56,6 +59,7 @@ public class SplitterParserTests { Message result4 = output.receive(1000); assertEquals("test", result4.getPayload()); assertNull(output.receive(0)); + context.close(); } @Test @@ -75,6 +79,7 @@ public class SplitterParserTests { Message result4 = output.receive(1000); assertEquals("test", result4.getPayload()); assertNull(output.receive(0)); + context.close(); } @Test @@ -94,6 +99,7 @@ public class SplitterParserTests { Message result4 = output.receive(1000); assertEquals("test", result4.getPayload()); assertNull(output.receive(0)); + context.close(); } @Test(expected = ReplyRequiredException.class) @@ -103,6 +109,7 @@ public class SplitterParserTests { context.start(); DirectChannel inputChannel = context.getBean("requiresReplyInput", DirectChannel.class); inputChannel.send(MessageBuilder.withPayload(Collections.emptyList()).build()); + context.close(); } @Test @@ -116,7 +123,7 @@ public class SplitterParserTests { Message message = output.receive(1000); assertThat(new IntegrationMessageHeaderAccessor(message).getSequenceNumber(), is(0)); assertThat(new IntegrationMessageHeaderAccessor(message).getSequenceSize(), is(0)); + context.close(); } - } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/router/config/splitterParserTests.xml b/spring-integration-core/src/test/java/org/springframework/integration/router/config/splitterParserTests.xml index 3fec3be6fa..accfeea861 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/router/config/splitterParserTests.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/router/config/splitterParserTests.xml @@ -26,10 +26,10 @@ ref="splitterImpl" input-channel="splitterImplementationInput" output-channel="output"/> - + words = Arrays.asList(sentence.split("\\s")); + private final List words = Arrays.asList(sentence.split("\\s")); @Autowired Receiver receiver; @@ -84,7 +85,7 @@ public class SplitterIntegrationTests { @MessageEndpoint public static class Receiver { - private List receivedWords = new ArrayList(); + private final List receivedWords = new ArrayList(); @ServiceActivator(inputChannel = "out") public void deliveredWords(String string) { @@ -137,7 +138,8 @@ public class SplitterIntegrationTests { @Test(expected = IllegalArgumentException.class) public void delimitersNotAllowedWithRef() throws Throwable { try { - new ClassPathXmlApplicationContext("SplitterIntegrationTests-invalidRef.xml", SplitterIntegrationTests.class); + new ClassPathXmlApplicationContext("SplitterIntegrationTests-invalidRef.xml", + SplitterIntegrationTests.class).close(); } catch (BeanCreationException e) { Throwable cause = e.getMostSpecificCause(); @@ -151,7 +153,8 @@ public class SplitterIntegrationTests { @Test(expected = IllegalArgumentException.class) public void delimitersNotAllowedWithInnerBean() throws Throwable { try { - new ClassPathXmlApplicationContext("SplitterIntegrationTests-invalidInnerBean.xml", SplitterIntegrationTests.class); + new ClassPathXmlApplicationContext("SplitterIntegrationTests-invalidInnerBean.xml", + SplitterIntegrationTests.class).close(); } catch (BeanCreationException e) { Throwable cause = e.getMostSpecificCause(); @@ -165,7 +168,8 @@ public class SplitterIntegrationTests { @Test(expected = IllegalArgumentException.class) public void delimitersNotAllowedWithExpression() throws Throwable { try { - new ClassPathXmlApplicationContext("SplitterIntegrationTests-invalidExpression.xml", SplitterIntegrationTests.class); + new ClassPathXmlApplicationContext("SplitterIntegrationTests-invalidExpression.xml", + SplitterIntegrationTests.class).close(); } catch (BeanCreationException e) { Throwable cause = e.getMostSpecificCause(); diff --git a/spring-integration-core/src/test/java/org/springframework/integration/splitter/StreamingSplitterTests.java b/spring-integration-core/src/test/java/org/springframework/integration/splitter/StreamingSplitterTests.java index dcc70401a9..99e40ac87f 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/splitter/StreamingSplitterTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/splitter/StreamingSplitterTests.java @@ -16,8 +16,10 @@ package org.springframework.integration.splitter; -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.notNullValue; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import java.util.Collections; import java.util.Comparator; @@ -47,6 +49,7 @@ import org.springframework.messaging.support.GenericMessage; /** * @author Alex Peters * @author Artem Bilan + * @author Gary Russell * @since 4.1 */ public class StreamingSplitterTests { @@ -72,6 +75,7 @@ public class StreamingSplitterTests { List> receivedMessages = replyChannel.clear(); Collections.sort(receivedMessages, new Comparator>() { + @Override public int compare(Message o1, Message o2) { return o1.getHeaders().get(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, Integer.class) .compareTo(o2.getHeaders().get(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, Integer.class)); @@ -146,6 +150,7 @@ public class StreamingSplitterTests { new EventDrivenConsumer(replyChannel, new MessageHandler() { + @Override public void handleMessage(Message message) throws MessagingException { assertThat("Failure with msg: " + message, message.getHeaders().get(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, Integer.class), @@ -167,6 +172,7 @@ public class StreamingSplitterTests { final AtomicInteger receivedMessageCounter = new AtomicInteger(0); new EventDrivenConsumer(replyChannel, new MessageHandler() { + @Override public void handleMessage(Message message) throws MessageRejectedException, MessageHandlingException, MessageDeliveryException { @@ -196,10 +202,12 @@ public class StreamingSplitterTests { public Iterator annotatedMethod(String input) { return new Iterator() { + @Override public boolean hasNext() { return counter.get() < max; } + @Override public String next() { if (!hasNext()) { throw new IllegalStateException("Last element reached!"); @@ -207,6 +215,7 @@ public class StreamingSplitterTests { return String.valueOf(counter.incrementAndGet()); } + @Override public void remove() { throw new AssertionError("not implemented!"); @@ -230,14 +239,17 @@ public class StreamingSplitterTests { public Iterable annotatedMethod(String input) { return new Iterable() { + @Override public Iterator iterator() { return new Iterator() { + @Override public boolean hasNext() { return counter.get() < max; } + @Override public String next() { if (!hasNext()) { throw new IllegalStateException( @@ -246,6 +258,7 @@ public class StreamingSplitterTests { return String.valueOf(counter.incrementAndGet()); } + @Override public void remove() { throw new AssertionError("not implemented!"); diff --git a/spring-integration-core/src/test/java/org/springframework/integration/transformer/ObjectToMapTransformerTests.java b/spring-integration-core/src/test/java/org/springframework/integration/transformer/ObjectToMapTransformerTests.java index a0f57d52e9..f8a4ae0440 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/transformer/ObjectToMapTransformerTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/transformer/ObjectToMapTransformerTests.java @@ -16,7 +16,9 @@ package org.springframework.integration.transformer; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import java.io.IOException; import java.math.BigDecimal; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/transformer/PayloadTypeConvertingTransformerTests.java b/spring-integration-core/src/test/java/org/springframework/integration/transformer/PayloadTypeConvertingTransformerTests.java index 284d85d5ad..5937234cf1 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/transformer/PayloadTypeConvertingTransformerTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/transformer/PayloadTypeConvertingTransformerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2016 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. @@ -16,9 +16,10 @@ package org.springframework.integration.transformer; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import org.junit.Test; + import org.springframework.core.convert.converter.Converter; /** @@ -29,16 +30,21 @@ import org.springframework.core.convert.converter.Converter; public class PayloadTypeConvertingTransformerTests { /** - * Test method for {@link org.springframework.integration.transformer.PayloadTypeConvertingTransformer#transformPayload(java.lang.Object)}. + * Test method for + * {@link org.springframework.integration.transformer.PayloadTypeConvertingTransformer#transformPayload(java.lang.Object)} + * . */ @Test public void testTransformPayloadObject() throws Exception { PayloadTypeConvertingTransformer tx = new PayloadTypeConvertingTransformer(); tx.setConverter(new Converter () { + + @Override public String convert(String source) { return source.toUpperCase(); - }} - ); + } + + }); String in = "abcd"; String out = tx.transformPayload(in); assertEquals("ABCD", out); diff --git a/spring-integration-core/src/test/java/org/springframework/integration/transformer/SysLogTransformerTests.java b/spring-integration-core/src/test/java/org/springframework/integration/transformer/SysLogTransformerTests.java index cba7dff4c7..a4ea4340f7 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/transformer/SysLogTransformerTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/transformer/SysLogTransformerTests.java @@ -16,7 +16,9 @@ package org.springframework.integration.transformer; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import java.util.Date; import java.util.Map; @@ -32,7 +34,7 @@ import org.junit.Test; */ public class SysLogTransformerTests { - private SyslogToMapTransformer sut = new SyslogToMapTransformer(); + private final SyslogToMapTransformer sut = new SyslogToMapTransformer(); @Test public void testMap() throws Exception { diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/HeadDirectoryScanner.java b/spring-integration-file/src/main/java/org/springframework/integration/file/HeadDirectoryScanner.java index 4fce558a50..e27f5e91a8 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/HeadDirectoryScanner.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/HeadDirectoryScanner.java @@ -57,7 +57,7 @@ public class HeadDirectoryScanner extends DefaultDirectoryScanner { } - private static class HeadFilter implements FileListFilter { + private static final class HeadFilter implements FileListFilter { private final int maxNumberOfFiles; diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileTemplate.java b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileTemplate.java index 55befb2fbd..d609a87c50 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileTemplate.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileTemplate.java @@ -548,7 +548,7 @@ public class RemoteFileTemplate implements RemoteFileOperations, Initializ return directoryPath; } - private class StreamHolder { + private final class StreamHolder { private final InputStream stream; diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileUtils.java b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileUtils.java index 778fe25fcf..07cbd91466 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileUtils.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileUtils.java @@ -30,7 +30,7 @@ import org.springframework.integration.file.remote.session.Session; * @since 3.0 * */ -public class RemoteFileUtils { +public final class RemoteFileUtils { private RemoteFileUtils() {} diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/session/CachingSessionFactory.java b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/session/CachingSessionFactory.java index 7a49e07be0..b1c089ca62 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/session/CachingSessionFactory.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/session/CachingSessionFactory.java @@ -157,7 +157,7 @@ public class CachingSessionFactory implements SessionFactory, DisposableBe this.pool.removeAllIdleItems(); } - public class CachedSession implements Session { + public class CachedSession implements Session { //NOSONAR (final) private final Session targetSession; diff --git a/spring-integration-file/src/test/java/org/springframework/integration/file/CompositeFileListFilterTests.java b/spring-integration-file/src/test/java/org/springframework/integration/file/CompositeFileListFilterTests.java index f03dd5f2f1..1ea50faed7 100644 --- a/spring-integration-file/src/test/java/org/springframework/integration/file/CompositeFileListFilterTests.java +++ b/spring-integration-file/src/test/java/org/springframework/integration/file/CompositeFileListFilterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2016 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. @@ -35,50 +35,52 @@ import org.springframework.integration.file.filters.FileListFilter; /** * @author Iwein Fuld + * @author Gary Russell */ public class CompositeFileListFilterTests { - @SuppressWarnings("unchecked") - private FileListFilter fileFilterMock1 = mock(FileListFilter.class); + @SuppressWarnings("unchecked") + private final FileListFilter fileFilterMock1 = mock(FileListFilter.class); - @SuppressWarnings("unchecked") - private FileListFilter fileFilterMock2 = mock(FileListFilter.class); + @SuppressWarnings("unchecked") + private final FileListFilter fileFilterMock2 = mock(FileListFilter.class); - private File fileMock = mock(File.class); + private final File fileMock = mock(File.class); - @Test - public void forwardedToFilters() throws Exception { - CompositeFileListFilter compositeFileFilter = new CompositeFileListFilter(); - compositeFileFilter .addFilter(fileFilterMock1);compositeFileFilter.addFilter(fileFilterMock2); - List returnedFiles = Arrays.asList( fileMock); - when(fileFilterMock1.filterFiles(isA(File[].class))).thenReturn(returnedFiles); - when(fileFilterMock2.filterFiles(isA(File[].class))).thenReturn(returnedFiles); - assertEquals(returnedFiles, compositeFileFilter.filterFiles(new File[]{fileMock})); - verify(fileFilterMock1).filterFiles(isA(File[].class)); - verify(fileFilterMock2).filterFiles(isA(File[].class)); - } + @Test + public void forwardedToFilters() throws Exception { + CompositeFileListFilter compositeFileFilter = new CompositeFileListFilter(); + compositeFileFilter.addFilter(fileFilterMock1); + compositeFileFilter.addFilter(fileFilterMock2); + List returnedFiles = Arrays.asList(fileMock); + when(fileFilterMock1.filterFiles(isA(File[].class))).thenReturn(returnedFiles); + when(fileFilterMock2.filterFiles(isA(File[].class))).thenReturn(returnedFiles); + assertEquals(returnedFiles, compositeFileFilter.filterFiles(new File[] { fileMock })); + verify(fileFilterMock1).filterFiles(isA(File[].class)); + verify(fileFilterMock2).filterFiles(isA(File[].class)); + } - @Test - public void forwardedToAddedFilters() throws Exception { - CompositeFileListFilter compositeFileFilter = new CompositeFileListFilter(); - compositeFileFilter.addFilter(fileFilterMock1); - compositeFileFilter.addFilter( fileFilterMock2); - List returnedFiles = Arrays.asList(fileMock); - when(fileFilterMock1.filterFiles(isA(File[].class))).thenReturn(returnedFiles); - when(fileFilterMock2.filterFiles(isA(File[].class))).thenReturn(returnedFiles); - assertEquals(returnedFiles, compositeFileFilter.filterFiles(new File[]{fileMock})); - verify(fileFilterMock1).filterFiles(isA(File[].class)); - verify(fileFilterMock2).filterFiles(isA(File[].class)); - } + @Test + public void forwardedToAddedFilters() throws Exception { + CompositeFileListFilter compositeFileFilter = new CompositeFileListFilter(); + compositeFileFilter.addFilter(fileFilterMock1); + compositeFileFilter.addFilter(fileFilterMock2); + List returnedFiles = Arrays.asList(fileMock); + when(fileFilterMock1.filterFiles(isA(File[].class))).thenReturn(returnedFiles); + when(fileFilterMock2.filterFiles(isA(File[].class))).thenReturn(returnedFiles); + assertEquals(returnedFiles, compositeFileFilter.filterFiles(new File[] { fileMock })); + verify(fileFilterMock1).filterFiles(isA(File[].class)); + verify(fileFilterMock2).filterFiles(isA(File[].class)); + } - @Test - public void negative() throws Exception { - CompositeFileListFilter compositeFileFilter = new CompositeFileListFilter(); - compositeFileFilter.addFilter(fileFilterMock1); - compositeFileFilter.addFilter(fileFilterMock2); + @Test + public void negative() throws Exception { + CompositeFileListFilter compositeFileFilter = new CompositeFileListFilter(); + compositeFileFilter.addFilter(fileFilterMock1); + compositeFileFilter.addFilter(fileFilterMock2); - when(fileFilterMock2.filterFiles(isA(File[].class))).thenReturn(new ArrayList()); - when(fileFilterMock1.filterFiles(isA(File[].class))).thenReturn(new ArrayList()); - assertTrue(compositeFileFilter.filterFiles(new File[]{fileMock}).isEmpty()); - } + when(fileFilterMock2.filterFiles(isA(File[].class))).thenReturn(new ArrayList()); + when(fileFilterMock1.filterFiles(isA(File[].class))).thenReturn(new ArrayList()); + assertTrue(compositeFileFilter.filterFiles(new File[] { fileMock }).isEmpty()); + } } diff --git a/spring-integration-file/src/test/java/org/springframework/integration/file/filters/LastModifiedFileListFilterTests.java b/spring-integration-file/src/test/java/org/springframework/integration/file/filters/LastModifiedFileListFilterTests.java index 0f4c1b1e7d..a94a76507d 100644 --- a/spring-integration-file/src/test/java/org/springframework/integration/file/filters/LastModifiedFileListFilterTests.java +++ b/spring-integration-file/src/test/java/org/springframework/integration/file/filters/LastModifiedFileListFilterTests.java @@ -28,6 +28,7 @@ import org.junit.rules.TemporaryFolder; /** * @author Gary Russell + * @author Artem Bilan * @since 4.2 * */ @@ -39,13 +40,14 @@ public class LastModifiedFileListFilterTests { @Test public void testAge() throws Exception { LastModifiedFileListFilter filter = new LastModifiedFileListFilter(); - filter.setAge(1, TimeUnit.SECONDS); + filter.setAge(60, TimeUnit.SECONDS); File foo = this.folder.newFile(); FileOutputStream fileOutputStream = new FileOutputStream(foo); fileOutputStream.write("x".getBytes()); fileOutputStream.close(); assertEquals(0, filter.filterFiles(new File[] { foo }).size()); - foo.setLastModified(System.currentTimeMillis() - 10000); + // Make a file as of yesterday's + foo.setLastModified(System.currentTimeMillis() - 1000 * 60 * 60 * 24); assertEquals(1, filter.filterFiles(new File[] { foo }).size()); } diff --git a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java index 364559121c..b3ed7e045f 100644 --- a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java +++ b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java @@ -210,7 +210,7 @@ public class GroovyScriptExecutingMessageProcessor extends AbstractScriptExecuti } } - private class BeanFactoryFallbackBinding extends Binding { + private final class BeanFactoryFallbackBinding extends Binding { private BeanFactoryFallbackBinding(Map variables) { super(variables); diff --git a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyControlBusFactoryBean.java b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyControlBusFactoryBean.java index eb379ea0a5..678d89e03a 100644 --- a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyControlBusFactoryBean.java +++ b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyControlBusFactoryBean.java @@ -111,7 +111,7 @@ public class GroovyControlBusFactoryBean extends AbstractSimpleMessageHandlerFac * In additionally beans should be 'managed' with specific properties which * are allowed in the Control Bus operations. */ - private static class ManagedBeansBinding extends Binding { + private static final class ManagedBeansBinding extends Binding { private final ConfigurableListableBeanFactory beanFactory; diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/TcpOutboundGateway.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/TcpOutboundGateway.java index 6464aa22df..1d59bcb37b 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/TcpOutboundGateway.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/TcpOutboundGateway.java @@ -274,7 +274,7 @@ public class TcpOutboundGateway extends AbstractReplyProducingMessageHandler * @author Gary Russell * @since 2.0 */ - private class AsyncReply { + private final class AsyncReply { private final CountDownLatch latch; diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractConnectionFactory.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractConnectionFactory.java index 4c5d4e6090..b1877caf28 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractConnectionFactory.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractConnectionFactory.java @@ -897,7 +897,7 @@ public abstract class AbstractConnectionFactory extends IntegrationObjectSupport + ", port=" + getPort(); } - private class PendingIO { + private final class PendingIO { private final long failedAt; 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 589a77431b..e0262a0cc7 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 @@ -136,94 +136,6 @@ public class CachingClientConnectionFactory extends AbstractClientConnectionFact return new CachedConnection(this.pool.getItem(), getListener()); } - private class CachedConnection extends TcpConnectionInterceptorSupport { - - private final AtomicBoolean released = new AtomicBoolean(); - - private CachedConnection(TcpConnectionSupport connection, TcpListener tcpListener) { - super.setTheConnection(connection); - registerListener(tcpListener); - } - - @Override - public void close() { - if (!this.released.compareAndSet(false, true)) { - if (logger.isDebugEnabled()) { - logger.debug("Connection " + getConnectionId() + " has already been released"); - } - } - else { - /** - * If the delegate is stopped, actually close the connection, but still release - * it to the pool, it will be discarded/renewed the next time it is retrieved. - */ - if (!isRunning()) { - if (logger.isDebugEnabled()) { - logger.debug("Factory not running - closing " + getConnectionId()); - } - super.close(); - } - CachingClientConnectionFactory.this.pool.releaseItem(getTheConnection()); - } - } - - @Override - public String getConnectionId() { - return "Cached:" + super.getConnectionId(); - } - - @Override - public String toString() { - return getConnectionId(); - } - - /** - * We have to intercept the message to replace the connectionId header with - * ours so the listener can correlate a response with a request. We supply - * the actual connectionId in another header for convenience and tracing - * purposes. - */ - @Override - public boolean onMessage(Message message) { - Message modifiedMessage; - if (message instanceof ErrorMessage) { - Map headers = new HashMap(message.getHeaders()); - headers.put(IpHeaders.CONNECTION_ID, getConnectionId()); - if (headers.get(IpHeaders.ACTUAL_CONNECTION_ID) == null) { - headers.put(IpHeaders.ACTUAL_CONNECTION_ID, - message.getHeaders().get(IpHeaders.CONNECTION_ID)); - } - modifiedMessage = new ErrorMessage((Throwable) message.getPayload(), headers); - } - else { - AbstractIntegrationMessageBuilder messageBuilder = - CachingClientConnectionFactory.this.getMessageBuilderFactory() - .fromMessage(message) - .setHeader(IpHeaders.CONNECTION_ID, getConnectionId()); - if (message.getHeaders().get(IpHeaders.ACTUAL_CONNECTION_ID) == null) { - messageBuilder.setHeader(IpHeaders.ACTUAL_CONNECTION_ID, - message.getHeaders().get(IpHeaders.CONNECTION_ID)); - } - modifiedMessage = messageBuilder.build(); - } - TcpListener listener = getListener(); - if (listener != null) { - listener.onMessage(modifiedMessage); - } - else { - if (logger.isDebugEnabled()) { - logger.debug("Message discarded; no listener: " + message); - } - } - return true; - } - - private void physicallyClose() { - getTheConnection().close(); - } - - } - ///////////////// DELEGATE METHODS /////////////////////// @Override @@ -491,4 +403,92 @@ public class CachingClientConnectionFactory extends AbstractClientConnectionFact this.targetConnectionFactory.stop(callback); } + private final class CachedConnection extends TcpConnectionInterceptorSupport { + + private final AtomicBoolean released = new AtomicBoolean(); + + private CachedConnection(TcpConnectionSupport connection, TcpListener tcpListener) { + super.setTheConnection(connection); + registerListener(tcpListener); + } + + @Override + public void close() { + if (!this.released.compareAndSet(false, true)) { + if (logger.isDebugEnabled()) { + logger.debug("Connection " + getConnectionId() + " has already been released"); + } + } + else { + /** + * If the delegate is stopped, actually close the connection, but still release + * it to the pool, it will be discarded/renewed the next time it is retrieved. + */ + if (!isRunning()) { + if (logger.isDebugEnabled()) { + logger.debug("Factory not running - closing " + getConnectionId()); + } + super.close(); + } + CachingClientConnectionFactory.this.pool.releaseItem(getTheConnection()); + } + } + + @Override + public String getConnectionId() { + return "Cached:" + super.getConnectionId(); + } + + @Override + public String toString() { + return getConnectionId(); + } + + /** + * We have to intercept the message to replace the connectionId header with + * ours so the listener can correlate a response with a request. We supply + * the actual connectionId in another header for convenience and tracing + * purposes. + */ + @Override + public boolean onMessage(Message message) { + Message modifiedMessage; + if (message instanceof ErrorMessage) { + Map headers = new HashMap(message.getHeaders()); + headers.put(IpHeaders.CONNECTION_ID, getConnectionId()); + if (headers.get(IpHeaders.ACTUAL_CONNECTION_ID) == null) { + headers.put(IpHeaders.ACTUAL_CONNECTION_ID, + message.getHeaders().get(IpHeaders.CONNECTION_ID)); + } + modifiedMessage = new ErrorMessage((Throwable) message.getPayload(), headers); + } + else { + AbstractIntegrationMessageBuilder messageBuilder = + CachingClientConnectionFactory.this.getMessageBuilderFactory() + .fromMessage(message) + .setHeader(IpHeaders.CONNECTION_ID, getConnectionId()); + if (message.getHeaders().get(IpHeaders.ACTUAL_CONNECTION_ID) == null) { + messageBuilder.setHeader(IpHeaders.ACTUAL_CONNECTION_ID, + message.getHeaders().get(IpHeaders.CONNECTION_ID)); + } + modifiedMessage = messageBuilder.build(); + } + TcpListener listener = getListener(); + if (listener != null) { + listener.onMessage(modifiedMessage); + } + else { + if (logger.isDebugEnabled()) { + logger.debug("Message discarded; no listener: " + message); + } + } + return true; + } + + private void physicallyClose() { + getTheConnection().close(); + } + + } + } diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/FailoverClientConnectionFactory.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/FailoverClientConnectionFactory.java index c2316040fd..7043770baa 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/FailoverClientConnectionFactory.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/FailoverClientConnectionFactory.java @@ -144,7 +144,7 @@ public class FailoverClientConnectionFactory extends AbstractClientConnectionFac * @since 2.2 * */ - private class FailoverTcpConnection extends TcpConnectionSupport implements TcpListener { + private final class FailoverTcpConnection extends TcpConnectionSupport implements TcpListener { private final List factories; 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 d7b494f1ab..315dfb0b42 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 @@ -278,7 +278,7 @@ public class TcpNioSSLConnection extends TcpNioConnection { * send to encrypted data to the SocketChannel. * */ - class SSLChannelOutputStream extends ChannelOutputStream { + final class SSLChannelOutputStream extends ChannelOutputStream { private final ChannelOutputStream channelOutputStream; diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/util/TestingUtilities.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/util/TestingUtilities.java index d6fcfd946a..46f93a4281 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/util/TestingUtilities.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/util/TestingUtilities.java @@ -28,7 +28,7 @@ import org.springframework.integration.ip.tcp.connection.AbstractServerConnectio * @since 2.2 * */ -public class TestingUtilities { +public final class TestingUtilities { private TestingUtilities() { super(); diff --git a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/BeanPropertySqlParameterSourceFactory.java b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/BeanPropertySqlParameterSourceFactory.java index 01ce4210ea..9648558429 100644 --- a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/BeanPropertySqlParameterSourceFactory.java +++ b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/BeanPropertySqlParameterSourceFactory.java @@ -55,7 +55,7 @@ public class BeanPropertySqlParameterSourceFactory implements SqlParameterSource return toReturn; } - private static class StaticBeanPropertySqlParameterSource extends AbstractSqlParameterSource implements + private static final class StaticBeanPropertySqlParameterSource extends AbstractSqlParameterSource implements SqlParameterSource { private final BeanPropertySqlParameterSource input; diff --git a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/StoredProcExecutor.java b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/StoredProcExecutor.java index 07a1e73700..c88a05c59b 100644 --- a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/StoredProcExecutor.java +++ b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/StoredProcExecutor.java @@ -663,7 +663,7 @@ public class StoredProcExecutor implements BeanFactoryAware, InitializingBean { * * @since 4.2 */ - private static class GuavaCacheWrapper { + private static final class GuavaCacheWrapper { private final LoadingCache jdbcCallOperationsCache; diff --git a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/store/channel/AbstractJdbcChannelMessageStoreTests.java b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/store/channel/AbstractJdbcChannelMessageStoreTests.java index 742da64c86..ee2f586fc3 100644 --- a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/store/channel/AbstractJdbcChannelMessageStoreTests.java +++ b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/store/channel/AbstractJdbcChannelMessageStoreTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2016 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. @@ -16,7 +16,9 @@ package org.springframework.integration.jdbc.store.channel; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import javax.sql.DataSource; @@ -39,6 +41,7 @@ import org.springframework.transaction.support.TransactionTemplate; /** * @author Gunnar Hillert + * @author Gary Russell */ @RunWith(SpringJUnit4ClassRunner.class) 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 ab19aad2cd..5bbb17cacc 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 @@ -479,7 +479,7 @@ public class ChannelPublishingJmsMessageListener * Internal class combining a destination name * and its target destination type (queue or topic). */ - private static class DestinationNameHolder { + private static final class DestinationNameHolder { private final String name; diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java index 6ad9bfa4d6..755199b1e9 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java @@ -54,7 +54,7 @@ import org.springframework.util.StringUtils; * @author Gary Russell * @author Artem Bilan */ -public class DefaultJmsHeaderMapper implements JmsHeaderMapper { +public class DefaultJmsHeaderMapper extends JmsHeaderMapper { private static List> SUPPORTED_PROPERTY_TYPES = Arrays.asList(new Class[] { Boolean.class, Byte.class, Double.class, Float.class, Integer.class, Long.class, Short.class, String.class }); diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsHeaderMapper.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsHeaderMapper.java index 2c1024ec95..3d93b1a579 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsHeaderMapper.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsHeaderMapper.java @@ -29,7 +29,7 @@ import org.springframework.integration.mapping.HeaderMapper; * @author Oleg Zhurakousky * @author Gary Russell */ -public interface JmsHeaderMapper extends HeaderMapper { +public abstract class JmsHeaderMapper implements HeaderMapper { String CONTENT_TYPE_PROPERTY = "content_type"; 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 d89cea52ae..bf67c58b81 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 @@ -1422,7 +1422,7 @@ public class JmsOutboundGateway extends AbstractReplyProducingMessageHandler imp } } - private class TimedReply { + private final class TimedReply { private final long timeStamp = System.currentTimeMillis(); diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java index 1861042a5e..1d80bd2dd2 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 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. @@ -150,7 +150,7 @@ public class JmsSendingMessageHandler extends AbstractMessageHandler { } - private static class HeaderMappingMessagePostProcessor implements MessagePostProcessor { + private static final class HeaderMappingMessagePostProcessor implements MessagePostProcessor { private final Message integrationMessage; 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 cf7ac9b6a8..7117c8889b 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 @@ -120,8 +120,55 @@ public class SubscribableJmsChannel extends AbstractJmsChannel implements Subscr this.dispatcher.setMaxSubscribers(this.maxSubscribers); } + /* + * SmartLifecycle implementation (delegates to the MessageListener container) + */ - private static class DispatchingMessageListener implements MessageListener { + @Override + public boolean isAutoStartup() { + return (this.container != null) ? this.container.isAutoStartup() : false; + } + + @Override + public int getPhase() { + return (this.container != null) ? this.container.getPhase() : 0; + } + + @Override + public boolean isRunning() { + return (this.container != null) ? this.container.isRunning() : false; + } + + @Override + public void start() { + if (this.container != null) { + this.container.start(); + } + } + + @Override + public void stop() { + if (this.container != null) { + this.container.stop(); + } + } + + @Override + public void stop(Runnable callback) { + if (this.container != null) { + this.container.stop(callback); + } + } + + @Override + public void destroy() throws Exception { + if (this.container != null) { + this.container.destroy(); + } + } + + + private static final class DispatchingMessageListener implements MessageListener { private final Log logger = LogFactory.getLog(this.getClass()); @@ -181,52 +228,4 @@ public class SubscribableJmsChannel extends AbstractJmsChannel implements Subscr } } - - /* - * SmartLifecycle implementation (delegates to the MessageListener container) - */ - - @Override - public boolean isAutoStartup() { - return (this.container != null) ? this.container.isAutoStartup() : false; - } - - @Override - public int getPhase() { - return (this.container != null) ? this.container.getPhase() : 0; - } - - @Override - public boolean isRunning() { - return (this.container != null) ? this.container.isRunning() : false; - } - - @Override - public void start() { - if (this.container != null) { - this.container.start(); - } - } - - @Override - public void stop() { - if (this.container != null) { - this.container.stop(); - } - } - - @Override - public void stop(Runnable callback) { - if (this.container != null) { - this.container.stop(callback); - } - } - - @Override - public void destroy() throws Exception { - if (this.container != null) { - this.container.destroy(); - } - } - } diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/TestJmsHeaderMapper.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/TestJmsHeaderMapper.java index 47d0b01ec6..36096398ca 100644 --- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/TestJmsHeaderMapper.java +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/TestJmsHeaderMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2008 the original author or authors. + * Copyright 2002-2016 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. @@ -21,17 +21,20 @@ import java.util.Map; import javax.jms.Message; -import org.springframework.messaging.MessageHeaders; import org.springframework.integration.jms.JmsHeaderMapper; +import org.springframework.messaging.MessageHeaders; /** * @author Mark Fisher + * @author Gary Russell */ -public class TestJmsHeaderMapper implements JmsHeaderMapper { +public class TestJmsHeaderMapper extends JmsHeaderMapper { + @Override public void fromHeaders(MessageHeaders headers, Message target) { } + @Override public Map toHeaders(Message source) { Map headerMap = new HashMap(); headerMap.put("testProperty", "foo"); diff --git a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/JpaUtils.java b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/JpaUtils.java index a0495f6dd8..007634e632 100644 --- a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/JpaUtils.java +++ b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/JpaUtils.java @@ -16,9 +16,6 @@ package org.springframework.integration.jpa.support; -import static java.util.regex.Pattern.CASE_INSENSITIVE; -import static java.util.regex.Pattern.compile; - import java.util.Iterator; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -37,6 +34,7 @@ import org.springframework.util.Assert; * * @author Oliver Gierke * @author Gunnar Hillert + * @author Gary Russell * * @since 2.2 * @@ -60,7 +58,7 @@ public final class JpaUtils { builder.append("(?: )+"); // at least one space separating builder.append("(\\w*)"); // the actual alias - ALIAS_MATCH = compile(builder.toString(), CASE_INSENSITIVE); + ALIAS_MATCH = Pattern.compile(builder.toString(), Pattern.CASE_INSENSITIVE); builder = new StringBuilder(); builder.append("(select\\s+((distinct )?.+?)\\s+)?(from\\s+"); diff --git a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/BeanPropertyParameterSourceFactory.java b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/BeanPropertyParameterSourceFactory.java index 46f223df5e..d01eefb4e8 100644 --- a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/BeanPropertyParameterSourceFactory.java +++ b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/BeanPropertyParameterSourceFactory.java @@ -51,7 +51,7 @@ public class BeanPropertyParameterSourceFactory implements ParameterSourceFactor return toReturn; } - private static class StaticBeanPropertyParameterSource implements + private static final class StaticBeanPropertyParameterSource implements ParameterSource { private final BeanPropertyParameterSource input; diff --git a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/ExpressionEvaluatingParameterSourceUtils.java b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/ExpressionEvaluatingParameterSourceUtils.java index bfbd2ab35a..3ad8164031 100644 --- a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/ExpressionEvaluatingParameterSourceUtils.java +++ b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/ExpressionEvaluatingParameterSourceUtils.java @@ -33,7 +33,7 @@ import org.springframework.util.Assert; * @since 2.2 * */ -class ExpressionEvaluatingParameterSourceUtils { +final class ExpressionEvaluatingParameterSourceUtils { private ExpressionEvaluatingParameterSourceUtils() { throw new AssertionError(); diff --git a/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/outbound/JpaOutboundGatewayIntegrationTests.java b/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/outbound/JpaOutboundGatewayIntegrationTests.java index 32ef127b1e..81555e6237 100644 --- a/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/outbound/JpaOutboundGatewayIntegrationTests.java +++ b/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/outbound/JpaOutboundGatewayIntegrationTests.java @@ -16,7 +16,10 @@ package org.springframework.integration.jpa.outbound; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; import java.util.List; @@ -49,6 +52,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * * @author Amol Nayak * @author Artem Bilan + * @author Gary Russell * @since 3.0 * */ diff --git a/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java b/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java index 672be1ba25..ab69931709 100755 --- a/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java +++ b/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java @@ -454,7 +454,7 @@ public abstract class AbstractMailReceiver extends IntegrationObjectSupport impl * @since 2.2 * */ - private class IntegrationMimeMessage extends MimeMessage { + private final class IntegrationMimeMessage extends MimeMessage { private final MimeMessage source; diff --git a/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapIdleChannelAdapter.java b/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapIdleChannelAdapter.java index 9ec2bef98c..3b6caf4689 100755 --- a/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapIdleChannelAdapter.java +++ b/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapIdleChannelAdapter.java @@ -182,6 +182,54 @@ public class ImapIdleChannelAdapter extends MessageProducerSupport implements Be } } + private Runnable createMessageSendingTask(final Message mailMessage){ + Runnable sendingTask = new Runnable() { + @Override + public void run() { + org.springframework.messaging.Message message = + ImapIdleChannelAdapter.this.getMessageBuilderFactory().withPayload(mailMessage).build(); + + if (TransactionSynchronizationManager.isActualTransactionActive()) { + if (ImapIdleChannelAdapter.this.transactionSynchronizationFactory != null){ + TransactionSynchronization synchronization = + ImapIdleChannelAdapter.this.transactionSynchronizationFactory + .create(ImapIdleChannelAdapter.this); + TransactionSynchronizationManager.registerSynchronization(synchronization); + if (synchronization instanceof IntegrationResourceHolderSynchronization) { + IntegrationResourceHolder holder = + ((IntegrationResourceHolderSynchronization) synchronization).getResourceHolder(); + holder.setMessage(message); + } + } + } + sendMessage(message); + } + }; + + // wrap in the TX proxy if necessary + if (!CollectionUtils.isEmpty(this.adviceChain)) { + ProxyFactory proxyFactory = new ProxyFactory(sendingTask); + if (!CollectionUtils.isEmpty(this.adviceChain)) { + for (Advice advice : this.adviceChain) { + proxyFactory.addAdvice(advice); + } + } + sendingTask = (Runnable) proxyFactory.getProxy(this.classLoader); + } + return sendingTask; + } + + private void publishException(Exception e) { + if (this.applicationEventPublisher != null) { + this.applicationEventPublisher.publishEvent(new ImapIdleExceptionEvent(e)); + } + else { + if (logger.isDebugEnabled()) { + logger.debug("No application event publisher for exception: " + e.getMessage()); + } + } + } + private class ReceivingTask implements Runnable { @Override @@ -247,54 +295,6 @@ public class ImapIdleChannelAdapter extends MessageProducerSupport implements Be } } - private Runnable createMessageSendingTask(final Message mailMessage){ - Runnable sendingTask = new Runnable() { - @Override - public void run() { - org.springframework.messaging.Message message = - ImapIdleChannelAdapter.this.getMessageBuilderFactory().withPayload(mailMessage).build(); - - if (TransactionSynchronizationManager.isActualTransactionActive()) { - if (ImapIdleChannelAdapter.this.transactionSynchronizationFactory != null){ - TransactionSynchronization synchronization = - ImapIdleChannelAdapter.this.transactionSynchronizationFactory - .create(ImapIdleChannelAdapter.this); - TransactionSynchronizationManager.registerSynchronization(synchronization); - if (synchronization instanceof IntegrationResourceHolderSynchronization) { - IntegrationResourceHolder holder = - ((IntegrationResourceHolderSynchronization) synchronization).getResourceHolder(); - holder.setMessage(message); - } - } - } - sendMessage(message); - } - }; - - // wrap in the TX proxy if necessary - if (!CollectionUtils.isEmpty(this.adviceChain)) { - ProxyFactory proxyFactory = new ProxyFactory(sendingTask); - if (!CollectionUtils.isEmpty(this.adviceChain)) { - for (Advice advice : this.adviceChain) { - proxyFactory.addAdvice(advice); - } - } - sendingTask = (Runnable) proxyFactory.getProxy(this.classLoader); - } - return sendingTask; - } - - private void publishException(Exception e) { - if (this.applicationEventPublisher != null) { - this.applicationEventPublisher.publishEvent(new ImapIdleExceptionEvent(e)); - } - else { - if (logger.isDebugEnabled()) { - logger.debug("No application event publisher for exception: " + e.getMessage()); - } - } - } - private class ExceptionAwarePeriodicTrigger implements Trigger { private volatile boolean delayNextExecution; diff --git a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/config/MongoParserUtils.java b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/config/MongoParserUtils.java index 3fe1e02834..514fdea082 100644 --- a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/config/MongoParserUtils.java +++ b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/config/MongoParserUtils.java @@ -30,7 +30,7 @@ import org.springframework.util.StringUtils; * @author Gary Russell * @since 2.2 */ -class MongoParserUtils { +final class MongoParserUtils { private MongoParserUtils() { super(); diff --git a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/MongoDbMessageStore.java b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/MongoDbMessageStore.java index 0dd6f16d01..a62e191e37 100644 --- a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/MongoDbMessageStore.java +++ b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/MongoDbMessageStore.java @@ -454,10 +454,20 @@ public class MongoDbMessageStore extends AbstractMessageGroupStore this.collectionName).get(SEQUENCE); } + @SuppressWarnings("unchecked") + private static void enhanceHeaders(MessageHeaders messageHeaders, Map headers) { + Map innerMap = + (Map) 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)); + } + + /** * Custom implementation of the {@link MappingMongoConverter} strategy. */ - private class MessageReadingMongoConverter extends MappingMongoConverter { + private final class MessageReadingMongoConverter extends MappingMongoConverter { private MessageReadingMongoConverter(MongoDbFactory mongoDbFactory, MappingContext, MongoPersistentProperty> mappingContext) { @@ -586,16 +596,6 @@ public class MongoDbMessageStore extends AbstractMessageGroupStore } - @SuppressWarnings("unchecked") - private static void enhanceHeaders(MessageHeaders messageHeaders, Map headers) { - Map innerMap = - (Map) 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)); - } - - private static class UuidToDBObjectConverter implements Converter { @Override public DBObject convert(UUID source) { @@ -650,7 +650,7 @@ public class MongoDbMessageStore extends AbstractMessageGroupStore } - private class DBObjectToMutableMessageConverter implements GenericConverter { + private final class DBObjectToMutableMessageConverter implements GenericConverter { private final Class mutableMessageClass; diff --git a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/support/MongoHeaders.java b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/support/MongoHeaders.java index 7b9e91da3e..1c1186752d 100644 --- a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/support/MongoHeaders.java +++ b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/support/MongoHeaders.java @@ -23,7 +23,7 @@ package org.springframework.integration.mongodb.support; * @author Gary Russell * @since 2.2 */ -public class MongoHeaders { +public final class MongoHeaders { private MongoHeaders() { super(); diff --git a/spring-integration-mqtt/src/main/java/org/springframework/integration/mqtt/inbound/AbstractMqttMessageDrivenChannelAdapter.java b/spring-integration-mqtt/src/main/java/org/springframework/integration/mqtt/inbound/AbstractMqttMessageDrivenChannelAdapter.java index 11938084b1..e2c03e9e4f 100644 --- a/spring-integration-mqtt/src/main/java/org/springframework/integration/mqtt/inbound/AbstractMqttMessageDrivenChannelAdapter.java +++ b/spring-integration-mqtt/src/main/java/org/springframework/integration/mqtt/inbound/AbstractMqttMessageDrivenChannelAdapter.java @@ -252,7 +252,7 @@ public abstract class AbstractMqttMessageDrivenChannelAdapter extends MessagePro /** * @since 4.1 */ - private static class Topic { + private static final class Topic { private final String topic; diff --git a/spring-integration-mqtt/src/main/java/org/springframework/integration/mqtt/support/MqttHeaders.java b/spring-integration-mqtt/src/main/java/org/springframework/integration/mqtt/support/MqttHeaders.java index fffd9ad57d..c2f8856cf4 100644 --- a/spring-integration-mqtt/src/main/java/org/springframework/integration/mqtt/support/MqttHeaders.java +++ b/spring-integration-mqtt/src/main/java/org/springframework/integration/mqtt/support/MqttHeaders.java @@ -23,7 +23,7 @@ package org.springframework.integration.mqtt.support; * @since 4.0 * */ -public class MqttHeaders { +public final class MqttHeaders { private static final String prefix = "mqtt_"; diff --git a/spring-integration-redis/src/main/java/org/springframework/integration/redis/support/RedisHeaders.java b/spring-integration-redis/src/main/java/org/springframework/integration/redis/support/RedisHeaders.java index f7ff43998e..2e09353322 100644 --- a/spring-integration-redis/src/main/java/org/springframework/integration/redis/support/RedisHeaders.java +++ b/spring-integration-redis/src/main/java/org/springframework/integration/redis/support/RedisHeaders.java @@ -25,7 +25,7 @@ package org.springframework.integration.redis.support; * @author Artem Bilan * @since 2.2 */ -public class RedisHeaders { +public final class RedisHeaders { private RedisHeaders() { super(); diff --git a/spring-integration-redis/src/main/java/org/springframework/integration/redis/util/RedisLockRegistry.java b/spring-integration-redis/src/main/java/org/springframework/integration/redis/util/RedisLockRegistry.java index 7da30275db..b3c47f23fb 100644 --- a/spring-integration-redis/src/main/java/org/springframework/integration/redis/util/RedisLockRegistry.java +++ b/spring-integration-redis/src/main/java/org/springframework/integration/redis/util/RedisLockRegistry.java @@ -296,7 +296,7 @@ public final class RedisLockRegistry implements LockRegistry { }); } - private class RedisLock implements Lock { + private final class RedisLock implements Lock { private final String lockKey; diff --git a/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisChannelParserTests.java b/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisChannelParserTests.java index 9260dc3af5..f6b0ca0ad8 100644 --- a/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisChannelParserTests.java +++ b/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisChannelParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 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. @@ -16,7 +16,9 @@ package org.springframework.integration.redis.config; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; diff --git a/spring-integration-redis/src/test/java/org/springframework/integration/redis/outbound/RedisOutboundGatewayTests.java b/spring-integration-redis/src/test/java/org/springframework/integration/redis/outbound/RedisOutboundGatewayTests.java index b658b0d44e..f6f67d1742 100644 --- a/spring-integration-redis/src/test/java/org/springframework/integration/redis/outbound/RedisOutboundGatewayTests.java +++ b/spring-integration-redis/src/test/java/org/springframework/integration/redis/outbound/RedisOutboundGatewayTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014 the original author or authors. + * Copyright 2014-2016 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. @@ -16,7 +16,11 @@ package org.springframework.integration.redis.outbound; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.util.Arrays; import java.util.List; diff --git a/spring-integration-syslog/src/main/java/org/springframework/integration/syslog/SyslogHeaders.java b/spring-integration-syslog/src/main/java/org/springframework/integration/syslog/SyslogHeaders.java index 38b3e2e4bb..cf7bc3a3e4 100644 --- a/spring-integration-syslog/src/main/java/org/springframework/integration/syslog/SyslogHeaders.java +++ b/spring-integration-syslog/src/main/java/org/springframework/integration/syslog/SyslogHeaders.java @@ -25,7 +25,7 @@ import org.springframework.integration.transformer.SyslogToMapTransformer; * @since 3.0 * */ -public class SyslogHeaders { +public final class SyslogHeaders { private SyslogHeaders() { super(); diff --git a/spring-integration-websocket/src/main/java/org/springframework/integration/websocket/ClientWebSocketContainer.java b/spring-integration-websocket/src/main/java/org/springframework/integration/websocket/ClientWebSocketContainer.java index 648092471a..c568031825 100644 --- a/spring-integration-websocket/src/main/java/org/springframework/integration/websocket/ClientWebSocketContainer.java +++ b/spring-integration-websocket/src/main/java/org/springframework/integration/websocket/ClientWebSocketContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2015 the original author or authors. + * Copyright 2014-2016 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. @@ -172,7 +172,7 @@ public final class ClientWebSocketContainer extends IntegrationWebSocketContaine *

* The {@link #webSocketHandler} is used to handle {@link WebSocketSession} events. */ - private class IntegrationWebSocketConnectionManager extends ConnectionManagerSupport { + private final class IntegrationWebSocketConnectionManager extends ConnectionManagerSupport { private final WebSocketClient client; diff --git a/spring-integration-ws/src/main/java/org/springframework/integration/ws/MarshallingWebServiceOutboundGateway.java b/spring-integration-ws/src/main/java/org/springframework/integration/ws/MarshallingWebServiceOutboundGateway.java index 3afb322fe8..a421289959 100644 --- a/spring-integration-ws/src/main/java/org/springframework/integration/ws/MarshallingWebServiceOutboundGateway.java +++ b/spring-integration-ws/src/main/java/org/springframework/integration/ws/MarshallingWebServiceOutboundGateway.java @@ -117,7 +117,7 @@ public class MarshallingWebServiceOutboundGateway extends AbstractWebServiceOutb this.unmarshaller = unmarshaller; } - private class MarshallingRequestMessageCallback extends RequestMessageCallback { + private final class MarshallingRequestMessageCallback extends RequestMessageCallback { private MarshallingRequestMessageCallback(WebServiceMessageCallback requestCallback, Message requestMessage) { diff --git a/spring-integration-ws/src/main/java/org/springframework/integration/ws/SimpleWebServiceOutboundGateway.java b/spring-integration-ws/src/main/java/org/springframework/integration/ws/SimpleWebServiceOutboundGateway.java index 03ed3a417a..1443475fed 100644 --- a/spring-integration-ws/src/main/java/org/springframework/integration/ws/SimpleWebServiceOutboundGateway.java +++ b/spring-integration-ws/src/main/java/org/springframework/integration/ws/SimpleWebServiceOutboundGateway.java @@ -100,7 +100,7 @@ public class SimpleWebServiceOutboundGateway extends AbstractWebServiceOutboundG new SimpleResponseMessageExtractor(responseResultInstance)); } - private class SimpleRequestMessageCallback extends RequestMessageCallback { + private final class SimpleRequestMessageCallback extends RequestMessageCallback { private SimpleRequestMessageCallback(WebServiceMessageCallback requestCallback, Message requestMessage) { super(requestCallback, requestMessage); @@ -141,7 +141,7 @@ public class SimpleWebServiceOutboundGateway extends AbstractWebServiceOutboundG } - private class SimpleResponseMessageExtractor extends ResponseMessageExtractor { + private final class SimpleResponseMessageExtractor extends ResponseMessageExtractor { private final Result result; diff --git a/spring-integration-xml/src/main/java/org/springframework/integration/xml/splitter/XPathMessageSplitter.java b/spring-integration-xml/src/main/java/org/springframework/integration/xml/splitter/XPathMessageSplitter.java index 12ed4d3cb9..e3922aa160 100644 --- a/spring-integration-xml/src/main/java/org/springframework/integration/xml/splitter/XPathMessageSplitter.java +++ b/spring-integration-xml/src/main/java/org/springframework/integration/xml/splitter/XPathMessageSplitter.java @@ -269,7 +269,7 @@ public class XPathMessageSplitter extends AbstractMessageSplitter { } } - private class NodeListIterator implements Iterator { + private final class NodeListIterator implements Iterator { private final DocumentBuilder documentBuilder; diff --git a/spring-integration-xml/src/test/java/org/springframework/integration/xml/source/StringSourceTests.java b/spring-integration-xml/src/test/java/org/springframework/integration/xml/source/StringSourceTests.java index eec3320ba7..b8c9ba697e 100644 --- a/spring-integration-xml/src/test/java/org/springframework/integration/xml/source/StringSourceTests.java +++ b/spring-integration-xml/src/test/java/org/springframework/integration/xml/source/StringSourceTests.java @@ -16,27 +16,27 @@ package org.springframework.integration.xml.source; -import static org.custommonkey.xmlunit.XMLAssert.*; +import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual; import java.io.BufferedReader; import org.junit.Before; import org.junit.Test; - -import org.springframework.messaging.MessagingException; -import org.springframework.integration.xml.util.XmlTestUtil; -import org.springframework.xml.transform.StringSource; import org.w3c.dom.Document; +import org.springframework.integration.xml.util.XmlTestUtil; +import org.springframework.messaging.MessagingException; +import org.springframework.xml.transform.StringSource; + public class StringSourceTests { - + StringSourceFactory sourceFactory; - + @Before public void setUp() throws Exception{ sourceFactory = new StringSourceFactory(); } - + @Test public void testWithDocument() throws Exception{ String docString = "one"; @@ -46,8 +46,8 @@ public class StringSourceTests { String docAsString =reader.readLine(); assertXMLEqual("Wrong content in StringSource","one", docAsString); } - - + + @Test public void testWithString() throws Exception{ String docString = "one"; @@ -56,8 +56,8 @@ public class StringSourceTests { String docAsString =reader.readLine(); assertXMLEqual("Wrong content in StringSource","one", docAsString); } - - + + @Test(expected=MessagingException.class) public void testWithUnsupportedPayload() throws Exception{ String docString = "one"; diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/XmppHeaders.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/XmppHeaders.java index 4d14f9b6a0..b10ea22367 100644 --- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/XmppHeaders.java +++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/XmppHeaders.java @@ -25,11 +25,10 @@ package org.springframework.integration.xmpp; * @author Oleg Zhurakousky * @since 2.0 */ -public class XmppHeaders { +public final class XmppHeaders { private XmppHeaders() { super(); - // TODO Auto-generated constructor stub } public static final String PREFIX = "xmpp_"; diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/XmppContextUtils.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/XmppContextUtils.java index e9019d1542..429a46c484 100644 --- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/XmppContextUtils.java +++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/XmppContextUtils.java @@ -18,10 +18,16 @@ package org.springframework.integration.xmpp.core; /** * @author Oleg ZHurakousky + * @author Gary Russell * @since 2.0 */ -public interface XmppContextUtils { +public final class XmppContextUtils { - String XMPP_CONNECTION_BEAN_NAME = "xmppConnection"; + + private XmppContextUtils() { + super(); + } + + public static String XMPP_CONNECTION_BEAN_NAME = "xmppConnection"; } diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/ChatMessageSendingMessageHandler.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/ChatMessageSendingMessageHandler.java index 9d6246e5cc..f1d99e0ce0 100644 --- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/ChatMessageSendingMessageHandler.java +++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/ChatMessageSendingMessageHandler.java @@ -47,7 +47,7 @@ import org.springframework.util.StringUtils; */ public class ChatMessageSendingMessageHandler extends AbstractXmppConnectionAwareMessageHandler { - private static final Pattern xmlPattern = Pattern.compile("<(\\S[^>\\s]*)[^>]*>[^<]*"); + private static final Pattern XML_PATTERN = Pattern.compile("<(\\S[^>\\s]*)[^>]*>[^<]*"); private volatile XmppHeaderMapper headerMapper = new DefaultXmppHeaderMapper(); @@ -101,7 +101,7 @@ public class ChatMessageSendingMessageHandler extends AbstractXmppConnectionAwar else if (payload instanceof String) { if (this.extensionProvider != null) { String data = (String) payload; - if (!xmlPattern.matcher(data.trim()).matches()) { + if (!XML_PATTERN.matcher(data.trim()).matches()) { // Since XMPP Extension parsers deal only with XML content, // add an arbitrary tag that is removed by the extension parser, // if the target content isn't XML. 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 0c03f7f15e..61927ba8ff 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 @@ -151,7 +151,7 @@ public class ZookeeperLockRegistry implements ExpirableLockRegistry { } - private static class DefaultKeyToPathStrategy implements KeyToPathStrategy { + private static final class DefaultKeyToPathStrategy implements KeyToPathStrategy { private final String root; @@ -177,7 +177,7 @@ public class ZookeeperLockRegistry implements ExpirableLockRegistry { } - private static class ZkLock implements Lock { + private static final class ZkLock implements Lock { private final InterProcessMutex mutex; diff --git a/spring-integration-zookeeper/src/main/java/org/springframework/integration/zookeeper/metadata/ZookeeperMetadataStore.java b/spring-integration-zookeeper/src/main/java/org/springframework/integration/zookeeper/metadata/ZookeeperMetadataStore.java index bd5c5a7562..253ec9b99d 100644 --- a/spring-integration-zookeeper/src/main/java/org/springframework/integration/zookeeper/metadata/ZookeeperMetadataStore.java +++ b/spring-integration-zookeeper/src/main/java/org/springframework/integration/zookeeper/metadata/ZookeeperMetadataStore.java @@ -320,7 +320,12 @@ public class ZookeeperMetadataStore implements ListenableMetadataStore, SmartLif return this.phase; } - private static class LocalChildData { + private String getKey(String path) { + return path.replace(this.root + "/", ""); + } + + + private static final class LocalChildData { private final String value; @@ -386,7 +391,4 @@ public class ZookeeperMetadataStore implements ListenableMetadataStore, SmartLif } } - private String getKey(String path) { - return path.replace(this.root + "/", ""); - } } diff --git a/spring-integration-zookeeper/src/test/java/org/springframework/integration/zookeeper/config/CuratorFrameworkFactoryBeanTests.java b/spring-integration-zookeeper/src/test/java/org/springframework/integration/zookeeper/config/CuratorFrameworkFactoryBeanTests.java index 50cacfbf0a..c5eb3f0968 100644 --- a/spring-integration-zookeeper/src/test/java/org/springframework/integration/zookeeper/config/CuratorFrameworkFactoryBeanTests.java +++ b/spring-integration-zookeeper/src/test/java/org/springframework/integration/zookeeper/config/CuratorFrameworkFactoryBeanTests.java @@ -23,8 +23,6 @@ import org.apache.curator.framework.imps.CuratorFrameworkState; import org.apache.curator.test.TestingServer; import org.junit.Test; -import org.springframework.integration.zookeeper.config.CuratorFrameworkFactoryBean; - /** * @author Gary Russell * diff --git a/src/checkstyle/checkstyle-suppressions.xml b/src/checkstyle/checkstyle-suppressions.xml index 4097d904b0..2db9e2fb94 100644 --- a/src/checkstyle/checkstyle-suppressions.xml +++ b/src/checkstyle/checkstyle-suppressions.xml @@ -5,5 +5,9 @@ + + + + diff --git a/src/checkstyle/checkstyle.xml b/src/checkstyle/checkstyle.xml index c4b34dac28..63f0c65805 100644 --- a/src/checkstyle/checkstyle.xml +++ b/src/checkstyle/checkstyle.xml @@ -7,10 +7,10 @@ - - - - + + + + @@ -42,15 +42,15 @@ - - + + - - + + - + @@ -67,19 +67,19 @@ - - - - + + + + - - - - - - - + + + + + + @@ -125,7 +125,7 @@ - + @@ -166,5 +166,5 @@ - + diff --git a/src/checkstyle/fixFinal.gradle b/src/checkstyle/fixFinal.gradle new file mode 100644 index 0000000000..54e4a68027 --- /dev/null +++ b/src/checkstyle/fixFinal.gradle @@ -0,0 +1,55 @@ +task fixFinal << { + fileTree("${buildDir}/reports/checkstyle").include('*.xml').each { report -> + def xml = new XmlParser(false, false).parse(report) + xml.file.each { f -> + def errors = f.error + def finalErrors = [] + errors.each { error -> + if (error.@source == 'com.puppycrawl.tools.checkstyle.checks.design.FinalClassCheck') { + finalErrors.add(error) + } + } + if (finalErrors) { + def errorInx = 0 + def error = finalErrors[errorInx++] + def file = new File(f.@name) + println "Fixing file $file ..." + boolean headerFixed + boolean onNextLine + def outSource = '' + file.eachLine { line, ln -> + if (!headerFixed) { + def matcher = line =~ /Copyright (20\d\d)(?:-(20\d\d))?/ + if (matcher.count) { + def year1 = matcher[0][1] + if (now != year1) { + if (now != matcher[0][2]) { + line = line.replaceFirst(/(20\d\d)(?:-20\d\d)?/, year1 + "-$now") + } + } + headerFixed = true + } + } + + if (onNextLine || error && ln == (error.@line as int)) { + onNextLine = false + if (line.contains('@SuppressWarning')) { + onNextLine = true; + } + else { + line = line.replaceFirst('class', 'final class') + + println "Fixed line $line" + + error = finalErrors[errorInx++] + } + } + + outSource += line + System.lineSeparator() + } + file.write(outSource) + println() + } + } + } +}