From b89756eec7fd4cc22c0669fdd53992e1c474adf2 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Mon, 4 Apr 2016 13:56:48 -0400 Subject: [PATCH] checkstyle FinalClass checkstyle Import Rules checkstyle HideUtilityCtor checkstyle InnerTypeLast checkstyle Annotation Rules checkstyle Block Rules checkstyle InnerAssignment checkstyle Boolean Rules checkstyle Remaining Code Rules checkstyle ImportOrder checkstyle Misc Rules and Trailing Whitespace checkstyle GenericWhitespace checkstyle ParenPad checkstyle WhiteSpaceAfter Script checkstyle WhiteSpaceAfter checkstyle WhiteSpaceAround Script checkstyle WhiteSpaceAround --- build.gradle | 2 + .../amqp/core/AddressUtils.java | 6 +- .../amqp/core/AnonymousQueue.java | 2 +- .../amqp/core/BindingBuilder.java | 49 ++-- .../amqp/core/DirectExchange.java | 4 +- .../amqp/core/FanoutExchange.java | 4 +- .../amqp/core/HeadersExchange.java | 4 +- .../springframework/amqp/core/Message.java | 8 +- .../amqp/core/MessageBuilder.java | 4 +- .../amqp/core/MessageDeliveryMode.java | 21 +- .../amqp/core/MessageProperties.java | 10 +- .../amqp/core/MessagePropertiesBuilder.java | 2 +- .../amqp/core/TopicExchange.java | 4 +- .../converter/AbstractMessageConverter.java | 4 +- .../support/converter/DefaultClassMapper.java | 6 +- .../converter/SerializerMessageConverter.java | 3 +- .../AbstractDecompressingPostProcessor.java | 2 +- .../MessagePostProcessorUtils.java | 2 +- .../postprocessor/ZipPostProcessor.java | 2 +- .../amqp/utils/SerializationUtils.java | 12 +- .../amqp/utils/test/TestUtils.java | 6 +- .../amqp/core/BindingBuilderTests.java | 2 +- .../amqp/core/MessagePropertiesTests.java | 2 +- .../amqp/core/build/MessageBuilderTests.java | 16 +- .../Jackson2JsonMessageConverterTests.java | 6 +- .../converter/JsonMessageConverterTests.java | 2 +- .../MessagingMessageConverterTests.java | 7 +- .../amqp/support/converter/SimpleTrade.java | 18 +- .../ExampleRabbitListenerCaptureTest.java | 4 +- ...xampleRabbitListenerSpyAndCaptureTest.java | 4 +- .../test/ExampleRabbitListenerSpyTest.java | 4 +- .../amqp/rabbit/annotation/Exchange.java | 5 +- .../amqp/rabbit/annotation/Queue.java | 5 +- .../rabbit/config/BindingFactoryBean.java | 3 +- .../amqp/rabbit/config/NamespaceUtils.java | 11 +- .../rabbit/config/QueueArgumentsParser.java | 3 +- .../rabbit/config/RabbitNamespaceUtils.java | 19 +- .../config/RetryInterceptorBuilder.java | 6 +- ...RetryOperationsInterceptorFactoryBean.java | 3 +- ...RetryOperationsInterceptorFactoryBean.java | 4 +- .../connection/AbstractConnectionFactory.java | 3 +- .../AbstractRoutingConnectionFactory.java | 2 +- .../connection/CachingConnectionFactory.java | 20 +- .../connection/ConnectionFactoryUtils.java | 12 +- .../connection/ConsumerChannelRegistry.java | 8 +- .../LocalizedQueueConnectionFactory.java | 10 +- .../connection/RabbitResourceHolder.java | 8 +- .../amqp/rabbit/connection/RabbitUtils.java | 15 +- .../rabbit/connection/SimpleConnection.java | 6 +- .../amqp/rabbit/core/RabbitAdmin.java | 15 +- .../amqp/rabbit/core/RabbitTemplate.java | 4 +- .../AbstractMessageListenerContainer.java | 52 +++-- .../rabbit/listener/ActiveObjectCounter.java | 2 +- .../listener/BlockingQueueConsumer.java | 209 +++++++++--------- .../RabbitListenerEndpointRegistrar.java | 4 +- .../RabbitListenerEndpointRegistry.java | 2 +- .../SimpleMessageListenerContainer.java | 112 +++++----- .../adapter/DelegatingInvocableHandler.java | 4 +- .../MessagingMessageListenerAdapter.java | 21 +- .../amqp/rabbit/log4j/AmqpAppender.java | 6 +- .../amqp/rabbit/log4j2/AmqpAppender.java | 6 +- .../amqp/rabbit/logback/AmqpAppender.java | 2 +- .../DefaultMessagePropertiesConverter.java | 2 +- .../support/MessagePropertiesConverter.java | 4 +- .../support/PublisherCallbackChannelImpl.java | 7 +- .../support/RabbitExceptionTranslator.java | 8 +- .../transaction/RabbitTransactionManager.java | 3 +- .../amqp/rabbit/AsyncRabbitTemplateTests.java | 1 - .../AbstractRabbitAnnotationDrivenTests.java | 128 +++++------ .../EnableRabbitCglibProxyTests.java | 2 +- .../EnableRabbitIdleContainerTests.java | 4 +- .../EnableRabbitIntegrationTests.java | 98 ++++---- .../amqp/rabbit/config/AdminParserTests.java | 6 +- .../config/ListenerContainerParserTests.java | 8 +- ...stenerContainerPlaceholderParserTests.java | 6 +- .../MismatchedQueueDeclarationTests.java | 3 +- .../config/QueueArgumentsParserTests.java | 1 + .../config/QueueParserPlaceholderTests.java | 5 +- .../amqp/rabbit/config/QueueParserTests.java | 2 +- ...tenerContainerFactoryIntegrationTests.java | 13 +- .../config/RabbitNamespaceHandlerTests.java | 4 +- .../RetryInterceptorBuilderSupportTests.java | 2 +- .../SimpleRabbitListenerEndpointTests.java | 9 +- ...hingConnectionFactoryIntegrationTests.java | 11 +- .../CachingConnectionFactoryTests.java | 14 +- .../ConnectionFactoryLifecycleTests.java | 2 +- .../rabbit/connection/SSLConnectionTests.java | 3 +- .../connection/SingleConnectionFactory.java | 3 +- .../core/BatchingRabbitTemplateTests.java | 5 +- .../core/FixedReplyQueueDeadLetterTests.java | 2 +- .../amqp/rabbit/core/Producer.java | 6 +- .../amqp/rabbit/core/QueueUtils.java | 6 +- .../core/RabbitAdminDeclarationTests.java | 2 +- .../core/RabbitAdminIntegrationTests.java | 8 +- .../core/RabbitBindingIntegrationTests.java | 16 +- .../core/RabbitGatewaySupportTests.java | 2 +- .../core/RabbitMessagingTemplateTests.java | 26 ++- .../core/RabbitTemplateHeaderTests.java | 10 +- ...atePublisherCallbacksIntegrationTests.java | 12 +- ...tePublisherCallbacksIntegrationTests2.java | 17 +- .../amqp/rabbit/core/TestConstants.java | 8 +- .../support/SimpleBatchStrategyTests.java | 3 +- .../listener/ExternalTxManagerTests.java | 10 +- .../JavaConfigFixedReplyQueueTests.java | 2 +- .../listener/LocallyTransactedTests.java | 6 +- ...ContainerErrorHandlerIntegrationTests.java | 15 +- ...nerContainerLifecycleIntegrationTests.java | 3 +- ...istenerContainerRetryIntegrationTests.java | 15 +- ...sageListenerManualAckIntegrationTests.java | 3 +- ...veryCachingConnectionIntegrationTests.java | 11 +- ...istenerRecoveryRepeatIntegrationTests.java | 3 +- ...MessageListenerTxSizeIntegrationTests.java | 12 +- .../MethodRabbitListenerEndpointTests.java | 39 ++-- .../RabbitListenerEndpointRegistryTests.java | 4 +- ...ageListenerContainerIntegration2Tests.java | 3 +- ...sageListenerContainerIntegrationTests.java | 38 ++-- .../SimpleMessageListenerContainerTests.java | 7 +- .../SimpleMessageListenerWithRabbitMQ.java | 15 +- .../listener/UnackedRawIntegrationTests.java | 9 +- .../MessagingMessageListenerAdapterTests.java | 12 +- .../amqp/rabbit/test/BrokerRunning.java | 6 +- .../amqp/rabbit/test/BrokerTestUtils.java | 6 +- .../amqp/rabbit/test/Log4jLevelAdjuster.java | 3 +- .../test/LongRunningIntegrationTest.java | 2 +- .../amqp/rabbit/test/RabbitMatchers.java | 6 +- .../amqp/rabbit/test/RepeatProcessor.java | 21 +- .../RabbitExceptionTranslatorTests.java | 4 +- ...bitTransactionManagerIntegrationTests.java | 6 +- src/checkstyle/checkstyle-suppressions.xml | 1 + src/checkstyle/checkstyle.xml | 148 +++++++------ src/checkstyle/fixFinal.gradle | 55 +++++ src/checkstyle/fixWhiteAround.gradle | 64 ++++++ src/reference/asciidoc/amqp.adoc | 5 +- 133 files changed, 1054 insertions(+), 756 deletions(-) create mode 100644 src/checkstyle/fixFinal.gradle create mode 100644 src/checkstyle/fixWhiteAround.gradle diff --git a/build.gradle b/build.gradle index 0281155b..77d1354a 100644 --- a/build.gradle +++ b/build.gradle @@ -65,6 +65,8 @@ subprojects { subproject -> apply from: "${rootDir}/src/checkstyle/fixHeaders.gradle" apply from: "${rootDir}/src/checkstyle/fixThis.gradle" apply from: "${rootDir}/src/checkstyle/fixModifiers.gradle" + apply from: "${rootDir}/src/checkstyle/fixFinal.gradle" + apply from: "${rootDir}/src/checkstyle/fixWhiteAround.gradle" if (project.hasProperty('platformVersion')) { apply plugin: 'spring-io' diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/AddressUtils.java b/spring-amqp/src/main/java/org/springframework/amqp/core/AddressUtils.java index c9c7d9a6..5b81c519 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/AddressUtils.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/AddressUtils.java @@ -22,7 +22,7 @@ package org.springframework.amqp.core; * */ @Deprecated -public class AddressUtils { +public final class AddressUtils { /** * @deprecated Use the constant in {@link Address#AMQ_RABBITMQ_REPLY_TO}. @@ -30,6 +30,10 @@ public class AddressUtils { @Deprecated public static final String AMQ_RABBITMQ_REPLY_TO = Address.AMQ_RABBITMQ_REPLY_TO; + private AddressUtils() { + super(); + } + /** * Decodes the reply-to {@link Address} into exchange/key. * diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/AnonymousQueue.java b/spring-amqp/src/main/java/org/springframework/amqp/core/AnonymousQueue.java index a9ad87e0..2879c822 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/AnonymousQueue.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/AnonymousQueue.java @@ -44,7 +44,7 @@ public class AnonymousQueue extends Queue { * Construct a queue with a UUID name with the supplied arguments. * @param arguments the arguments. */ - public AnonymousQueue(Map arguments) { + public AnonymousQueue(Map arguments) { super(UUID.randomUUID().toString(), false, true, true, arguments); } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/BindingBuilder.java b/spring-amqp/src/main/java/org/springframework/amqp/core/BindingBuilder.java index 1f69135e..9c019464 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/BindingBuilder.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/BindingBuilder.java @@ -29,9 +29,14 @@ import org.springframework.util.Assert; * @author Mark Pollack * @author Mark Fisher * @author Dave Syer + * @author Gary Russell */ public final class BindingBuilder { + private BindingBuilder() { + super(); + } + public static DestinationConfigurer bind(Queue queue) { return new DestinationConfigurer(queue.getName(), DestinationType.QUEUE); } @@ -40,7 +45,15 @@ public final class BindingBuilder { return new DestinationConfigurer(exchange.getName(), DestinationType.EXCHANGE); } - public static class DestinationConfigurer { + private static Map createMapForKeys(String... keys) { + Map map = new HashMap(); + for (String key : keys) { + map.put(key, null); + } + return map; + } + + public static final class DestinationConfigurer { protected final String name; protected final DestinationType type; @@ -71,7 +84,7 @@ public final class BindingBuilder { } } - public static class HeadersExchangeMapConfigurer { + public static final class HeadersExchangeMapConfigurer { protected final DestinationConfigurer destination; @@ -102,7 +115,7 @@ public final class BindingBuilder { return new HeadersExchangeMapBindingCreator(headerValues, true); } - public class HeadersExchangeSingleValueBindingCreator { + public final class HeadersExchangeSingleValueBindingCreator { private final String key; @@ -126,7 +139,7 @@ public final class BindingBuilder { } } - public class HeadersExchangeKeysBindingCreator { + public final class HeadersExchangeKeysBindingCreator { private final Map headerMap; @@ -143,7 +156,7 @@ public final class BindingBuilder { } } - public class HeadersExchangeMapBindingCreator { + public final class HeadersExchangeMapBindingCreator { private final Map headerMap; @@ -173,7 +186,7 @@ public final class BindingBuilder { } } - public static class TopicExchangeRoutingKeyConfigurer extends AbstractRoutingKeyConfigurer { + public static final class TopicExchangeRoutingKeyConfigurer extends AbstractRoutingKeyConfigurer { private TopicExchangeRoutingKeyConfigurer(DestinationConfigurer destination, TopicExchange exchange) { super(destination, exchange.getName()); @@ -181,16 +194,16 @@ public final class BindingBuilder { public Binding with(String routingKey) { return new Binding(destination.name, destination.type, exchange, routingKey, - Collections. emptyMap()); + Collections.emptyMap()); } public Binding with(Enum routingKeyEnum) { return new Binding(destination.name, destination.type, exchange, routingKeyEnum.toString(), - Collections. emptyMap()); + Collections.emptyMap()); } } - public static class GenericExchangeRoutingKeyConfigurer extends AbstractRoutingKeyConfigurer { + public static final class GenericExchangeRoutingKeyConfigurer extends AbstractRoutingKeyConfigurer { private GenericExchangeRoutingKeyConfigurer(DestinationConfigurer destination, Exchange exchange) { super(destination, exchange.getName()); @@ -223,12 +236,12 @@ public final class BindingBuilder { public Binding noargs() { return new Binding(this.configurer.destination.name, this.configurer.destination.type, this.configurer.exchange, - this.routingKey, Collections. emptyMap()); + this.routingKey, Collections.emptyMap()); } } - public static class DirectExchangeRoutingKeyConfigurer extends AbstractRoutingKeyConfigurer { + public static final class DirectExchangeRoutingKeyConfigurer extends AbstractRoutingKeyConfigurer { private DirectExchangeRoutingKeyConfigurer(DestinationConfigurer destination, DirectExchange exchange) { super(destination, exchange.getName()); @@ -236,26 +249,18 @@ public final class BindingBuilder { public Binding with(String routingKey) { return new Binding(destination.name, destination.type, exchange, routingKey, - Collections. emptyMap()); + Collections.emptyMap()); } public Binding with(Enum routingKeyEnum) { return new Binding(destination.name, destination.type, exchange, routingKeyEnum.toString(), - Collections. emptyMap()); + Collections.emptyMap()); } public Binding withQueueName() { return new Binding(destination.name, destination.type, exchange, destination.name, - Collections. emptyMap()); + Collections.emptyMap()); } } - private static Map createMapForKeys(String... keys) { - Map map = new HashMap(); - for (String key : keys) { - map.put(key, null); - } - return map; - } - } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/DirectExchange.java b/spring-amqp/src/main/java/org/springframework/amqp/core/DirectExchange.java index 3d4e063c..f7fab4d5 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/DirectExchange.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/DirectExchange.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. @@ -40,7 +40,7 @@ public class DirectExchange extends AbstractExchange { super(name, durable, autoDelete); } - public DirectExchange(String name, boolean durable, boolean autoDelete, Map arguments) { + public DirectExchange(String name, boolean durable, boolean autoDelete, Map arguments) { super(name, durable, autoDelete, arguments); } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/FanoutExchange.java b/spring-amqp/src/main/java/org/springframework/amqp/core/FanoutExchange.java index 3e7cfda8..cfe0a528 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/FanoutExchange.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/FanoutExchange.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. @@ -36,7 +36,7 @@ public class FanoutExchange extends AbstractExchange { super(name, durable, autoDelete); } - public FanoutExchange(String name, boolean durable, boolean autoDelete, Map arguments) { + public FanoutExchange(String name, boolean durable, boolean autoDelete, Map arguments) { super(name, durable, autoDelete, arguments); } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/HeadersExchange.java b/spring-amqp/src/main/java/org/springframework/amqp/core/HeadersExchange.java index 178c5bcf..b7c82c35 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/HeadersExchange.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/HeadersExchange.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. @@ -32,7 +32,7 @@ public class HeadersExchange extends AbstractExchange { super(name, durable, autoDelete); } - public HeadersExchange(String name, boolean durable, boolean autoDelete, Map arguments) { + public HeadersExchange(String name, boolean durable, boolean autoDelete, Map arguments) { super(name, durable, autoDelete, arguments); } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/Message.java b/spring-amqp/src/main/java/org/springframework/amqp/core/Message.java index 8d7251ff..5778f6a6 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/Message.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/Message.java @@ -45,13 +45,13 @@ public class Message implements Serializable { private final byte[] body; - public Message(byte[] body, MessageProperties messageProperties) {//NOSONAR - this.body = body;//NOSONAR + public Message(byte[] body, MessageProperties messageProperties) { //NOSONAR + this.body = body; //NOSONAR this.messageProperties = messageProperties; } public byte[] getBody() { - return this.body;//NOSONAR + return this.body; //NOSONAR } public MessageProperties getMessageProperties() { @@ -90,7 +90,7 @@ public class Message implements Serializable { // ignore } // Comes out as '[B@....b' (so harmless) - return this.body.toString()+"(byte["+this.body.length+"])";//NOSONAR + return this.body.toString() + "(byte[" + this.body.length + "])"; //NOSONAR } @Override diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/MessageBuilder.java b/spring-amqp/src/main/java/org/springframework/amqp/core/MessageBuilder.java index 0fe1ead3..c9454768 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/MessageBuilder.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/MessageBuilder.java @@ -91,7 +91,7 @@ public final class MessageBuilder extends MessageBuilderSupport { return new MessageBuilder(Arrays.copyOf(body, body.length), message.getMessageProperties()); } - private MessageBuilder(byte[] body) {//NOSONAR + private MessageBuilder(byte[] body) { //NOSONAR this.body = body; } @@ -99,7 +99,7 @@ public final class MessageBuilder extends MessageBuilderSupport { this(message.getBody(), message.getMessageProperties()); } - private MessageBuilder(byte[] body, MessageProperties properties) {//NOSONAR + private MessageBuilder(byte[] body, MessageProperties properties) { //NOSONAR this.body = body; this.copyProperties(properties); } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/MessageDeliveryMode.java b/spring-amqp/src/main/java/org/springframework/amqp/core/MessageDeliveryMode.java index a3b57f05..7981b7bd 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/MessageDeliveryMode.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/MessageDeliveryMode.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. @@ -23,6 +23,7 @@ package org.springframework.amqp.core; * passing into AMQP APIs. * * @author Mark Pollack + * @author Gary Russell * */ public enum MessageDeliveryMode { @@ -31,30 +32,24 @@ public enum MessageDeliveryMode { public static int toInt(MessageDeliveryMode mode) { switch (mode) { - case NON_PERSISTENT: { + case NON_PERSISTENT: return 1; - } - case PERSISTENT: { + case PERSISTENT: return 2; - } - default: { + default: return -1; } - } } public static MessageDeliveryMode fromInt(int modeAsNumber) { switch (modeAsNumber) { - case 1: { + case 1: return NON_PERSISTENT; - } - case 2: { + case 2: return PERSISTENT; - } - default: { + default: return null; } - } } } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/MessageProperties.java b/spring-amqp/src/main/java/org/springframework/amqp/core/MessageProperties.java index d290d4c1..56ad1e58 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/MessageProperties.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/MessageProperties.java @@ -132,12 +132,12 @@ public class MessageProperties implements Serializable { } public void setTimestamp(Date timestamp) { - this.timestamp = timestamp;//NOSONAR + this.timestamp = timestamp; //NOSONAR } // NOTE qpid java timestamp is long, presumably can convert to Date. public Date getTimestamp() { - return this.timestamp;//NOSONAR + return this.timestamp; //NOSONAR } // NOTE Not forward compatible with qpid 1.0 .NET @@ -191,12 +191,12 @@ public class MessageProperties implements Serializable { return this.type; } - public void setCorrelationId(byte[] correlationId) {//NOSONAR - this.correlationId = correlationId;//NOSONAR + public void setCorrelationId(byte[] correlationId) { //NOSONAR + this.correlationId = correlationId; //NOSONAR } public byte[] getCorrelationId() { - return this.correlationId;//NOSONAR + return this.correlationId; //NOSONAR } public String getCorrelationIdString() { diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/MessagePropertiesBuilder.java b/spring-amqp/src/main/java/org/springframework/amqp/core/MessagePropertiesBuilder.java index 2edad8bd..cb93c3f3 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/MessagePropertiesBuilder.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/MessagePropertiesBuilder.java @@ -23,7 +23,7 @@ package org.springframework.amqp.core; * @since 1.3 * */ -public class MessagePropertiesBuilder extends MessageBuilderSupport { +public final class MessagePropertiesBuilder extends MessageBuilderSupport { /** * Returns a builder with an initial set of properties. diff --git a/spring-amqp/src/main/java/org/springframework/amqp/core/TopicExchange.java b/spring-amqp/src/main/java/org/springframework/amqp/core/TopicExchange.java index 83498b85..4f5b3267 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/core/TopicExchange.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/core/TopicExchange.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. @@ -36,7 +36,7 @@ public class TopicExchange extends AbstractExchange { super(name, durable, autoDelete); } - public TopicExchange(String name, boolean durable, boolean autoDelete, Map arguments) { + public TopicExchange(String name, boolean durable, boolean autoDelete, Map arguments) { super(name, durable, autoDelete, arguments); } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/support/converter/AbstractMessageConverter.java b/spring-amqp/src/main/java/org/springframework/amqp/support/converter/AbstractMessageConverter.java index ee6f9806..dcde2077 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/support/converter/AbstractMessageConverter.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/support/converter/AbstractMessageConverter.java @@ -50,12 +50,12 @@ public abstract class AbstractMessageConverter implements MessageConverter { @Override public final Message toMessage(Object object, MessageProperties messageProperties) throws MessageConversionException { - if (messageProperties==null) { + if (messageProperties == null) { messageProperties = new MessageProperties(); } Message message = createMessage(object, messageProperties); messageProperties = message.getMessageProperties(); - if (this.createMessageIds && messageProperties.getMessageId()==null) { + if (this.createMessageIds && messageProperties.getMessageId() == null) { messageProperties.setMessageId(UUID.randomUUID().toString()); } return message; diff --git a/spring-amqp/src/main/java/org/springframework/amqp/support/converter/DefaultClassMapper.java b/spring-amqp/src/main/java/org/springframework/amqp/support/converter/DefaultClassMapper.java index ac3a6931..b74f3ed5 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/support/converter/DefaultClassMapper.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/support/converter/DefaultClassMapper.java @@ -89,10 +89,12 @@ public class DefaultClassMapper implements ClassMapper, InitializingBean { } try { return ClassUtils.forName(classId, getClass().getClassLoader()); - } catch (ClassNotFoundException e) { + } + catch (ClassNotFoundException e) { throw new MessageConversionException( "failed to resolve class name [" + classId + "]", e); - } catch (LinkageError e) { + } + catch (LinkageError e) { throw new MessageConversionException( "failed to resolve class name [" + classId + "]", e); } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/support/converter/SerializerMessageConverter.java b/spring-amqp/src/main/java/org/springframework/amqp/support/converter/SerializerMessageConverter.java index 1cfb60cc..1b3d18f0 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/support/converter/SerializerMessageConverter.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/support/converter/SerializerMessageConverter.java @@ -189,7 +189,8 @@ public class SerializerMessageConverter extends WhiteListDeserializingMessageCon if (object instanceof String) { try { bytes = ((String) object).getBytes(this.defaultCharset); - } catch (UnsupportedEncodingException e) { + } + catch (UnsupportedEncodingException e) { throw new MessageConversionException("failed to convert Message content", e); } messageProperties.setContentType(MessageProperties.CONTENT_TYPE_TEXT_PLAIN); diff --git a/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/AbstractDecompressingPostProcessor.java b/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/AbstractDecompressingPostProcessor.java index b0eeef37..b27ab68d 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/AbstractDecompressingPostProcessor.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/AbstractDecompressingPostProcessor.java @@ -82,7 +82,7 @@ public abstract class AbstractDecompressingPostProcessor implements MessagePostP public Message postProcessMessage(Message message) throws AmqpException { Object autoDecompress = message.getMessageProperties().getHeaders() .get(MessageProperties.SPRING_AUTO_DECOMPRESS); - if (this.alwaysDecompress || (autoDecompress instanceof Boolean && ((Boolean)autoDecompress))) { + if (this.alwaysDecompress || (autoDecompress instanceof Boolean && ((Boolean) autoDecompress))) { ByteArrayInputStream zipped = new ByteArrayInputStream(message.getBody()); try { InputStream unzipper = getDecompressorStream(zipped); diff --git a/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/MessagePostProcessorUtils.java b/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/MessagePostProcessorUtils.java index 094d6e32..be33982d 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/MessagePostProcessorUtils.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/MessagePostProcessorUtils.java @@ -56,6 +56,6 @@ public final class MessagePostProcessorUtils { return sorted; } - private MessagePostProcessorUtils() {} + private MessagePostProcessorUtils() { } } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/ZipPostProcessor.java b/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/ZipPostProcessor.java index 8a84485f..f1721ecc 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/ZipPostProcessor.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/support/postprocessor/ZipPostProcessor.java @@ -53,7 +53,7 @@ public class ZipPostProcessor extends AbstractDeflaterPostProcessor { return "zip"; } - private static class SettableLevelZipOutputStream extends ZipOutputStream { + private static final class SettableLevelZipOutputStream extends ZipOutputStream { private SettableLevelZipOutputStream(OutputStream zipped, int level) { super(zipped); diff --git a/spring-amqp/src/main/java/org/springframework/amqp/utils/SerializationUtils.java b/spring-amqp/src/main/java/org/springframework/amqp/utils/SerializationUtils.java index 2ba7f984..255c3e17 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/utils/SerializationUtils.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/utils/SerializationUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2010 the original author or authors. + * Copyright 2006-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,8 +26,13 @@ import java.io.ObjectOutputStream; * Static utility to help with serialization. * * @author Dave Syer + * @author Gary Russell */ -public class SerializationUtils { +public final class SerializationUtils { + + private SerializationUtils() { + super(); + } /** * Serialize the object provided. @@ -59,7 +64,8 @@ public class SerializationUtils { } try { return deserialize(new ObjectInputStream(new ByteArrayInputStream(bytes))); - } catch (IOException e) { + } + catch (IOException e) { throw new IllegalArgumentException("Could not deserialize object", e); } } diff --git a/spring-amqp/src/main/java/org/springframework/amqp/utils/test/TestUtils.java b/spring-amqp/src/main/java/org/springframework/amqp/utils/test/TestUtils.java index ffb4027a..29bbe6cf 100644 --- a/spring-amqp/src/main/java/org/springframework/amqp/utils/test/TestUtils.java +++ b/spring-amqp/src/main/java/org/springframework/amqp/utils/test/TestUtils.java @@ -27,7 +27,11 @@ import org.springframework.util.Assert; * @author Gary Russell * @since 1.2 */ -public class TestUtils { +public final class TestUtils { + + private TestUtils() { + super(); + } /** * Uses nested {@link DirectFieldAccessor}s to obtain a property using dotted notation to traverse fields; e.g. diff --git a/spring-amqp/src/test/java/org/springframework/amqp/core/BindingBuilderTests.java b/spring-amqp/src/test/java/org/springframework/amqp/core/BindingBuilderTests.java index 8be87a21..98002b43 100644 --- a/spring-amqp/src/test/java/org/springframework/amqp/core/BindingBuilderTests.java +++ b/spring-amqp/src/test/java/org/springframework/amqp/core/BindingBuilderTests.java @@ -67,7 +67,7 @@ public class BindingBuilderTests { bind(new Queue("q")).// to(new CustomExchange("f")).// with("r").// - and(Collections. singletonMap("k", new Object())); + and(Collections.singletonMap("k", new Object())); assertNotNull(binding); } diff --git a/spring-amqp/src/test/java/org/springframework/amqp/core/MessagePropertiesTests.java b/spring-amqp/src/test/java/org/springframework/amqp/core/MessagePropertiesTests.java index 7b02b23d..0e0a6e80 100644 --- a/spring-amqp/src/test/java/org/springframework/amqp/core/MessagePropertiesTests.java +++ b/spring-amqp/src/test/java/org/springframework/amqp/core/MessagePropertiesTests.java @@ -16,7 +16,7 @@ package org.springframework.amqp.core; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import org.junit.Test; diff --git a/spring-amqp/src/test/java/org/springframework/amqp/core/build/MessageBuilderTests.java b/spring-amqp/src/test/java/org/springframework/amqp/core/build/MessageBuilderTests.java index 8ace0e03..cc3d8428 100644 --- a/spring-amqp/src/test/java/org/springframework/amqp/core/build/MessageBuilderTests.java +++ b/spring-amqp/src/test/java/org/springframework/amqp/core/build/MessageBuilderTests.java @@ -223,8 +223,8 @@ public class MessageBuilderTests { .setDeliveryTag(2L) .setExpiration("expiration") .setHeader("foo", "bar") - .copyHeaders(Collections. singletonMap("qux", "fiz")) - .copyHeaders(Collections. singletonMap("baz", "fuz")) + .copyHeaders(Collections.singletonMap("qux", "fiz")) + .copyHeaders(Collections.singletonMap("baz", "fuz")) .setMessageCount(3) .setMessageId("messageId") .setPriority(4) @@ -248,8 +248,8 @@ public class MessageBuilderTests { .setDeliveryTagIfAbsent(20L) .setExpirationIfAbsent("EXPIRATION") .setHeaderIfAbsent("foo", "BAR") - .copyHeadersIfAbsent(Collections. singletonMap("qux", "FIZ")) - .copyHeadersIfAbsent(Collections. singletonMap("baz", "FUZ")) + .copyHeadersIfAbsent(Collections.singletonMap("qux", "FIZ")) + .copyHeadersIfAbsent(Collections.singletonMap("baz", "FUZ")) .setMessageCountIfAbsent(30) .setMessageIdIfAbsent("MESSAGEID") .setPriorityIfAbsentOrDefault(40) @@ -273,8 +273,8 @@ public class MessageBuilderTests { .setDeliveryTag(2L) .setExpiration("expiration") .setHeader("foo", "bar") - .copyHeaders(Collections. singletonMap("qux", "fiz")) - .copyHeaders(Collections. singletonMap("baz", "fuz")) + .copyHeaders(Collections.singletonMap("qux", "fiz")) + .copyHeaders(Collections.singletonMap("baz", "fuz")) .setMessageCount(3) .setMessageId("messageId") .setPriority(4) @@ -298,8 +298,8 @@ public class MessageBuilderTests { .setDeliveryTagIfAbsent(20L) .setExpirationIfAbsent("EXPIRATION") .setHeaderIfAbsent("foo", "BAR") - .copyHeadersIfAbsent(Collections. singletonMap("qux", "FIZ")) - .copyHeadersIfAbsent(Collections. singletonMap("baz", "FUZ")) + .copyHeadersIfAbsent(Collections.singletonMap("qux", "FIZ")) + .copyHeadersIfAbsent(Collections.singletonMap("baz", "FUZ")) .setMessageCountIfAbsent(30) .setMessageIdIfAbsent("MESSAGEID") .setPriorityIfAbsentOrDefault(40) diff --git a/spring-amqp/src/test/java/org/springframework/amqp/support/converter/Jackson2JsonMessageConverterTests.java b/spring-amqp/src/test/java/org/springframework/amqp/support/converter/Jackson2JsonMessageConverterTests.java index 237f4af2..9e52eabd 100644 --- a/spring-amqp/src/test/java/org/springframework/amqp/support/converter/Jackson2JsonMessageConverterTests.java +++ b/spring-amqp/src/test/java/org/springframework/amqp/support/converter/Jackson2JsonMessageConverterTests.java @@ -219,7 +219,7 @@ public class Jackson2JsonMessageConverterTests { byte[] bytes = "[ {\"name\" : \"foo\" } ]".getBytes(); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/json"); - messageProperties.setInferredArgumentType((new ParameterizedTypeReference>() {}).getType()); + messageProperties.setInferredArgumentType((new ParameterizedTypeReference>() { }).getType()); Message message = new Message(bytes, messageProperties); Object foo = this.converter.fromMessage(message); assertThat(foo, instanceOf(List.class)); @@ -232,7 +232,7 @@ public class Jackson2JsonMessageConverterTests { MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/json"); messageProperties.setInferredArgumentType( - (new ParameterizedTypeReference>>() {}).getType()); + (new ParameterizedTypeReference>>() { }).getType()); Message message = new Message(bytes, messageProperties); Object foo = this.converter.fromMessage(message); assertThat(foo, instanceOf(LinkedHashMap.class)); @@ -250,7 +250,7 @@ public class Jackson2JsonMessageConverterTests { MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/json"); messageProperties.setInferredArgumentType( - (new ParameterizedTypeReference>>() {}).getType()); + (new ParameterizedTypeReference>>() { }).getType()); Message message = new Message(bytes, messageProperties); Object foo = this.converter.fromMessage(message); assertThat(foo, instanceOf(LinkedHashMap.class)); diff --git a/spring-amqp/src/test/java/org/springframework/amqp/support/converter/JsonMessageConverterTests.java b/spring-amqp/src/test/java/org/springframework/amqp/support/converter/JsonMessageConverterTests.java index e7d99350..257d661d 100644 --- a/spring-amqp/src/test/java/org/springframework/amqp/support/converter/JsonMessageConverterTests.java +++ b/spring-amqp/src/test/java/org/springframework/amqp/support/converter/JsonMessageConverterTests.java @@ -53,7 +53,7 @@ public class JsonMessageConverterTests { private JsonMessageConverter jsonConverterWithDefaultType; @Before - public void before(){ + public void before() { converter = new JsonMessageConverter(); trade = new SimpleTrade(); trade.setAccountName("Acct1"); diff --git a/spring-amqp/src/test/java/org/springframework/amqp/support/converter/MessagingMessageConverterTests.java b/spring-amqp/src/test/java/org/springframework/amqp/support/converter/MessagingMessageConverterTests.java index 74f7c452..67215997 100644 --- a/spring-amqp/src/test/java/org/springframework/amqp/support/converter/MessagingMessageConverterTests.java +++ b/spring-amqp/src/test/java/org/springframework/amqp/support/converter/MessagingMessageConverterTests.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,6 +16,9 @@ package org.springframework.amqp.support.converter; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -24,10 +27,10 @@ import org.springframework.amqp.core.MessageProperties; import org.springframework.messaging.Message; import org.springframework.messaging.support.MessageBuilder; -import static org.junit.Assert.*; /** * @author Stephane Nicoll + * @author Gary Russell */ public class MessagingMessageConverterTests { diff --git a/spring-amqp/src/test/java/org/springframework/amqp/support/converter/SimpleTrade.java b/spring-amqp/src/test/java/org/springframework/amqp/support/converter/SimpleTrade.java index 88534622..18ca77bf 100644 --- a/spring-amqp/src/test/java/org/springframework/amqp/support/converter/SimpleTrade.java +++ b/spring-amqp/src/test/java/org/springframework/amqp/support/converter/SimpleTrade.java @@ -135,7 +135,8 @@ public class SimpleTrade { if (other.accountName != null) { return false; } - } else if (!accountName.equals(other.accountName)) { + } + else if (!accountName.equals(other.accountName)) { return false; } if (buyRequest != other.buyRequest) { @@ -145,14 +146,16 @@ public class SimpleTrade { if (other.orderType != null) { return false; } - } else if (!orderType.equals(other.orderType)) { + } + else if (!orderType.equals(other.orderType)) { return false; } if (price == null) { if (other.price != null) { return false; } - } else if (!price.equals(other.price)) { + } + else if (!price.equals(other.price)) { return false; } if (quantity != other.quantity) { @@ -162,21 +165,24 @@ public class SimpleTrade { if (other.requestId != null) { return false; } - } else if (!requestId.equals(other.requestId)) { + } + else if (!requestId.equals(other.requestId)) { return false; } if (ticker == null) { if (other.ticker != null) { return false; } - } else if (!ticker.equals(other.ticker)) { + } + else if (!ticker.equals(other.ticker)) { return false; } if (userName == null) { if (other.userName != null) { return false; } - } else if (!userName.equals(other.userName)) { + } + else if (!userName.equals(other.userName)) { return false; } return true; diff --git a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerCaptureTest.java b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerCaptureTest.java index a33bac29..a7f0affa 100644 --- a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerCaptureTest.java +++ b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerCaptureTest.java @@ -162,12 +162,12 @@ public class ExampleRabbitListenerCaptureTest { private boolean failed; - @RabbitListener(id="foo", queues="#{queue1.name}") + @RabbitListener(id = "foo", queues = "#{queue1.name}") public String foo(String foo) { return foo.toUpperCase(); } - @RabbitListener(id="bar", queues="#{queue2.name}") + @RabbitListener(id = "bar", queues = "#{queue2.name}") public void foo(@Payload String foo, @Header("amqp_receivedRoutingKey") String rk) { if (!failed && foo.equals("ex")) { failed = true; diff --git a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyAndCaptureTest.java b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyAndCaptureTest.java index 757ff68f..1336cd5f 100644 --- a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyAndCaptureTest.java +++ b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyAndCaptureTest.java @@ -181,12 +181,12 @@ public class ExampleRabbitListenerSpyAndCaptureTest { private boolean failed; - @RabbitListener(id="foo", queues="#{queue1.name}") + @RabbitListener(id = "foo", queues = "#{queue1.name}") public String foo(String foo) { return foo.toUpperCase(); } - @RabbitListener(id="bar", queues="#{queue2.name}") + @RabbitListener(id = "bar", queues = "#{queue2.name}") public void foo(@Payload String foo, @Header("amqp_receivedRoutingKey") String rk) { if (!failed && foo.equals("ex")) { failed = true; diff --git a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyTest.java b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyTest.java index fea70e54..d9889b13 100644 --- a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyTest.java +++ b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyTest.java @@ -142,12 +142,12 @@ public class ExampleRabbitListenerSpyTest { public static class Listener { - @RabbitListener(id="foo", queues="#{queue1.name}") + @RabbitListener(id = "foo", queues = "#{queue1.name}") public String foo(String foo) { return foo.toUpperCase(); } - @RabbitListener(id="bar", queues="#{queue2.name}") + @RabbitListener(id = "bar", queues = "#{queue2.name}") public void foo(@Payload String foo, @Header("amqp_receivedRoutingKey") String rk) { } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/Exchange.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/Exchange.java index ddf7cd47..b2126cee 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/Exchange.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/Exchange.java @@ -16,9 +16,8 @@ package org.springframework.amqp.rabbit.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.amqp.core.ExchangeTypes; @@ -31,7 +30,7 @@ import org.springframework.amqp.core.ExchangeTypes; * */ @Target({}) -@Retention(RUNTIME) +@Retention(RetentionPolicy.RUNTIME) public @interface Exchange { /** diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/Queue.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/Queue.java index bc66ed7b..cfdf18c6 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/Queue.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/Queue.java @@ -16,9 +16,8 @@ package org.springframework.amqp.rabbit.annotation; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** @@ -29,7 +28,7 @@ import java.lang.annotation.Target; * */ @Target({}) -@Retention(RUNTIME) +@Retention(RetentionPolicy.RUNTIME) public @interface Queue { /** diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/BindingFactoryBean.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/BindingFactoryBean.java index 372f5a47..41d9000b 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/BindingFactoryBean.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/BindingFactoryBean.java @@ -74,7 +74,8 @@ public class BindingFactoryBean implements FactoryBean { if (this.destinationQueue != null) { destination = this.destinationQueue.getName(); destinationType = DestinationType.QUEUE; - } else { + } + else { destination = this.destinationExchange.getName(); destinationType = DestinationType.EXCHANGE; } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/NamespaceUtils.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/NamespaceUtils.java index f0f570d4..50953117 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/NamespaceUtils.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/NamespaceUtils.java @@ -143,7 +143,8 @@ public abstract class NamespaceUtils { String value = element.getAttribute(attributeName); if (StringUtils.hasText(value)) { builder.addConstructorArgValue(new TypedStringValue(value)); - } else { + } + else { builder.addConstructorArgValue(defaultValue); } } @@ -268,7 +269,7 @@ public abstract class NamespaceUtils { } String ref = element.getAttribute(REF_ATTRIBUTE); - Assert.isTrue(!StringUtils.hasText(ref) || innerComponentDefinition == null,//NOSONAR + Assert.isTrue(!StringUtils.hasText(ref) || innerComponentDefinition == null, //NOSONAR "Ambiguous definition. Inner bean " + (innerComponentDefinition == null ? innerComponentDefinition : innerComponentDefinition .getBeanDefinition().getBeanClassName()) + " declaration and \"ref\" " + ref @@ -307,12 +308,12 @@ public abstract class NamespaceUtils { boolean hasAttributeValue = StringUtils.hasText(valueElementValue); boolean hasAttributeExpression = StringUtils.hasText(expressionElementValue); - if (hasAttributeValue && hasAttributeExpression){ + if (hasAttributeValue && hasAttributeExpression) { parserContext.getReaderContext().error("Only one of '" + valueElementName + "' or '" + expressionElementName + "' is allowed", element); } - if (oneRequired && (!hasAttributeValue && !hasAttributeExpression)){ + if (oneRequired && (!hasAttributeValue && !hasAttributeExpression)) { parserContext.getReaderContext().error("One of '" + valueElementName + "' or '" + expressionElementName + "' is required", element); } @@ -333,7 +334,7 @@ public abstract class NamespaceUtils { String expressionElementValue = element.getAttribute(expressionElementName); - if (StringUtils.hasText(expressionElementValue)){ + if (StringUtils.hasText(expressionElementValue)) { BeanDefinitionBuilder expressionDefBuilder = BeanDefinitionBuilder.genericBeanDefinition(ExpressionFactoryBean.class); expressionDefBuilder.addConstructorArgValue(expressionElementValue); diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/QueueArgumentsParser.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/QueueArgumentsParser.java index f036f2b4..b785e896 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/QueueArgumentsParser.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/QueueArgumentsParser.java @@ -18,11 +18,12 @@ package org.springframework.amqp.rabbit.config; import java.util.Map; +import org.w3c.dom.Element; + import org.springframework.beans.factory.config.MapFactoryBean; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.w3c.dom.Element; /** * @author Gary Russell diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitNamespaceUtils.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitNamespaceUtils.java index 9898368c..425498b0 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitNamespaceUtils.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitNamespaceUtils.java @@ -33,7 +33,7 @@ import org.springframework.util.StringUtils; * @since 1.0.1 * */ -public class RabbitNamespaceUtils { +public final class RabbitNamespaceUtils { private static final String CONNECTION_FACTORY_ATTRIBUTE = "connection-factory"; @@ -99,6 +99,11 @@ public class RabbitNamespaceUtils { private static final String IDLE_EVENT_INTERVAL = "idle-event-interval"; + + private RabbitNamespaceUtils() { + super(); + } + public static BeanDefinition parseContainer(Element containerEle, ParserContext parserContext) { RootBeanDefinition containerDef = new RootBeanDefinition(SimpleMessageListenerContainer.class); containerDef.setSource(parserContext.extractSource(containerEle)); @@ -276,17 +281,21 @@ public class RabbitNamespaceUtils { if (StringUtils.hasText(acknowledge)) { if (ACKNOWLEDGE_AUTO.equals(acknowledge)) { acknowledgeMode = AcknowledgeMode.AUTO; - } else if (ACKNOWLEDGE_MANUAL.equals(acknowledge)) { + } + else if (ACKNOWLEDGE_MANUAL.equals(acknowledge)) { acknowledgeMode = AcknowledgeMode.MANUAL; - } else if (ACKNOWLEDGE_NONE.equals(acknowledge)) { + } + else if (ACKNOWLEDGE_NONE.equals(acknowledge)) { acknowledgeMode = AcknowledgeMode.NONE; - } else { + } + else { parserContext.getReaderContext().error( "Invalid listener container 'acknowledge' setting [" + acknowledge + "]: only \"auto\", \"manual\", and \"none\" supported.", ele); } return acknowledgeMode; - } else { + } + else { return null; } } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilder.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilder.java index e3b60152..0b7de627 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilder.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilder.java @@ -133,7 +133,7 @@ public abstract class RetryInterceptorBuilder { * @param maxInterval The max interval. * @return this. */ - public RetryInterceptorBuilder backOffOptions(long initialInterval, double multiplier , long maxInterval) { + public RetryInterceptorBuilder backOffOptions(long initialInterval, double multiplier, long maxInterval) { Assert.isNull(this.retryOperations, "cannot set the back off policy when a custom retryOperations has been set"); Assert.isTrue(!this.backOffPolicySet, "cannot set the back off options when a back off policy has been set"); ExponentialBackOffPolicy policy = new ExponentialBackOffPolicy(); @@ -203,7 +203,7 @@ public abstract class RetryInterceptorBuilder { private RetryInterceptorBuilder() { } - public static class StatefulRetryInterceptorBuilder extends RetryInterceptorBuilder { + public static final class StatefulRetryInterceptorBuilder extends RetryInterceptorBuilder { private final StatefulRetryOperationsInterceptorFactoryBean factoryBean = new StatefulRetryOperationsInterceptorFactoryBean(); @@ -289,7 +289,7 @@ public abstract class RetryInterceptorBuilder { } - public static class StatelessRetryInterceptorBuilder extends RetryInterceptorBuilder { + public static final class StatelessRetryInterceptorBuilder extends RetryInterceptorBuilder { private final StatelessRetryOperationsInterceptorFactoryBean factoryBean = new StatelessRetryOperationsInterceptorFactoryBean(); diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatefulRetryOperationsInterceptorFactoryBean.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatefulRetryOperationsInterceptorFactoryBean.java index 6ab13a9b..1476c42a 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatefulRetryOperationsInterceptorFactoryBean.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatefulRetryOperationsInterceptorFactoryBean.java @@ -93,7 +93,8 @@ public class StatefulRetryOperationsInterceptorFactoryBean extends AbstractRetry Message message = (Message) args[1]; if (messageRecoverer == null) { logger.warn("Message dropped on recovery: " + message, cause); - } else { + } + else { messageRecoverer.recover(message, cause); } // This is actually a normal outcome. It means the recovery was successful, but we don't want to consume diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatelessRetryOperationsInterceptorFactoryBean.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatelessRetryOperationsInterceptorFactoryBean.java index 86e430f1..c7771f5e 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatelessRetryOperationsInterceptorFactoryBean.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatelessRetryOperationsInterceptorFactoryBean.java @@ -39,6 +39,7 @@ import org.springframework.retry.support.RetryTemplate; * @see RetryOperations#execute(org.springframework.retry.RetryCallback, org.springframework.retry.RecoveryCallback) * * @author Dave Syer + * @author Gary Russell * */ public class StatelessRetryOperationsInterceptorFactoryBean extends AbstractRetryOperationsInterceptorFactoryBean { @@ -60,7 +61,8 @@ public class StatelessRetryOperationsInterceptorFactoryBean extends AbstractRetr Message message = (Message) args[1]; if (messageRecoverer == null) { logger.warn("Message dropped on recovery: " + message, cause); - } else { + } + else { messageRecoverer.recover(message, cause); } return null; diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/AbstractConnectionFactory.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/AbstractConnectionFactory.java index 0b11b465..eeb58fa6 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/AbstractConnectionFactory.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/AbstractConnectionFactory.java @@ -300,7 +300,8 @@ public abstract class AbstractConnectionFactory implements ConnectionFactory, Di InetAddress localMachine = InetAddress.getLocalHost(); temp = localMachine.getHostName(); this.logger.debug("Using hostname [" + temp + "] for hostname."); - } catch (UnknownHostException e) { + } + catch (UnknownHostException e) { this.logger.warn("Could not get host name, using 'localhost' as default value", e); temp = "localhost"; } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/AbstractRoutingConnectionFactory.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/AbstractRoutingConnectionFactory.java index 6cf22526..367281e0 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/AbstractRoutingConnectionFactory.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/AbstractRoutingConnectionFactory.java @@ -193,7 +193,7 @@ public abstract class AbstractRoutingConnectionFactory implements ConnectionFact */ protected void addTargetConnectionFactory(Object key, ConnectionFactory connectionFactory) { this.targetConnectionFactories.put(key, connectionFactory); - for(ConnectionListener listener : this.connectionListeners) { + for (ConnectionListener listener : this.connectionListeners) { connectionFactory.addConnectionListener(listener); } } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactory.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactory.java index c1eb317a..4168fc06 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactory.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactory.java @@ -365,7 +365,7 @@ public class CachingConnectionFactory extends AbstractConnectionFactory @Override public void shutdownCompleted(ShutdownSignalException cause) { - this.closeExceptionLogger.log(logger, "Channel shutdown" ,cause); + this.closeExceptionLogger.log(logger, "Channel shutdown", cause); } @Override @@ -503,7 +503,7 @@ public class CachingConnectionFactory extends AbstractConnectionFactory } else if (this.cacheMode == CacheMode.CONNECTION) { if (!connection.isOpen()) { - synchronized(this.connectionMonitor) { + synchronized (this.connectionMonitor) { this.allocatedConnectionNonTransactionalChannels.get(connection).clear(); this.allocatedConnectionTransactionalChannels.get(connection).clear(); connection.notifyCloseIfNecessary(); @@ -768,7 +768,7 @@ public class CachingConnectionFactory extends AbstractConnectionFactory public Properties getCacheProperties() { Properties props = new Properties(); props.setProperty("cacheMode", this.cacheMode.name()); - synchronized(this.connectionMonitor) { + synchronized (this.connectionMonitor) { props.setProperty("channelCacheSize", Integer.toString(this.channelCacheSize)); if (this.cacheMode.equals(CacheMode.CONNECTION)) { props.setProperty("connectionCacheSize", Integer.toString(this.connectionCacheSize)); @@ -827,7 +827,7 @@ public class CachingConnectionFactory extends AbstractConnectionFactory + " " + super.toString() + "]"; } - private class CachedChannelInvocationHandler implements InvocationHandler { + private final class CachedChannelInvocationHandler implements InvocationHandler { private final ChannelCachingConnectionProxy theConnection; @@ -938,7 +938,7 @@ public class CachingConnectionFactory extends AbstractConnectionFactory * in the list, it means we're closing a cached channel (for which a permit * has already been released). */ - synchronized(this.channelList) { + synchronized (this.channelList) { if (this.channelList.contains(proxy)) { return; } @@ -1031,16 +1031,16 @@ public class CachingConnectionFactory extends AbstractConnectionFactory catch (InterruptedException e) { Thread.currentThread().interrupt(); } - catch (Exception e) {} + catch (Exception e) { } finally { try { if (channel.isOpen()) { channel.close(); } } - catch (IOException e) {} - catch (AlreadyClosedException e) {} - catch (TimeoutException e) {} + catch (IOException e) { } + catch (AlreadyClosedException e) { } + catch (TimeoutException e) { } } } @@ -1062,7 +1062,7 @@ public class CachingConnectionFactory extends AbstractConnectionFactory } - private class ChannelCachingConnectionProxy implements Connection, ConnectionProxy { + private class ChannelCachingConnectionProxy implements Connection, ConnectionProxy { // NOSONAR - final (tests spy) private volatile Connection target; diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryUtils.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryUtils.java index 92b71fcf..4f27428d 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryUtils.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryUtils.java @@ -41,7 +41,11 @@ import com.rabbitmq.client.Channel; * @author Gary Russell * @author Artem Bilan */ -public class ConnectionFactoryUtils { +public final class ConnectionFactoryUtils { + + private ConnectionFactoryUtils() { + super(); + } /** * Determine whether the given RabbitMQ Channel is transactional, that is, bound to the current thread by Spring's @@ -126,7 +130,7 @@ public class ConnectionFactoryUtils { if (resourceHolderToUse == null) { resourceHolderToUse = new RabbitResourceHolder(); } - Connection connection = resourceFactory.getConnection(resourceHolderToUse);//NOSONAR + Connection connection = resourceFactory.getConnection(resourceHolderToUse); //NOSONAR Channel channel = null; try { /* @@ -152,7 +156,7 @@ public class ConnectionFactoryUtils { } catch (IOException ex) { - RabbitUtils.closeChannel(channel);//NOSONAR + RabbitUtils.closeChannel(channel); //NOSONAR RabbitUtils.closeConnection(connection); throw new AmqpIOException(ex); } @@ -250,7 +254,7 @@ public class ConnectionFactoryUtils { * JtaTransactionManager transaction). * @see org.springframework.transaction.jta.JtaTransactionManager */ - private static class RabbitResourceSynchronization extends + private static final class RabbitResourceSynchronization extends ResourceHolderSynchronization { private final boolean locallyTransacted; diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/ConsumerChannelRegistry.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/ConsumerChannelRegistry.java index c752d9ed..093e875c 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/ConsumerChannelRegistry.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/ConsumerChannelRegistry.java @@ -32,12 +32,16 @@ import com.rabbitmq.client.Channel; * @since 1.2 * */ -public class ConsumerChannelRegistry { +public final class ConsumerChannelRegistry { private static final Log logger = LogFactory.getLog(ConsumerChannelRegistry.class); private static final ThreadLocal consumerChannel = new ThreadLocal(); + private ConsumerChannelRegistry() { + super(); + } + /** * If a listener container is configured to use a RabbitTransactionManager, the * consumer's channel is registered here so that it is used as the bound resource @@ -99,7 +103,7 @@ public class ConsumerChannelRegistry { return channel; } - private static class ChannelHolder { + private static final class ChannelHolder { private final Channel channel; diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/LocalizedQueueConnectionFactory.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/LocalizedQueueConnectionFactory.java index 19424b4f..ba7c5bb7 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/LocalizedQueueConnectionFactory.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/LocalizedQueueConnectionFactory.java @@ -104,7 +104,10 @@ public class LocalizedQueueConnectionFactory implements ConnectionFactory, Routi this.password = password; this.useSSL = useSSL; this.sslPropertiesLocation = sslPropertiesLocation; - this.keyStore = this.trustStore = this.keyStorePassPhrase = this.trustStorePassPhrase = null; + this.keyStore = null; + this.trustStore = null; + this.keyStorePassPhrase = null; + this.trustStorePassPhrase = null; } /** @@ -169,7 +172,10 @@ public class LocalizedQueueConnectionFactory implements ConnectionFactory, Routi this.password = password; this.useSSL = useSSL; this.sslPropertiesLocation = sslPropertiesLocation; - this.keyStore = this.trustStore = this.keyStorePassPhrase = this.trustStorePassPhrase = null; + this.keyStore = null; + this.trustStore = null; + this.keyStorePassPhrase = null; + this.trustStorePassPhrase = null; } /** diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/RabbitResourceHolder.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/RabbitResourceHolder.java index 5cd753de..d74f2ca1 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/RabbitResourceHolder.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/RabbitResourceHolder.java @@ -153,7 +153,8 @@ public class RabbitResourceHolder extends ResourceHolderSupport { } channel.txCommit(); } - } catch (IOException e) { + } + catch (IOException e) { throw new AmqpException("failed to commit RabbitMQ transaction", e); } } @@ -174,7 +175,7 @@ public class RabbitResourceHolder extends ResourceHolderSupport { logger.debug("Could not close synchronized Rabbit Channel after transaction", ex); } } - for (Connection con : this.connections) {//NOSONAR + for (Connection con : this.connections) { //NOSONAR RabbitUtils.closeConnection(con); } this.connections.clear(); @@ -196,7 +197,8 @@ public class RabbitResourceHolder extends ResourceHolderSupport { for (Long deliveryTag : this.deliveryTags.get(channel)) { try { channel.basicReject(deliveryTag, true); - } catch (IOException ex) { + } + catch (IOException ex) { throw new AmqpIOException(ex); } } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/RabbitUtils.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/RabbitUtils.java index c42deceb..6a59f95c 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/RabbitUtils.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/RabbitUtils.java @@ -53,7 +53,8 @@ public abstract class RabbitUtils { if (connection != null) { try { connection.close(); - } catch (Exception ex) { + } + catch (Exception ex) { logger.debug("Ignoring Connection exception - assuming already closed: " + ex.getMessage(), ex); } } @@ -91,7 +92,8 @@ public abstract class RabbitUtils { Assert.notNull(channel, "Channel must not be null"); try { channel.txCommit(); - } catch (IOException ex) { + } + catch (IOException ex) { throw new AmqpIOException(ex); } } @@ -100,7 +102,8 @@ public abstract class RabbitUtils { Assert.notNull(channel, "Channel must not be null"); try { channel.txRollback(); - } catch (IOException ex) { + } + catch (IOException ex) { throw new AmqpIOException(ex); } } @@ -124,7 +127,8 @@ public abstract class RabbitUtils { * If not transactional then we are auto-acking (at least as of 1.0.0.M2) so there is nothing to recover. * Messages are going to be lost in general. */ - } catch (Exception ex) { + } + catch (Exception ex) { throw RabbitExceptionTranslator.convertRabbitAccessException(ex); } } @@ -137,7 +141,8 @@ public abstract class RabbitUtils { public static void declareTransactional(Channel channel) { try { channel.txSelect(); - } catch (IOException e) { + } + catch (IOException e) { throw RabbitExceptionTranslator.convertRabbitAccessException(e); } } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/SimpleConnection.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/SimpleConnection.java index f2b218c1..21d80956 100755 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/SimpleConnection.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/SimpleConnection.java @@ -52,7 +52,8 @@ public class SimpleConnection implements Connection { channel.txSelect(); } return channel; - } catch (IOException e) { + } + catch (IOException e) { throw RabbitExceptionTranslator.convertRabbitAccessException(e); } } @@ -62,7 +63,8 @@ public class SimpleConnection implements Connection { try { // let the physical close time out if necessary this.delegate.close(this.closeTimeout); - } catch (IOException e) { + } + catch (IOException e) { throw RabbitExceptionTranslator.convertRabbitAccessException(e); } } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitAdmin.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitAdmin.java index c0fdca4f..b38c72e2 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitAdmin.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitAdmin.java @@ -178,7 +178,8 @@ public class RabbitAdmin implements AmqpAdmin, ApplicationContextAware, Applicat try { channel.exchangeDelete(exchangeName); - } catch (IOException e) { + } + catch (IOException e) { return false; } return true; @@ -250,7 +251,8 @@ public class RabbitAdmin implements AmqpAdmin, ApplicationContextAware, Applicat public Boolean doInRabbit(Channel channel) throws Exception { try { channel.queueDelete(queueName); - } catch (IOException e) { + } + catch (IOException e) { return false; } return true; @@ -313,7 +315,8 @@ public class RabbitAdmin implements AmqpAdmin, ApplicationContextAware, Applicat channel.queueUnbind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); - } else { + } + else { channel.exchangeUnbind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } @@ -588,7 +591,8 @@ public class RabbitAdmin implements AmqpAdmin, ApplicationContextAware, Applicat catch (IOException e) { logOrRethrowDeclarationException(queue, "queue", e); } - } else if (this.logger.isDebugEnabled()) { + } + else if (this.logger.isDebugEnabled()) { this.logger.debug("Queue with name that starts with 'amq.' cannot be declared."); } } @@ -609,7 +613,8 @@ public class RabbitAdmin implements AmqpAdmin, ApplicationContextAware, Applicat channel.queueBind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } - } else { + } + else { channel.exchangeBind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java index c926ba6f..6f3985aa 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java @@ -1169,7 +1169,7 @@ public class RabbitTemplate extends RabbitAccessor implements BeanFactoryAware, protected Message doSendAndReceive(final String exchange, final String routingKey, final Message message, CorrelationData correlationData) { if (!this.evaluatedFastReplyTo) { - synchronized(this) { + synchronized (this) { if (!this.evaluatedFastReplyTo) { evaluateFastReplyTo(); } @@ -1231,7 +1231,7 @@ public class RabbitTemplate extends RabbitAccessor implements BeanFactoryAware, try { channel.basicCancel(consumerTag); } - catch (Exception e) {} + catch (Exception e) { } } return reply; } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java index 1d1e0918..f5fe7624 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java @@ -191,7 +191,7 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor Assert.notNull(queues, "'queues' cannot be null"); Assert.noNullElements(queues, "'queues' cannot contain null elements"); String[] queueNames = new String[queues.length]; - for (int i = 0; i< queues.length; i++) { + for (int i = 0; i < queues.length; i++) { queueNames[i] = queues[i].getName(); } this.addQueueNames(queueNames); @@ -218,7 +218,7 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor Assert.notNull(queues, "'queues' cannot be null"); Assert.noNullElements(queues, "'queues' cannot contain null elements"); String[] queueNames = new String[queues.length]; - for (int i = 0; i< queues.length; i++) { + for (int i = 0; i < queues.length; i++) { queueNames[i] = queues[i].getName(); } return this.removeQueueNames(queueNames); @@ -470,7 +470,8 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor this.lifecycleMonitor.notifyAll(); } doInitialize(); - } catch (Exception ex) { + } + catch (Exception ex) { throw convertRabbitAccessException(ex); } } @@ -488,9 +489,11 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor // Shut down the invokers. try { doShutdown(); - } catch (Exception ex) { + } + catch (Exception ex) { throw convertRabbitAccessException(ex); - } finally { + } + finally { synchronized (this.lifecycleMonitor) { this.running = false; this.lifecycleMonitor.notifyAll(); @@ -545,7 +548,8 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor logger.debug("Starting Rabbit listener container."); } doStart(); - } catch (Exception ex) { + } + catch (Exception ex) { throw convertRabbitAccessException(ex); } } @@ -572,9 +576,11 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor public void stop() { try { doStop(); - } catch (Exception ex) { + } + catch (Exception ex) { throw convertRabbitAccessException(ex); - } finally { + } + finally { synchronized (this.lifecycleMonitor) { this.running = false; this.lifecycleMonitor.notifyAll(); @@ -844,13 +850,28 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor // Regular case: failed while active. // Invoke ErrorHandler if available. invokeErrorHandler(ex); - } else { + } + else { // Rare case: listener thread failed after container shutdown. // Log at debug level, to avoid spamming the shutdown log. logger.debug("Listener exception after container shutdown", ex); } } + /** + * @param e The Exception. + * @param message The failed message. + * @return If 'e' is of type {@link ListenerExecutionFailedException} - return 'e' as it is, otherwise wrap it to + * {@link ListenerExecutionFailedException} and return. + */ + protected Exception wrapToListenerExecutionFailedExceptionIfNeeded(Exception e, Message message) { + if (!(e instanceof ListenerExecutionFailedException)) { + // Wrap exception to ListenerExecutionFailedException. + return new ListenerExecutionFailedException("Listener threw exception", e, message); + } + return e; + } + /** * Exception that indicates that the initial setup of this container's shared Rabbit Connection failed. This is * indicating to invokers that they need to establish the shared Connection themselves on first access. @@ -867,17 +888,4 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor } } - /** - * @param e The Exception. - * @param message The failed message. - * @return If 'e' is of type {@link ListenerExecutionFailedException} - return 'e' as it is, otherwise wrap it to - * {@link ListenerExecutionFailedException} and return. - */ - protected Exception wrapToListenerExecutionFailedExceptionIfNeeded(Exception e, Message message) { - if (!(e instanceof ListenerExecutionFailedException)) { - // Wrap exception to ListenerExecutionFailedException. - return new ListenerExecutionFailedException("Listener threw exception", e, message); - } - return e; - } } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ActiveObjectCounter.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ActiveObjectCounter.java index 028fd90f..10689dd9 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ActiveObjectCounter.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ActiveObjectCounter.java @@ -53,7 +53,7 @@ public class ActiveObjectCounter { Collection objects = new HashSet(this.locks.keySet()); for (T object : objects) { CountDownLatch lock = this.locks.get(object); - if (lock==null) { + if (lock == null) { continue; } t0 = System.currentTimeMillis(); diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumer.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumer.java index 1c1fe092..18f80fe1 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumer.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumer.java @@ -404,7 +404,7 @@ public class BlockingQueueConsumer { private void checkMissingQueues() { long now = System.currentTimeMillis(); if (now - this.retryDeclarationInterval > this.lastRetryDeclaration) { - synchronized(this.missingQueues) { + synchronized (this.missingQueues) { Iterator iterator = this.missingQueues.iterator(); while (iterator.hasNext()) { boolean available = true; @@ -604,7 +604,108 @@ public class BlockingQueueConsumer { this.consumer = null; } - private class InternalConsumer extends DefaultConsumer { + /** + * Perform a rollback, handling rollback exceptions properly. + * @param ex the thrown application exception or error + * @throws Exception in case of a rollback error + */ + public void rollbackOnExceptionIfNecessary(Throwable ex) throws Exception { + + boolean ackRequired = !this.acknowledgeMode.isAutoAck() && !this.acknowledgeMode.isManual(); + try { + if (this.transactional) { + if (logger.isDebugEnabled()) { + logger.debug("Initiating transaction rollback on application exception: " + ex); + } + RabbitUtils.rollbackIfNecessary(this.channel); + } + if (ackRequired) { + // We should always requeue if the container was stopping + boolean shouldRequeue = this.defaultRequeuRejected || + ex instanceof MessageRejectedWhileStoppingException; + Throwable t = ex; + while (shouldRequeue && t != null) { + if (t instanceof AmqpRejectAndDontRequeueException) { + shouldRequeue = false; + } + t = t.getCause(); + } + if (logger.isDebugEnabled()) { + logger.debug("Rejecting messages (requeue=" + shouldRequeue + ")"); + } + for (Long deliveryTag : this.deliveryTags) { + // With newer RabbitMQ brokers could use basicNack here... + this.channel.basicReject(deliveryTag, shouldRequeue); + } + if (this.transactional) { + // Need to commit the reject (=nack) + RabbitUtils.commitIfNecessary(this.channel); + } + } + } + catch (Exception e) { + logger.error("Application exception overridden by rollback exception", ex); + throw e; + } + finally { + this.deliveryTags.clear(); + } + } + + /** + * Perform a commit or message acknowledgement, as appropriate. + * @param locallyTransacted Whether the channel is locally transacted. + * @throws IOException Any IOException. + * @return true if at least one delivery tag exists. + */ + public boolean commitIfNecessary(boolean locallyTransacted) throws IOException { + + if (this.deliveryTags.isEmpty()) { + return false; + } + + try { + + boolean ackRequired = !this.acknowledgeMode.isAutoAck() && !this.acknowledgeMode.isManual(); + + if (ackRequired) { + + if (this.transactional && !locallyTransacted) { + + // Not locally transacted but it is transacted so it + // could be synchronized with an external transaction + for (Long deliveryTag : this.deliveryTags) { + ConnectionFactoryUtils.registerDeliveryTag(this.connectionFactory, this.channel, deliveryTag); + } + + } + else { + long deliveryTag = new ArrayList(this.deliveryTags).get(this.deliveryTags.size() - 1); + this.channel.basicAck(deliveryTag, true); + } + } + + if (locallyTransacted) { + // For manual acks we still need to commit + RabbitUtils.commitIfNecessary(this.channel); + } + + } + finally { + this.deliveryTags.clear(); + } + + return true; + + } + + @Override + public String toString() { + return "Consumer: tags=[" + (this.consumerTags.toString()) + "], channel=" + this.channel + + ", acknowledgeMode=" + this.acknowledgeMode + " local queue size=" + this.queue.size(); + } + + private final class InternalConsumer extends DefaultConsumer { private InternalConsumer(Channel channel) { super(channel); @@ -648,7 +749,7 @@ public class BlockingQueueConsumer { if (logger.isDebugEnabled()) { logger.debug("Received cancellation notice for tag " + consumerTag + "; " + BlockingQueueConsumer.this); } - synchronized(BlockingQueueConsumer.this.consumerTags) { + synchronized (BlockingQueueConsumer.this.consumerTags) { BlockingQueueConsumer.this.consumerTags.remove(consumerTag); } } @@ -682,7 +783,7 @@ public class BlockingQueueConsumer { private final byte[] body; - Delivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) {//NOSONAR + Delivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) { //NOSONAR this.consumerTag = consumerTag; this.envelope = envelope; this.properties = properties; @@ -707,7 +808,7 @@ public class BlockingQueueConsumer { } @SuppressWarnings("serial") - private static class DeclarationException extends AmqpException { + private static final class DeclarationException extends AmqpException { private DeclarationException() { super("Failed to declare queue(s):"); @@ -734,102 +835,4 @@ public class BlockingQueueConsumer { } - @Override - public String toString() { - return "Consumer: tags=[" + (this.consumerTags.toString()) + "], channel=" + this.channel - + ", acknowledgeMode=" + this.acknowledgeMode + " local queue size=" + this.queue.size(); - } - - /** - * Perform a rollback, handling rollback exceptions properly. - * @param ex the thrown application exception or error - * @throws Exception in case of a rollback error - */ - public void rollbackOnExceptionIfNecessary(Throwable ex) throws Exception { - - boolean ackRequired = !this.acknowledgeMode.isAutoAck() && !this.acknowledgeMode.isManual(); - try { - if (this.transactional) { - if (logger.isDebugEnabled()) { - logger.debug("Initiating transaction rollback on application exception: " + ex); - } - RabbitUtils.rollbackIfNecessary(this.channel); - } - if (ackRequired) { - // We should always requeue if the container was stopping - boolean shouldRequeue = this.defaultRequeuRejected || - ex instanceof MessageRejectedWhileStoppingException; - Throwable t = ex; - while (shouldRequeue && t != null) { - if (t instanceof AmqpRejectAndDontRequeueException) { - shouldRequeue = false; - } - t = t.getCause(); - } - if (logger.isDebugEnabled()) { - logger.debug("Rejecting messages (requeue=" + shouldRequeue + ")"); - } - for (Long deliveryTag : this.deliveryTags) { - // With newer RabbitMQ brokers could use basicNack here... - this.channel.basicReject(deliveryTag, shouldRequeue); - } - if (this.transactional) { - // Need to commit the reject (=nack) - RabbitUtils.commitIfNecessary(this.channel); - } - } - } catch (Exception e) { - logger.error("Application exception overridden by rollback exception", ex); - throw e; - } finally { - this.deliveryTags.clear(); - } - } - - /** - * Perform a commit or message acknowledgement, as appropriate. - * @param locallyTransacted Whether the channel is locally transacted. - * @throws IOException Any IOException. - * @return true if at least one delivery tag exists. - */ - public boolean commitIfNecessary(boolean locallyTransacted) throws IOException { - - if (this.deliveryTags.isEmpty()) { - return false; - } - - try { - - boolean ackRequired = !this.acknowledgeMode.isAutoAck() && !this.acknowledgeMode.isManual(); - - if (ackRequired) { - - if (this.transactional && !locallyTransacted) { - - // Not locally transacted but it is transacted so it - // could be synchronized with an external transaction - for (Long deliveryTag : this.deliveryTags) { - ConnectionFactoryUtils.registerDeliveryTag(this.connectionFactory, this.channel, deliveryTag); - } - - } else { - long deliveryTag = new ArrayList(this.deliveryTags).get(this.deliveryTags.size() - 1); - this.channel.basicAck(deliveryTag, true); - } - } - - if (locallyTransacted) { - // For manual acks we still need to commit - RabbitUtils.commitIfNecessary(this.channel); - } - - } - finally { - this.deliveryTags.clear(); - } - - return true; - - } - } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistrar.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistrar.java index 1a8ee989..b1417c30 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistrar.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistrar.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. @@ -194,7 +194,7 @@ public class RabbitListenerEndpointRegistrar implements BeanFactoryAware, Initia } - private static class AmqpListenerEndpointDescriptor { + private static final class AmqpListenerEndpointDescriptor { private final RabbitListenerEndpoint endpoint; diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistry.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistry.java index 1c63fa63..f4020349 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistry.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistry.java @@ -282,7 +282,7 @@ public class RabbitListenerEndpointRegistry implements DisposableBean, SmartLife } - private static class AggregatingCallback implements Runnable { + private static final class AggregatingCallback implements Runnable { private final AtomicInteger count; diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainer.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainer.java index 590cdd91..e75c1378 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainer.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainer.java @@ -183,10 +183,6 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta private volatile ApplicationEventPublisher applicationEventPublisher; - public interface ContainerDelegate { - void invokeListener(Channel channel, Message message) throws Exception; - } - private final ContainerDelegate delegate = new ContainerDelegate() { @Override public void invokeListener(Channel channel, Message message) throws Exception { @@ -276,7 +272,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta Assert.isTrue(concurrentConsumers <= this.maxConcurrentConsumers, "'concurrentConsumers' cannot be more than 'maxConcurrentConsumers'"); } - synchronized(this.consumersMonitor) { + synchronized (this.consumersMonitor) { if (logger.isDebugEnabled()) { logger.debug("Changing consumers from " + this.concurrentConsumers + " to " + concurrentConsumers); } @@ -478,7 +474,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta } public void setConsumerArguments(Map args) { - synchronized(this.consumersMonitor) { + synchronized (this.consumersMonitor) { this.consumerArgs.clear(); this.consumerArgs.putAll(args); } @@ -881,7 +877,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta private boolean isActive(BlockingQueueConsumer consumer) { Boolean consumerActive; - synchronized(this.consumersMonitor) { + synchronized (this.consumersMonitor) { if (this.consumers != null) { Boolean active = this.consumers.get(consumer); consumerActive = active != null && active; @@ -937,7 +933,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta catch (AmqpConnectException e) { logger.info("Broker not available; cannot check queue declarations"); } - catch (AmqpIOException e){ + catch (AmqpIOException e) { if (RabbitUtils.isMismatchedQueueArgs(e)) { throw new FatalListenerStartupException("Mismatched queues", e); } @@ -981,7 +977,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta } private void considerAddingAConsumer() { - synchronized(this.consumersMonitor) { + synchronized (this.consumersMonitor) { if (this.consumers != null && this.maxConcurrentConsumers != null && this.consumers.size() < this.maxConcurrentConsumers) { long now = System.currentTimeMillis(); @@ -1148,7 +1144,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta catch (RuntimeException e) { throw e; } - catch (Throwable e) {//NOSONAR + catch (Throwable e) { //NOSONAR // ok to catch Throwable here because we re-throw it below throw new WrappedTransactionException(e); } @@ -1181,7 +1177,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta catch (ImmediateAcknowledgeAmqpException e) { break; } - catch (Throwable ex) {//NOSONAR + catch (Throwable ex) { //NOSONAR consumer.rollbackOnExceptionIfNecessary(ex); throw ex; } @@ -1196,6 +1192,44 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta return this.adviceChain; } + @Override + protected void invokeListener(Channel channel, Message message) throws Exception { + this.proxy.invokeListener(channel, message); + } + + /** + * Wait for a period determined by the {@link #setRecoveryInterval(long) recoveryInterval} + * or {@link #setRecoveryBackOff(BackOff)} to give the container a + * chance to recover from consumer startup failure, e.g. if the broker is down. + * @param backOffExecution the BackOffExecution to get the {@code recoveryInterval} + * @throws Exception if the shared connection still can't be established + */ + protected void handleStartupFailure(BackOffExecution backOffExecution) throws Exception { + long recoveryInterval = backOffExecution.nextBackOff(); + if (BackOffExecution.STOP == recoveryInterval) { + synchronized (this) { + if (isActive()) { + logger.warn("stopping container - restart recovery attempts exhausted"); + stop(); + } + } + return; + } + try { + if (logger.isDebugEnabled() && isActive()) { + logger.debug("Recovering consumer in " + recoveryInterval + " ms."); + } + long timeout = System.currentTimeMillis() + recoveryInterval; + while (isActive() && System.currentTimeMillis() < timeout) { + Thread.sleep(200); + } + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IllegalStateException("Unrecoverable interruption on consumer restart"); + } + } + @Override public String toString() { return "SimpleMessageListenerContainer " @@ -1205,7 +1239,13 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta + ", queueNames=" + Arrays.toString(getQueueNames()) + "]"; } - private class AsyncMessageProcessingConsumer implements Runnable { + public interface ContainerDelegate { + + void invokeListener(Channel channel, Message message) throws Exception; + + } + + private final class AsyncMessageProcessingConsumer implements Runnable { private final BlockingQueueConsumer consumer; @@ -1228,7 +1268,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta * @throws InterruptedException if the consumer startup is interrupted */ private FatalListenerStartupException getStartupException() throws TimeoutException, InterruptedException { - this.start.await(60000L, TimeUnit.MILLISECONDS);//NOSONAR - ignore return value + this.start.await(60000L, TimeUnit.MILLISECONDS); //NOSONAR - ignore return value return this.startupException; } @@ -1263,7 +1303,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta catch (FatalListenerStartupException ex) { throw ex; } - catch (Throwable t) {//NOSONAR + catch (Throwable t) { //NOSONAR this.start.countDown(); handleStartupFailure(this.consumer.getBackOffExecution()); throw t; @@ -1380,12 +1420,12 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta this.logConsumerException(e); } } - catch (Error e) {//NOSONAR + catch (Error e) { //NOSONAR // ok to catch Error - we're aborting so will stop logger.error("Consumer thread error, thread abort.", e); aborted = true; } - catch (Throwable t) {//NOSONAR + catch (Throwable t) { //NOSONAR // by now, it must be an exception if (isActive()) { this.logConsumerException(t); @@ -1458,46 +1498,8 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta } - @Override - protected void invokeListener(Channel channel, Message message) throws Exception { - this.proxy.invokeListener(channel, message); - } - - /** - * Wait for a period determined by the {@link #setRecoveryInterval(long) recoveryInterval} - * or {@link #setRecoveryBackOff(BackOff)} to give the container a - * chance to recover from consumer startup failure, e.g. if the broker is down. - * @param backOffExecution the BackOffExecution to get the {@code recoveryInterval} - * @throws Exception if the shared connection still can't be established - */ - protected void handleStartupFailure(BackOffExecution backOffExecution) throws Exception { - long recoveryInterval = backOffExecution.nextBackOff(); - if (BackOffExecution.STOP == recoveryInterval) { - synchronized (this) { - if (isActive()) { - logger.warn("stopping container - restart recovery attempts exhausted"); - stop(); - } - } - return; - } - try { - if (logger.isDebugEnabled() && isActive()) { - logger.debug("Recovering consumer in " + recoveryInterval + " ms."); - } - long timeout = System.currentTimeMillis() + recoveryInterval; - while (isActive() && System.currentTimeMillis() < timeout) { - Thread.sleep(200); - } - } - catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new IllegalStateException("Unrecoverable interruption on consumer restart"); - } - } - @SuppressWarnings("serial") - private static class WrappedTransactionException extends RuntimeException { + private static final class WrappedTransactionException extends RuntimeException { private WrappedTransactionException(Throwable cause) { super(cause); diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/DelegatingInvocableHandler.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/DelegatingInvocableHandler.java index 473c5f88..c48075db 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/DelegatingInvocableHandler.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/DelegatingInvocableHandler.java @@ -126,7 +126,7 @@ public class DelegatingInvocableHandler { if (handler == null) { throw new AmqpException("No method found for " + payloadClass); } - this.cachedHandlers.putIfAbsent(payloadClass, handler);//NOSONAR + this.cachedHandlers.putIfAbsent(payloadClass, handler); //NOSONAR setupReplyTo(handler); } return handler; @@ -222,7 +222,7 @@ public class DelegatingInvocableHandler { */ public String getMethodNameFor(Object payload) { InvocableHandlerMethod handlerForPayload = getHandlerForPayload(payload.getClass()); - return handlerForPayload == null ? "no match" : handlerForPayload.getMethod().toGenericString();//NOSONAR + return handlerForPayload == null ? "no match" : handlerForPayload.getMethod().toGenericString(); //NOSONAR } } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapter.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapter.java index 0cc8717e..3936ea87 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapter.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapter.java @@ -182,7 +182,7 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis * If the inbound message has no type information and the configured message converter * supports it, we attempt to infer the conversion type from the method signature. */ - private class MessagingMessageConverterAdapter extends MessagingMessageConverter { + private final class MessagingMessageConverterAdapter extends MessagingMessageConverter { private final Object bean; @@ -223,11 +223,11 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis for (int i = 0; i < this.method.getParameterTypes().length; i++) { MethodParameter methodParameter = new MethodParameter(this.method, i); - /* - * We're looking for a single non-annotated parameter, or one annotated with @Payload. - * We ignore parameters with type Message because they are not involved with conversion. - */ - if (eligibleParameter(methodParameter) + /* + * We're looking for a single non-annotated parameter, or one annotated with @Payload. + * We ignore parameters with type Message because they are not involved with conversion. + */ + if (isEligibleParameter(methodParameter) && (methodParameter.getParameterAnnotations().length == 0 || methodParameter.hasParameterAnnotation(Payload.class))) { if (genericParameterType == null) { @@ -258,7 +258,7 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis * Don't consider parameter types that are available after conversion. * Message, Message and Channel. */ - private boolean eligibleParameter(MethodParameter methodParameter) { + private boolean isEligibleParameter(MethodParameter methodParameter) { Type parameterType = methodParameter.getGenericParameterType(); if (parameterType.equals(Channel.class) || parameterType.equals(org.springframework.amqp.core.Message.class)) { @@ -267,12 +267,7 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis if (parameterType instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) parameterType; if (parameterizedType.getRawType().equals(Message.class)) { - if(parameterizedType.getActualTypeArguments()[0] instanceof WildcardType) { - return false; - } - else { - return true; - } + return !(parameterizedType.getActualTypeArguments()[0] instanceof WildcardType); } } return !parameterType.equals(Message.class); // could be Message without a generic type diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j/AmqpAppender.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j/AmqpAppender.java index 60ee9de9..4d127704 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j/AmqpAppender.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j/AmqpAppender.java @@ -528,7 +528,7 @@ public class AmqpAppender extends AppenderSkeleton { @SuppressWarnings("rawtypes") Map props = event.getProperties(); @SuppressWarnings("unchecked") - Set> entrySet = props.entrySet(); + Set> entrySet = props.entrySet(); for (Entry entry : entrySet) { amqpProps.setHeader(entry.getKey().toString(), entry.getValue()); } @@ -560,10 +560,10 @@ public class AmqpAppender extends AppenderSkeleton { try { message = new Message(msgBody.toString().getBytes(AmqpAppender.this.charset), amqpProps); } - catch (UnsupportedEncodingException e) {/* fall back to default */} + catch (UnsupportedEncodingException e) { /* fall back to default */ } } if (message == null) { - message = new Message(msgBody.toString().getBytes(), amqpProps);//NOSONAR (default charset) + message = new Message(msgBody.toString().getBytes(), amqpProps); //NOSONAR (default charset) } message = postProcessMessageBeforeSend(message, event); rabbitTemplate.send(AmqpAppender.this.exchangeName, routingKey, message); diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j2/AmqpAppender.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j2/AmqpAppender.java index 0db4bc6d..6e8e46fc 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j2/AmqpAppender.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j2/AmqpAppender.java @@ -240,7 +240,7 @@ public class AmqpAppender extends AbstractAppender { @SuppressWarnings("rawtypes") Map props = event.getProperties(); @SuppressWarnings("unchecked") - Set> entrySet = props.entrySet(); + Set> entrySet = props.entrySet(); for (Entry entry : entrySet) { amqpProps.setHeader(entry.getKey().toString(), entry.getValue()); } @@ -268,10 +268,10 @@ public class AmqpAppender extends AbstractAppender { message = new Message(msgBody.toString().getBytes(AmqpAppender.this.manager.charset), amqpProps); } - catch (UnsupportedEncodingException e) {/* fall back to default */} + catch (UnsupportedEncodingException e) { /* fall back to default */ } } if (message == null) { - message = new Message(msgBody.toString().getBytes(), amqpProps);//NOSONAR (default charset) + message = new Message(msgBody.toString().getBytes(), amqpProps); //NOSONAR (default charset) } message = postProcessMessageBeforeSend(message, event); rabbitTemplate.send(AmqpAppender.this.manager.exchangeName, routingKey, message); diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/logback/AmqpAppender.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/logback/AmqpAppender.java index ac959c43..707f291b 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/logback/AmqpAppender.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/logback/AmqpAppender.java @@ -528,7 +528,7 @@ public class AmqpAppender extends AppenderBase { message = new Message(msgBody.getBytes(AmqpAppender.this.charset), amqpProps); } catch (UnsupportedEncodingException e) { - message = new Message(msgBody.getBytes(), amqpProps);//NOSONAR (default charset) + message = new Message(msgBody.getBytes(), amqpProps); //NOSONAR (default charset) } } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/DefaultMessagePropertiesConverter.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/DefaultMessagePropertiesConverter.java index 16795c43..45675f91 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/DefaultMessagePropertiesConverter.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/DefaultMessagePropertiesConverter.java @@ -204,7 +204,7 @@ public class DefaultMessagePropertiesConverter implements MessagePropertiesConve private Map convertHeadersIfNecessary(Map headers) { if (CollectionUtils.isEmpty(headers)) { - return Collections. emptyMap(); + return Collections.emptyMap(); } Map writableHeaders = new HashMap(); for (Map.Entry entry : headers.entrySet()) { diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/MessagePropertiesConverter.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/MessagePropertiesConverter.java index 72fa6540..519c51a3 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/MessagePropertiesConverter.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/MessagePropertiesConverter.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. @@ -18,8 +18,8 @@ package org.springframework.amqp.rabbit.support; import org.springframework.amqp.core.MessageProperties; -import com.rabbitmq.client.Envelope; import com.rabbitmq.client.AMQP.BasicProperties; +import com.rabbitmq.client.Envelope; /** * Strategy interface for converting between Spring AMQP {@link MessageProperties} diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/PublisherCallbackChannelImpl.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/PublisherCallbackChannelImpl.java index 7fa3514b..c1f133cb 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/PublisherCallbackChannelImpl.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/PublisherCallbackChannelImpl.java @@ -101,7 +101,7 @@ public class PublisherCallbackChannelImpl private final ConcurrentMap listeners = new ConcurrentHashMap(); private final Map> pendingConfirms - = new ConcurrentHashMap>(); + = new ConcurrentHashMap>(); private final SortedMap listenerForSeq = new ConcurrentSkipListMap(); @@ -111,7 +111,7 @@ public class PublisherCallbackChannelImpl if (!conditionalMethodsChecked) { // The following reflection is required to maintain compatibility with pre 3.6.x clients. - ReflectionUtils.doWithMethods(delegate.getClass(), new MethodCallback(){ + ReflectionUtils.doWithMethods(delegate.getClass(), new MethodCallback() { @Override public void doWith(java.lang.reflect.Method method) @@ -812,8 +812,7 @@ public class PublisherCallbackChannelImpl String exchange, String routingKey, AMQP.BasicProperties properties, - byte[] body) throws IOException - { + byte[] body) throws IOException { String uuidObject = properties.getHeaders().get(RETURN_CORRELATION_KEY).toString(); Listener listener = this.listeners.get(uuidObject); if (listener == null || !listener.isReturnListener()) { diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/RabbitExceptionTranslator.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/RabbitExceptionTranslator.java index f26c9f39..094a4896 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/RabbitExceptionTranslator.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/support/RabbitExceptionTranslator.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. @@ -44,7 +44,11 @@ import com.rabbitmq.client.ShutdownSignalException; * @since 1.2 * */ -public class RabbitExceptionTranslator { +public final class RabbitExceptionTranslator { + + private RabbitExceptionTranslator() { + super(); + } public static RuntimeException convertRabbitAccessException(Throwable ex) { Assert.notNull(ex, "Exception must not be null"); diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManager.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManager.java index 3828656b..b0bbe870 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManager.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManager.java @@ -156,7 +156,8 @@ public class RabbitTransactionManager extends AbstractPlatformTransactionManager txObject.getResourceHolder().setTimeoutInSeconds(timeout); } TransactionSynchronizationManager.bindResource(getConnectionFactory(), txObject.getResourceHolder()); - } catch (AmqpException ex) { + } + catch (AmqpException ex) { if (resourceHolder != null) { ConnectionFactoryUtils.releaseResources(resourceHolder); } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/AsyncRabbitTemplateTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/AsyncRabbitTemplateTests.java index 0561374d..67648dd6 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/AsyncRabbitTemplateTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/AsyncRabbitTemplateTests.java @@ -43,7 +43,6 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessagePostProcessor; import org.springframework.amqp.core.MessageProperties; import org.springframework.amqp.core.Queue; -import org.springframework.amqp.rabbit.AsyncRabbitTemplate; import org.springframework.amqp.rabbit.AsyncRabbitTemplate.RabbitConverterFuture; import org.springframework.amqp.rabbit.AsyncRabbitTemplate.RabbitMessageFuture; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/AbstractRabbitAnnotationDrivenTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/AbstractRabbitAnnotationDrivenTests.java index 576b6300..82833346 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/AbstractRabbitAnnotationDrivenTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/AbstractRabbitAnnotationDrivenTests.java @@ -97,18 +97,6 @@ public abstract class AbstractRabbitAnnotationDrivenTests { assertEquals(1, simpleFactory.getListenerContainers().size()); } - @Component - static class SampleBean { - - @RabbitListener(queues = "myQueue") - public void defaultHandle(String msg) { - } - - @RabbitListener(containerFactory = "simpleFactory", queues = "myQueue") - public void simpleHandle(String msg) { - } - } - /** * Test for {@link FullBean} discovery. In this case, no default is set because * all endpoints provide a default registry. This shows that the default factory @@ -145,27 +133,6 @@ public abstract class AbstractRabbitAnnotationDrivenTests { } } - @Component - static class FullBean { - - @RabbitListener(id = "listener1", containerFactory = "simpleFactory", queues = {"queue1", "queue2"}, - exclusive = true, priority = "34", admin = "rabbitAdmin") - public void fullHandle(String msg) { - - } - } - - @Component - static class FullConfigurableBean { - - @RabbitListener(id = "${rabbit.listener.id}", containerFactory = "${rabbit.listener.containerFactory}", - queues = {"${rabbit.listener.queue}", "queue2"}, exclusive = true, - priority = "${rabbit.listener.priority}", admin = "${rabbit.listener.admin}") - public void fullHandle(String msg) { - - } - } - /** * Test for {@link CustomBean} and an manually endpoint registered * with "myCustomEndpointId". The custom endpoint does not provide @@ -195,14 +162,6 @@ public abstract class AbstractRabbitAnnotationDrivenTests { customRegistry.getListenerContainer("myCustomEndpointId")); } - @Component - static class CustomBean { - - @RabbitListener(id = "listenerId", containerFactory = "customFactory", queues = "myQueue") - public void customHandle(String msg) { - } - } - /** * Test for {@link DefaultBean} that does not define the container * factory to use as a default is registered with an explicit @@ -224,13 +183,6 @@ public abstract class AbstractRabbitAnnotationDrivenTests { assertEquals(1, defaultFactory.getListenerContainers().size()); } - static class DefaultBean { - - @RabbitListener(queues = "myQueue") - public void handleIt(String msg) { - } - } - /** * Test for {@link ValidationBean} with a validator ({@link TestValidator}) specified * in a custom {@link org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory}. @@ -255,14 +207,6 @@ public abstract class AbstractRabbitAnnotationDrivenTests { listener.onMessage(amqpMessage, mock(Channel.class)); } - @Component - static class ValidationBean { - - @RabbitListener(containerFactory = "defaultFactory", queues = "myQueue") - public void defaultHandle(@Validated String msg) { - } - } - /** * Test for {@link RabbitListenersBean} that validates that the * {@code @RabbitListener} annotations generate one specific container per annotation. @@ -293,6 +237,70 @@ public abstract class AbstractRabbitAnnotationDrivenTests { assertEquals("class2", fourth.getQueueNames().iterator().next()); } + private void assertQueues(AbstractRabbitListenerEndpoint actual, String... expectedQueues) { + Collection actualQueues = actual.getQueueNames(); + for (String expectedQueue : expectedQueues) { + assertTrue("Queue '" + expectedQueue + "' not found", actualQueues.contains(expectedQueue)); + } + assertEquals("Wrong number of queues", expectedQueues.length, actualQueues.size()); + } + + @Component + static class SampleBean { + + @RabbitListener(queues = "myQueue") + public void defaultHandle(String msg) { + } + + @RabbitListener(containerFactory = "simpleFactory", queues = "myQueue") + public void simpleHandle(String msg) { + } + } + + @Component + static class FullBean { + + @RabbitListener(id = "listener1", containerFactory = "simpleFactory", queues = {"queue1", "queue2"}, + exclusive = true, priority = "34", admin = "rabbitAdmin") + public void fullHandle(String msg) { + + } + } + + @Component + static class FullConfigurableBean { + + @RabbitListener(id = "${rabbit.listener.id}", containerFactory = "${rabbit.listener.containerFactory}", + queues = {"${rabbit.listener.queue}", "queue2"}, exclusive = true, + priority = "${rabbit.listener.priority}", admin = "${rabbit.listener.admin}") + public void fullHandle(String msg) { + + } + } + + @Component + static class CustomBean { + + @RabbitListener(id = "listenerId", containerFactory = "customFactory", queues = "myQueue") + public void customHandle(String msg) { + } + } + + static class DefaultBean { + + @RabbitListener(queues = "myQueue") + public void handleIt(String msg) { + } + } + + @Component + static class ValidationBean { + + @RabbitListener(containerFactory = "defaultFactory", queues = "myQueue") + public void defaultHandle(@Validated String msg) { + } + } + @Component static class RabbitListenersBean { @@ -318,14 +326,6 @@ public abstract class AbstractRabbitAnnotationDrivenTests { } - private void assertQueues(AbstractRabbitListenerEndpoint actual, String... expectedQueues) { - Collection actualQueues = actual.getQueueNames(); - for (String expectedQueue : expectedQueues) { - assertTrue("Queue '" + expectedQueue + "' not found", actualQueues.contains(expectedQueue)); - } - assertEquals("Wrong number of queues", expectedQueues.length, actualQueues.size()); - } - static class TestValidator implements Validator { @Override diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitCglibProxyTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitCglibProxyTests.java index 4cdc5fbe..88f5bcf8 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitCglibProxyTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitCglibProxyTests.java @@ -121,7 +121,7 @@ public class EnableRabbitCglibProxyTests { @Override @Transactional @RabbitListener(bindings = @QueueBinding( - value = @Queue(), + value = @Queue, exchange = @Exchange(value = "auto.exch.test", autoDelete = "true"), key = "auto.rk.test") ) diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIdleContainerTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIdleContainerTests.java index b6ce5fe4..95af8787 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIdleContainerTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIdleContainerTests.java @@ -141,7 +141,7 @@ public class EnableRabbitIdleContainerTests { private boolean barEventReceived; - @RabbitListener(id="foo", queues="#{queue.name}") + @RabbitListener(id = "foo", queues = "#{queue.name}") public String listenFoo(String foo) { logger.info("foo: " + foo); return foo.toUpperCase(); @@ -157,7 +157,7 @@ public class EnableRabbitIdleContainerTests { this.latch.countDown(); } - @RabbitListener(id="bar", queues="#{queue.name}") + @RabbitListener(id = "bar", queues = "#{queue.name}") public String listenBar(String bar) { logger.info("bar: " + bar); return bar.toUpperCase(); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java index 98b3dc42..ccf60fb7 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java @@ -175,25 +175,6 @@ public class EnableRabbitIntegrationTests { @Autowired private RabbitListenerEndpointRegistry registry; - /** - * Defer queue deletion until after the context has been stopped by the - * {@link DirtiesContext}. - * - */ - public static class DeleteQueuesExecutionListener extends AbstractTestExecutionListener { - - @Override - public void afterTestClass(TestContext testContext) throws Exception { - brokerRunning.removeTestQueues(); - } - - @Override - public int getOrder() { - return Ordered.HIGHEST_PRECEDENCE; - } - - } - @Test public void autoDeclare() { assertEquals("FOO", rabbitTemplate.convertSendAndReceive("auto.exch", "auto.rk", "foo")); @@ -335,27 +316,21 @@ public class EnableRabbitIntegrationTests { } @Test + @DirtiesContext public void simpleEndpointWithSendTo() throws InterruptedException { rabbitTemplate.convertAndSend("test.sendTo", "bar"); - int n = 0; - Object result = null; - while ((result = rabbitTemplate.receiveAndConvert("test.sendTo.reply")) == null && n++ < 100) { - Thread.sleep(100); - } - assertTrue(n < 100); + rabbitTemplate.setReceiveTimeout(10000); + Object result = rabbitTemplate.receiveAndConvert("test.sendTo.reply"); assertNotNull(result); assertEquals("BAR", result); } @Test + @DirtiesContext public void simpleEndpointWithSendToSpel() throws InterruptedException { rabbitTemplate.convertAndSend("test.sendTo.spel", "bar"); - int n = 0; - Object result = null; - while ((result = rabbitTemplate.receiveAndConvert("test.sendTo.reply.spel")) == null && n++ < 100) { - Thread.sleep(100); - } - assertTrue(n < 100); + rabbitTemplate.setReceiveTimeout(10000); + Object result = rabbitTemplate.receiveAndConvert("test.sendTo.reply.spel"); assertNotNull(result); assertEquals("BARbar", result); } @@ -513,7 +488,7 @@ public class EnableRabbitIntegrationTests { @Override @RabbitListener(bindings = @QueueBinding( - value = @Queue(), + value = @Queue, exchange = @Exchange(value = "auto.exch.tx", autoDelete = "true"), key = "auto.rk.tx") ) @@ -569,7 +544,7 @@ public class EnableRabbitIntegrationTests { @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "auto.declare.fanout", autoDelete = "true"), - exchange = @Exchange(value = "auto.exch.fanout", autoDelete = "true", type="fanout")) + exchange = @Exchange(value = "auto.exch.fanout", autoDelete = "true", type = "fanout")) ) public String handleWithFanout(String foo) { return foo.toUpperCase() + foo.toUpperCase(); @@ -577,7 +552,7 @@ public class EnableRabbitIntegrationTests { @RabbitListener(bindings = { @QueueBinding( - value = @Queue(), + value = @Queue, exchange = @Exchange(value = "auto.exch", autoDelete = "true"), key = "auto.anon.rk")} ) @@ -586,7 +561,7 @@ public class EnableRabbitIntegrationTests { } @RabbitListener(bindings = @QueueBinding( - value = @Queue(autoDelete = "true", exclusive="true", durable="true"), + value = @Queue(autoDelete = "true", exclusive = "true", durable = "true"), exchange = @Exchange(value = "auto.exch", autoDelete = "true"), key = "auto.anon.atts.rk") ) @@ -657,15 +632,15 @@ public class EnableRabbitIntegrationTests { private final CountDownLatch latch = new CountDownLatch(1); - @RabbitListener(queues = "differentTypes", containerFactory="jsonListenerContainerFactory") + @RabbitListener(queues = "differentTypes", containerFactory = "jsonListenerContainerFactory") public void handleDifferent(Foo2 foo) { foos.add(foo); latch.countDown(); } - @RabbitListener(id="notStarted", containerFactory = "rabbitAutoStartFalseListenerContainerFactory", + @RabbitListener(id = "notStarted", containerFactory = "rabbitAutoStartFalseListenerContainerFactory", bindings = @QueueBinding( - value = @Queue(autoDelete = "true", exclusive="true", durable="true"), + value = @Queue(autoDelete = "true", exclusive = "true", durable = "true"), exchange = @Exchange(value = "auto.start", autoDelete = "true"), key = "auto.start") ) @@ -710,11 +685,11 @@ public class EnableRabbitIntegrationTests { public static class ProxiedListener { - @RabbitListener(queues="test.intercepted") + @RabbitListener(queues = "test.intercepted") public void listen(String foo) { } - @RabbitListener(queues="test.intercepted.withReply") + @RabbitListener(queues = "test.intercepted.withReply") public String listenAndReply(String foo) { return foo.toUpperCase(); } @@ -1181,68 +1156,68 @@ public class EnableRabbitIntegrationTests { public static class Foo2Service { - @RabbitListener(queues="test.converted") + @RabbitListener(queues = "test.converted") public Foo2 foo2(Foo2 foo2) { return foo2; } - @RabbitListener(queues="test.converted.list") + @RabbitListener(queues = "test.converted.list") public Foo2 foo2(List foo2s) { Foo2 foo2 = foo2s.get(0); foo2.setBar("BAZZZZ"); return foo2; } - @RabbitListener(queues="test.converted.array") + @RabbitListener(queues = "test.converted.array") public Foo2 foo2(Foo2[] foo2s) { Foo2 foo2 = foo2s[0]; foo2.setBar("BAZZxx"); return foo2; } - @RabbitListener(queues="test.converted.args1") + @RabbitListener(queues = "test.converted.args1") public String foo2(Foo2 foo2, @Header("amqp_consumerQueue") String queue) { return foo2 + queue; } - @RabbitListener(queues="test.converted.args2") + @RabbitListener(queues = "test.converted.args2") public String foo2a(@Payload Foo2 foo2, @Header("amqp_consumerQueue") String queue) { return foo2 + queue; } - @RabbitListener(queues="test.converted.message") + @RabbitListener(queues = "test.converted.message") public String foo2Message(@Payload Foo2 foo2, Message message) { return foo2.toString() + message.getMessageProperties().getTargetMethod().getName() + message.getMessageProperties().getTargetBean().getClass().getSimpleName(); } - @RabbitListener(queues="test.notconverted.message") + @RabbitListener(queues = "test.notconverted.message") public String justMessage(Message message) { return "foo" + message.getClass().getSimpleName(); } - @RabbitListener(queues="test.notconverted.channel") + @RabbitListener(queues = "test.notconverted.channel") public String justChannel(Channel channel) { return "barAndChannel"; } - @RabbitListener(queues="test.notconverted.messagechannel") + @RabbitListener(queues = "test.notconverted.messagechannel") public String messageChannel(Foo2 foo2, Message message, Channel channel) { return foo2 + message.getClass().getSimpleName() + "AndChannel"; } - @RabbitListener(queues="test.notconverted.messagingmessage") + @RabbitListener(queues = "test.notconverted.messagingmessage") public String messagingMessage(org.springframework.messaging.Message message) { return message.getClass().getSimpleName() + message.getPayload().getClass().getSimpleName(); } - @RabbitListener(queues="test.converted.foomessage") + @RabbitListener(queues = "test.converted.foomessage") public String messagingMessage(org.springframework.messaging.Message message, @Header(value = "", required = false) String h) { return message.getClass().getSimpleName() + message.getPayload().getClass().getSimpleName(); } - @RabbitListener(queues="test.notconverted.messagingmessagenotgeneric") + @RabbitListener(queues = "test.notconverted.messagingmessagenotgeneric") public String messagingMessage(@SuppressWarnings("rawtypes") org.springframework.messaging.Message message, @Header(value = "", required = false) Integer h) { return message.getClass().getSimpleName() + message.getPayload().getClass().getSimpleName(); @@ -1250,4 +1225,23 @@ public class EnableRabbitIntegrationTests { } + /** + * Defer queue deletion until after the context has been stopped by the + * {@link DirtiesContext}. + * + */ + public static class DeleteQueuesExecutionListener extends AbstractTestExecutionListener { + + @Override + public void afterTestClass(TestContext testContext) throws Exception { + brokerRunning.removeTestQueues(); + } + + @Override + public int getOrder() { + return Ordered.HIGHEST_PRECEDENCE; + } + + } + } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/AdminParserTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/AdminParserTests.java index 175d142e..83166897 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/AdminParserTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/AdminParserTests.java @@ -81,7 +81,8 @@ public final class AdminParserTests { RabbitAdmin admin; if (StringUtils.hasText(adminBeanName)) { admin = beanFactory.getBean(adminBeanName, RabbitAdmin.class); - } else { + } + else { admin = beanFactory.getBean(RabbitAdmin.class); } assertEquals(expectedAutoStartup, admin.isAutoStartup()); @@ -109,7 +110,8 @@ public final class AdminParserTests { if (!validContext) { fail("Context " + resource + " failed to load"); } - } catch (BeanDefinitionParsingException e) { + } + catch (BeanDefinitionParsingException e) { if (validContext) { // Context expected to be valid - throw an exception up throw e; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ListenerContainerParserTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ListenerContainerParserTests.java index 3ab0ce4e..f10aafe2 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ListenerContainerParserTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ListenerContainerParserTests.java @@ -77,7 +77,7 @@ public class ListenerContainerParserTests { assertEquals(beanFactory.getBean(TestBean.class), listenerAccessor.getPropertyValue("delegate")); assertEquals("handle", listenerAccessor.getPropertyValue("defaultListenerMethod")); Queue queue = beanFactory.getBean("bar", Queue.class); - assertEquals("[foo, "+queue.getName()+"]", Arrays.asList(container.getQueueNames()).toString()); + assertEquals("[foo, " + queue.getName() + "]", Arrays.asList(container.getQueueNames()).toString()); assertEquals(5, ReflectionTestUtils.getField(container, "concurrentConsumers")); assertEquals(6, ReflectionTestUtils.getField(container, "maxConcurrentConsumers")); assertEquals(1234L, ReflectionTestUtils.getField(container, "startConsumerMinInterval")); @@ -111,7 +111,7 @@ public class ListenerContainerParserTests { public void testParseWithQueues() throws Exception { SimpleMessageListenerContainer container = beanFactory.getBean("container2", SimpleMessageListenerContainer.class); Queue queue = beanFactory.getBean("bar", Queue.class); - assertEquals("[foo, "+queue.getName()+"]", Arrays.asList(container.getQueueNames()).toString()); + assertEquals("[foo, " + queue.getName() + "]", Arrays.asList(container.getQueueNames()).toString()); assertTrue(TestUtils.getPropertyValue(container, "missingQueuesFatal", Boolean.class)); assertFalse(TestUtils.getPropertyValue(container, "autoDeclare", Boolean.class)); } @@ -187,12 +187,12 @@ public class ListenerContainerParserTests { @Test public void testIncompatibleTxAtts() { try { - new ClassPathXmlApplicationContext(getClass().getSimpleName() + "-fail-context.xml", getClass()).close();; + new ClassPathXmlApplicationContext(getClass().getSimpleName() + "-fail-context.xml", getClass()).close(); fail("Parse exception exptected"); } catch (BeanDefinitionParsingException e) { assertTrue(e.getMessage().startsWith( - "Configuration problem: Listener Container - cannot set channel-transacted with acknowledge='NONE'")); + "Configuration problem: Listener Container - cannot set channel-transacted with acknowledge='NONE'")); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ListenerContainerPlaceholderParserTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ListenerContainerPlaceholderParserTests.java index cb156b2d..a754ba23 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ListenerContainerPlaceholderParserTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ListenerContainerPlaceholderParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 the original author or authors. + * Copyright 2010-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. @@ -55,7 +55,7 @@ public final class ListenerContainerPlaceholderParserTests { @After public void closeBeanFactory() throws Exception { - if (this.context!=null) { + if (this.context != null) { CachingConnectionFactory cf = this.context.getBean(CachingConnectionFactory.class); this.context.close(); assertTrue(TestUtils.getPropertyValue(cf, "deferredCloseExecutor", ThreadPoolExecutor.class) @@ -73,7 +73,7 @@ public final class ListenerContainerPlaceholderParserTests { assertEquals(this.context.getBean(TestBean.class), listenerAccessor.getPropertyValue("delegate")); assertEquals("handle", listenerAccessor.getPropertyValue("defaultListenerMethod")); Queue queue = this.context.getBean("bar", Queue.class); - assertEquals("[foo, "+queue.getName()+"]", Arrays.asList(container.getQueueNames()).toString()); + assertEquals("[foo, " + queue.getName() + "]", Arrays.asList(container.getQueueNames()).toString()); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/MismatchedQueueDeclarationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/MismatchedQueueDeclarationTests.java index 6e5bfaa6..d0693ebd 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/MismatchedQueueDeclarationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/MismatchedQueueDeclarationTests.java @@ -68,7 +68,8 @@ public class MismatchedQueueDeclarationTests { ((DisposableBean) connectionFactory).destroy(); } - @Test @Ignore + @Test + @Ignore public void testAdminFailsWithMismatchedQueue() throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(); context.setConfigLocation("org/springframework/amqp/rabbit/config/MismatchedQueueDeclarationTests-context.xml"); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueArgumentsParserTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueArgumentsParserTests.java index a6bd7a2c..bb55008b 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueArgumentsParserTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueArgumentsParserTests.java @@ -22,6 +22,7 @@ import java.util.Map; import org.junit.Test; import org.junit.runner.RunWith; + import org.springframework.amqp.core.Queue; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserPlaceholderTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserPlaceholderTests.java index 93cfd251..2fa5d042 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserPlaceholderTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserPlaceholderTests.java @@ -18,6 +18,7 @@ package org.springframework.amqp.rabbit.config; import org.junit.After; import org.junit.Before; + import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; import org.springframework.core.io.ClassPathResource; @@ -36,8 +37,8 @@ public class QueueParserPlaceholderTests extends QueueParserTests { @After public void closeBeanFactory() throws Exception { - if (beanFactory!=null) { - ((ConfigurableApplicationContext)beanFactory).close(); + if (beanFactory != null) { + ((ConfigurableApplicationContext) beanFactory).close(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserTests.java index d46b58eb..3b9f70cf 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserTests.java @@ -182,7 +182,7 @@ public class QueueParserTests { assertFalse(queue.shouldDeclare()); } - @Test(expected=BeanDefinitionStoreException.class) + @Test(expected = BeanDefinitionStoreException.class) public void testIllegalAnonymousQueue() throws Exception { DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RabbitListenerContainerFactoryIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RabbitListenerContainerFactoryIntegrationTests.java index 1aaebece..27f9b386 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RabbitListenerContainerFactoryIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RabbitListenerContainerFactoryIntegrationTests.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,13 +16,16 @@ package org.springframework.amqp.rabbit.config; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; + import java.lang.reflect.Method; import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import com.rabbitmq.client.Channel; - import org.junit.Before; import org.junit.Test; @@ -41,11 +44,11 @@ import org.springframework.messaging.handler.annotation.Payload; import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory; import org.springframework.util.ReflectionUtils; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import com.rabbitmq.client.Channel; /** * @author Stephane Nicoll + * @author Gary Russell */ public class RabbitListenerContainerFactoryIntegrationTests { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RabbitNamespaceHandlerTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RabbitNamespaceHandlerTests.java index 82da2e75..a287ecac 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RabbitNamespaceHandlerTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RabbitNamespaceHandlerTests.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. @@ -54,7 +54,7 @@ public final class RabbitNamespaceHandlerTests { public void setUp() throws Exception { beanFactory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory); - reader.loadBeanDefinitions(new ClassPathResource(getClass().getSimpleName()+"-context.xml", getClass())); + reader.loadBeanDefinitions(new ClassPathResource(getClass().getSimpleName() + "-context.xml", getClass())); } @Test diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilderSupportTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilderSupportTests.java index 9842d277..58605566 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilderSupportTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilderSupportTests.java @@ -143,7 +143,7 @@ public class RetryInterceptorBuilderSupportTests { public void testWitCustomRetryPolicyTraverseCause() { StatefulRetryOperationsInterceptor interceptor = RetryInterceptorBuilder.stateful() .retryPolicy(new SimpleRetryPolicy(15, Collections - ., Boolean> singletonMap(Exception.class, true), true)) + ., Boolean>singletonMap(Exception.class, true), true)) .build(); assertEquals(15, TestUtils.getPropertyValue(interceptor, "retryOperations.retryPolicy.maxAttempts")); } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerEndpointTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerEndpointTests.java index e9a51f33..617faec4 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerEndpointTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerEndpointTests.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. @@ -17,6 +17,9 @@ package org.springframework.amqp.rabbit.config; +import static org.junit.Assert.assertSame; +import static org.mockito.Mockito.mock; + import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -26,11 +29,9 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import static org.junit.Assert.*; -import static org.mockito.Mockito.mock; - /** * @author Stephane Nicoll + * @author Gary Russell */ public class SimpleRabbitListenerEndpointTests { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryIntegrationTests.java index 3fba7f53..9ef06c4e 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryIntegrationTests.java @@ -151,13 +151,13 @@ public class CachingConnectionFactoryIntegrationTests { channels.add(connections.get(0).createChannel(false)); fail("Exception expected"); } - catch (AmqpTimeoutException e) {} + catch (AmqpTimeoutException e) { } channels.add(connections.get(1).createChannel(false)); try { channels.add(connections.get(1).createChannel(false)); fail("Exception expected"); } - catch (AmqpTimeoutException e) {} + catch (AmqpTimeoutException e) { } channels.get(0).close(); channels.get(1).close(); channels.add(connections.get(0).createChannel(false)); @@ -346,7 +346,8 @@ public class CachingConnectionFactoryIntegrationTests { } }); fail("Expected AmqpIOException"); - } catch (AmqpIOException e) { + } + catch (AmqpIOException e) { // expected } template.convertAndSend(route, "message"); @@ -396,7 +397,7 @@ public class CachingConnectionFactoryIntegrationTests { socket.close(); proxy.close(); } - catch (Exception ee) {} + catch (Exception ee) { } } } } @@ -413,7 +414,7 @@ public class CachingConnectionFactoryIntegrationTests { socket.close(); proxy.close(); } - catch (Exception ee) {} + catch (Exception ee) { } } } socket.close(); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryTests.java index a7377223..d5b06a38 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryTests.java @@ -255,7 +255,7 @@ public class CachingConnectionFactoryTests extends AbstractConnectionFactoryTest con.createChannel(false); fail("Exception expected"); } - catch (AmqpTimeoutException e) {} + catch (AmqpTimeoutException e) { } // should be ignored, and added last into channel cache. channel1.close(); @@ -297,7 +297,7 @@ public class CachingConnectionFactoryTests extends AbstractConnectionFactoryTest ccf.createConnection(); fail("Exception expected"); } - catch (AmqpTimeoutException e) {} + catch (AmqpTimeoutException e) { } // should be ignored, and added to cache con1.close(); @@ -778,7 +778,7 @@ public class CachingConnectionFactoryTests extends AbstractConnectionFactoryTest called.incrementAndGet(); } })); - ((CachingConnectionFactory)connectionFactory).setChannelCacheSize(1); + ((CachingConnectionFactory) connectionFactory).setChannelCacheSize(1); Connection con = connectionFactory.createConnection(); Channel channel = con.createChannel(false); @@ -830,7 +830,7 @@ public class CachingConnectionFactoryTests extends AbstractConnectionFactoryTest closed.set(connection); } }); - ((CachingConnectionFactory)connectionFactory).setChannelCacheSize(1); + ((CachingConnectionFactory) connectionFactory).setChannelCacheSize(1); Connection con = connectionFactory.createConnection(); Channel channel = con.createChannel(false); @@ -908,7 +908,7 @@ public class CachingConnectionFactoryTests extends AbstractConnectionFactoryTest new AtomicReference(); final AtomicReference closedNotification = new AtomicReference(); - ccf.setConnectionListeners(Collections.singletonList(new ConnectionListener(){ + ccf.setConnectionListeners(Collections.singletonList(new ConnectionListener() { @Override public void onCreate(Connection connection) { @@ -1112,7 +1112,7 @@ public class CachingConnectionFactoryTests extends AbstractConnectionFactoryTest new AtomicReference(); final AtomicReference closedNotification = new AtomicReference(); - ccf.setConnectionListeners(Collections.singletonList(new ConnectionListener(){ + ccf.setConnectionListeners(Collections.singletonList(new ConnectionListener() { @Override public void onCreate(Connection connection) { @@ -1409,7 +1409,7 @@ public class CachingConnectionFactoryTests extends AbstractConnectionFactoryTest InOrder order = inOrder(mock); order.verify(mock).setUri(uri); - order.verify(mock).newConnection((ExecutorService)null); + order.verify(mock).newConnection((ExecutorService) null); verifyNoMoreInteractions(mock); } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryLifecycleTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryLifecycleTests.java index edd26203..729f2628 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryLifecycleTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryLifecycleTests.java @@ -86,7 +86,7 @@ public class ConnectionFactoryLifecycleTests { private volatile boolean running; - public MyLifecycle (ConnectionFactory cf) { + public MyLifecycle(ConnectionFactory cf) { this.admin = new RabbitAdmin(cf); } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/SSLConnectionTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/SSLConnectionTests.java index 53db1499..2455de33 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/SSLConnectionTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/SSLConnectionTests.java @@ -37,7 +37,8 @@ import com.rabbitmq.client.ConnectionFactory; */ public class SSLConnectionTests { - @Test @Ignore + @Test + @Ignore public void test() throws Exception { RabbitConnectionFactoryBean fb = new RabbitConnectionFactoryBean(); fb.setUseSSL(true); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/SingleConnectionFactory.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/SingleConnectionFactory.java index 76165a56..8c496dc2 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/SingleConnectionFactory.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/SingleConnectionFactory.java @@ -236,7 +236,8 @@ public class SingleConnectionFactory extends AbstractConnectionFactory { if (other.target != null) { return false; } - } else if (!target.equals(other.target)) { + } + else if (!target.equals(other.target)) { return false; } return true; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/BatchingRabbitTemplateTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/BatchingRabbitTemplateTests.java index 0549da07..7982548f 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/BatchingRabbitTemplateTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/BatchingRabbitTemplateTests.java @@ -463,10 +463,11 @@ public class BatchingRabbitTemplateTests { } private Message receive(BatchingRabbitTemplate template) throws InterruptedException { - Message message = null; + Message message = template.receive(ROUTE); int n = 0; - while (n++ < 200 && (message = template.receive(ROUTE)) == null) { + while (n++ < 200 && message == null) { Thread.sleep(50); + message = template.receive(ROUTE); } assertNotNull(message); return message; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests.java index c8bc13b5..c5dcf4c7 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests.java @@ -51,7 +51,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * @since 1.3.6 */ -@ContextConfiguration(classes=FixedReplyQueueDeadLetterConfig.class) +@ContextConfiguration(classes = FixedReplyQueueDeadLetterConfig.class) @RunWith(SpringJUnit4ClassRunner.class) @DirtiesContext public class FixedReplyQueueDeadLetterTests { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/Producer.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/Producer.java index 3d6c2792..6b35b6de 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/Producer.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/Producer.java @@ -20,7 +20,11 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageProperties; import org.springframework.amqp.rabbit.connection.SingleConnectionFactory; -public class Producer { +public final class Producer { + + private Producer() { + super(); + } /** * @param args diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/QueueUtils.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/QueueUtils.java index ab12245c..977f9d4d 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/QueueUtils.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/QueueUtils.java @@ -19,7 +19,11 @@ package org.springframework.amqp.rabbit.core; import com.rabbitmq.client.AMQP.Queue; import com.rabbitmq.client.Channel; -public class QueueUtils { +public final class QueueUtils { + + private QueueUtils() { + super(); + } static void declareTestQueue(RabbitTemplate template, final String routingKey) { // declare and bind queue diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminDeclarationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminDeclarationTests.java index 3b52d005..b46afed7 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminDeclarationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminDeclarationTests.java @@ -310,7 +310,7 @@ public class RabbitAdminDeclarationTests { queue.setAdminsThatShouldDeclare(null, admin1); fail("Expected Exception"); } - catch (IllegalArgumentException e) {} + catch (IllegalArgumentException e) { } } @Configuration diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminIntegrationTests.java index 5ed22955..0ab68d17 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminIntegrationTests.java @@ -96,7 +96,7 @@ public class RabbitAdminIntegrationTests { if (context != null) { context.close(); } - if (connectionFactory!=null) { + if (connectionFactory != null) { connectionFactory.destroy(); } } @@ -124,7 +124,8 @@ public class RabbitAdminIntegrationTests { new RabbitAdmin(connectionFactory1).declareQueue(queue); try { new RabbitAdmin(connectionFactory2).declareQueue(queue); - } finally { + } + finally { // Need to release the connection so the exclusive queue is deleted connectionFactory1.destroy(); connectionFactory2.destroy(); @@ -304,7 +305,8 @@ public class RabbitAdminIntegrationTests { try { rabbitAdmin.declareBinding(binding); - } catch (AmqpIOException ex) { + } + catch (AmqpIOException ex) { Throwable cause = ex; Throwable rootCause = null; while (cause != null) { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitBindingIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitBindingIntegrationTests.java index 2a06ba16..7903f18b 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitBindingIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitBindingIntegrationTests.java @@ -101,7 +101,8 @@ public class RabbitBindingIntegrationTests { result = getResult(consumer); assertEquals("message", result); - } finally { + } + finally { consumer.getChannel().basicCancel(tag); } @@ -141,7 +142,8 @@ public class RabbitBindingIntegrationTests { result = getResult(consumer); assertEquals("message", result); - } finally { + } + finally { consumer.getChannel().basicCancel(tag); } @@ -216,7 +218,8 @@ public class RabbitBindingIntegrationTests { template.convertAndSend("foo", "message"); String result = getResult(consumer); assertEquals(null, result); - } finally { + } + finally { consumer.stop(); } @@ -237,7 +240,8 @@ public class RabbitBindingIntegrationTests { template.convertAndSend("foo.end", "message"); String result = getResult(consumer); assertEquals("message", result); - } finally { + } + finally { consumer.stop(); } @@ -270,7 +274,8 @@ public class RabbitBindingIntegrationTests { template.convertAndSend("message"); String result = getResult(consumer); assertEquals("message", result); - } finally { + } + finally { consumer.stop(); } @@ -309,4 +314,5 @@ public class RabbitBindingIntegrationTests { } return (String) new SimpleMessageConverter().fromMessage(response); } + } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitGatewaySupportTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitGatewaySupportTests.java index e0a18d59..4c7578a0 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitGatewaySupportTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitGatewaySupportTests.java @@ -65,5 +65,5 @@ public class RabbitGatewaySupportTests { assertEquals("Correct RabbitTemplate", template, gateway.getRabbitTemplate()); assertEquals("initGateway called", test.size(), 1); } - + } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitMessagingTemplateTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitMessagingTemplateTests.java index d6fb6770..0a5c600d 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitMessagingTemplateTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitMessagingTemplateTests.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,6 +16,18 @@ package org.springframework.amqp.rabbit.core; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.willThrow; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + import java.io.Writer; import java.util.HashMap; import java.util.Map; @@ -39,11 +51,9 @@ import org.springframework.messaging.Message; import org.springframework.messaging.converter.GenericMessageConverter; import org.springframework.messaging.support.MessageBuilder; -import static org.junit.Assert.*; -import static org.mockito.BDDMockito.*; - /** * @author Stephane Nicoll + * @author Gary Russell */ public class RabbitMessagingTemplateTests { @@ -406,8 +416,12 @@ public class RabbitMessagingTemplateTests { } - private static org.springframework.amqp.core.Message anyAmqpMessage() {return any(org.springframework.amqp.core.Message.class);} + private static org.springframework.amqp.core.Message anyAmqpMessage() { + return any(org.springframework.amqp.core.Message.class); + } - private static MessageProperties anyMessageProperties() {return any(MessageProperties.class);} + private static MessageProperties anyMessageProperties() { + return any(MessageProperties.class); + } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateHeaderTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateHeaderTests.java index 6fd23f29..d4d1b8af 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateHeaderTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateHeaderTests.java @@ -102,7 +102,7 @@ public class RabbitTemplateHeaderTests { Message replyMessage = new Message("!dlrow olleH".getBytes(), springProps); template.onMessage(replyMessage); return null; - }} + } } ).when(mockChannel).basicPublish(Mockito.any(String.class), Mockito.any(String.class), Mockito.anyBoolean(), Mockito.any(BasicProperties.class), Mockito.any(byte[].class)); Message reply = template.sendAndReceive(message); @@ -153,7 +153,7 @@ public class RabbitTemplateHeaderTests { Message replyMessage = new Message("!dlrow olleH".getBytes(), springProps); template.onMessage(replyMessage); return null; - }} + } } ).when(mockChannel).basicPublish(Mockito.any(String.class), Mockito.any(String.class), Mockito.anyBoolean(), Mockito.any(BasicProperties.class), Mockito.any(byte[].class)); Message reply = template.sendAndReceive(message); @@ -209,7 +209,7 @@ public class RabbitTemplateHeaderTests { } template.onMessage(replyMessage); return null; - }} + } } ).when(mockChannel).basicPublish(Mockito.any(String.class), Mockito.any(String.class), Mockito.anyBoolean(), Mockito.any(BasicProperties.class), Mockito.any(byte[].class)); Message reply = template.sendAndReceive(message); @@ -260,7 +260,7 @@ public class RabbitTemplateHeaderTests { Message replyMessage = new Message("!dlrow olleH".getBytes(), springProps); template.onMessage(replyMessage); return null; - }} + } } ).when(mockChannel).basicPublish(Mockito.any(String.class), Mockito.any(String.class), Mockito.anyBoolean(), Mockito.any(BasicProperties.class), Mockito.any(byte[].class)); Message reply = template.sendAndReceive(message); @@ -318,7 +318,7 @@ public class RabbitTemplateHeaderTests { } template.onMessage(replyMessage); return null; - }} + } } ).when(mockChannel).basicPublish(Mockito.any(String.class), Mockito.any(String.class), Mockito.anyBoolean(), Mockito.any(BasicProperties.class), Mockito.any(byte[].class)); Message reply = template.sendAndReceive(message); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests.java index cc120b53..b9802788 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests.java @@ -469,11 +469,11 @@ public class RabbitTemplatePublisherCallbacksIntegrationTests { doReturn(new PublisherCallbackChannelImpl(mockChannel)).when(mockConnection).createChannel(); final AtomicInteger count = new AtomicInteger(); - doAnswer(new Answer(){ + doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return count.incrementAndGet(); - }}).when(mockChannel).getNextPublishSeqNo(); + } }).when(mockChannel).getNextPublishSeqNo(); CachingConnectionFactory ccf = new CachingConnectionFactory(mockConnectionFactory); ccf.setPublisherConfirms(true); @@ -514,7 +514,7 @@ public class RabbitTemplatePublisherCallbacksIntegrationTests { when(mockConnection.createChannel()).thenReturn(callbackChannel); final AtomicInteger count = new AtomicInteger(); - doAnswer(new Answer(){ + doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return count.incrementAndGet(); @@ -561,7 +561,7 @@ public class RabbitTemplatePublisherCallbacksIntegrationTests { when(mockConnection.createChannel()).thenReturn(callbackChannel); final AtomicInteger count = new AtomicInteger(); - doAnswer(new Answer(){ + doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return count.incrementAndGet(); @@ -887,7 +887,7 @@ public class RabbitTemplatePublisherCallbacksIntegrationTests { }); ExecutorService exec = Executors.newSingleThreadExecutor(); final AtomicInteger sent = new AtomicInteger(); - doAnswer(new Answer(){ + doAnswer(new Answer() { @Override public Boolean answer(InvocationOnMock invocation) throws Throwable { @@ -903,7 +903,7 @@ public class RabbitTemplatePublisherCallbacksIntegrationTests { try { template.convertAndSend(ROUTE, (Object) "message", new CorrelationData("abc")); } - catch (AmqpException e) {} + catch (AmqpException e) { } } sentAll.countDown(); } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests2.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests2.java index 39a24796..b9665d02 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests2.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests2.java @@ -101,19 +101,24 @@ public class RabbitTemplatePublisherCallbacksIntegrationTests2 { } private void assertMessageCountEquals(long wanted) throws InterruptedException { - long messageCount; + long messageCount = determineMessageCount(); int n = 0; - while ((messageCount = this.templateWithConfirmsEnabled.execute(new ChannelCallback() { + while (messageCount < wanted && n++ < 100) { + Thread.sleep(100); + messageCount = determineMessageCount(); + } + assertEquals(wanted, messageCount); + } + + private Long determineMessageCount() { + return this.templateWithConfirmsEnabled.execute(new ChannelCallback() { @Override public Long doInRabbit(Channel channel) throws Exception { return channel.messageCount(ROUTE); } - })) < wanted && n++ < 100) { - Thread.sleep(100); - }; - assertEquals(wanted, messageCount); + }); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/TestConstants.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/TestConstants.java index 3103f02b..b64ef530 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/TestConstants.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/TestConstants.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. @@ -19,7 +19,7 @@ package org.springframework.amqp.rabbit.core; /** * Exchange, queue, and routing key constants for the testing code. */ -public class TestConstants { +public final class TestConstants { public static String EXCHANGE_NAME = ""; @@ -29,4 +29,8 @@ public class TestConstants { public static int NUM_MESSAGES = 500; + private TestConstants() { + super(); + } + } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/support/SimpleBatchStrategyTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/support/SimpleBatchStrategyTests.java index 90f4e4be..139d7a4b 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/support/SimpleBatchStrategyTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/support/SimpleBatchStrategyTests.java @@ -30,7 +30,8 @@ import org.springframework.util.StopWatch; */ public class SimpleBatchStrategyTests { - @Test @Ignore + @Test + @Ignore public void testBatchingPerf() { // used to compare ByteBuffer Vs. System.arrayCopy() StopWatch watch = new StopWatch(); byte[] bbBuff = new byte[10000]; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ExternalTxManagerTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ExternalTxManagerTests.java index 1b239106..b1430a27 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ExternalTxManagerTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ExternalTxManagerTests.java @@ -85,7 +85,7 @@ public class ExternalTxManagerTests { final AtomicReference tooManyChannels = new AtomicReference(); - doAnswer(new Answer(){ + doAnswer(new Answer() { boolean done; @Override public Channel answer(InvocationOnMock invocation) throws Throwable { @@ -192,7 +192,7 @@ public class ExternalTxManagerTests { final AtomicReference tooManyChannels = new AtomicReference(); - doAnswer(new Answer(){ + doAnswer(new Answer() { boolean done; @Override public Channel answer(InvocationOnMock invocation) throws Throwable { @@ -301,7 +301,7 @@ public class ExternalTxManagerTests { final AtomicReference tooManyChannels = new AtomicReference(); - doAnswer(new Answer(){ + doAnswer(new Answer() { boolean done; @Override public Channel answer(InvocationOnMock invocation) throws Throwable { @@ -403,7 +403,7 @@ public class ExternalTxManagerTests { final AtomicReference tooManyChannels = new AtomicReference(); - doAnswer(new Answer(){ + doAnswer(new Answer() { boolean done; @Override public Channel answer(InvocationOnMock invocation) throws Throwable { @@ -506,7 +506,7 @@ public class ExternalTxManagerTests { final AtomicReference tooManyChannels = new AtomicReference(); - doAnswer(new Answer(){ + doAnswer(new Answer() { boolean done; @Override public Channel answer(InvocationOnMock invocation) throws Throwable { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/JavaConfigFixedReplyQueueTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/JavaConfigFixedReplyQueueTests.java index 1d28862e..60cb7233 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/JavaConfigFixedReplyQueueTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/JavaConfigFixedReplyQueueTests.java @@ -60,7 +60,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * @since 1.3 */ -@ContextConfiguration(classes=FixedReplyQueueConfig.class) +@ContextConfiguration(classes = FixedReplyQueueConfig.class) @RunWith(SpringJUnit4ClassRunner.class) @DirtiesContext public class JavaConfigFixedReplyQueueTests { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/LocallyTransactedTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/LocallyTransactedTests.java index 87416e38..f7e15eb6 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/LocallyTransactedTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/LocallyTransactedTests.java @@ -80,7 +80,7 @@ public class LocallyTransactedTests { final AtomicReference tooManyChannels = new AtomicReference(); - doAnswer(new Answer(){ + doAnswer(new Answer() { boolean done; @Override public Channel answer(InvocationOnMock invocation) throws Throwable { @@ -178,7 +178,7 @@ public class LocallyTransactedTests { final AtomicReference tooManyChannels = new AtomicReference(); - doAnswer(new Answer(){ + doAnswer(new Answer() { boolean done; @Override public Channel answer(InvocationOnMock invocation) throws Throwable { @@ -281,7 +281,7 @@ public class LocallyTransactedTests { final AtomicReference tooManyChannels = new AtomicReference(); - doAnswer(new Answer(){ + doAnswer(new Answer() { boolean done; @Override public Channel answer(InvocationOnMock invocation) throws Throwable { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerErrorHandlerIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerErrorHandlerIntegrationTests.java index 9279af68..42f0a810 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerErrorHandlerIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerErrorHandlerIntegrationTests.java @@ -358,7 +358,8 @@ public class MessageListenerContainerErrorHandlerIntegrationTests { logger.debug("Message in pojo: " + value); Thread.sleep(100L); throw exception; - } finally { + } + finally { latch.countDown(); } } @@ -380,11 +381,13 @@ public class MessageListenerContainerErrorHandlerIntegrationTests { logger.debug("Message in listener: " + value); try { Thread.sleep(100L); - } catch (InterruptedException e) { + } + catch (InterruptedException e) { // Ignore this exception } throw exception; - } finally { + } + finally { latch.countDown(); } } @@ -406,11 +409,13 @@ public class MessageListenerContainerErrorHandlerIntegrationTests { logger.debug("Message in channel aware listener: " + value); try { Thread.sleep(100L); - } catch (InterruptedException e) { + } + catch (InterruptedException e) { // Ignore this exception } throw exception; - } finally { + } + finally { latch.countDown(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerLifecycleIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerLifecycleIntegrationTests.java index e76e219b..17d344ea 100755 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerLifecycleIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerLifecycleIntegrationTests.java @@ -551,7 +551,8 @@ public class MessageListenerContainerLifecycleIntegrationTests { try { logger.debug(value + count.getAndIncrement()); Thread.sleep(10); - } finally { + } + finally { latch.countDown(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java index 21c76a36..4632d234 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java @@ -184,13 +184,14 @@ public class MessageListenerContainerRetryIntegrationTests { AbstractRetryOperationsInterceptorFactoryBean factory; if (stateful) { factory = new StatefulRetryOperationsInterceptorFactoryBean(); - } else { + } + else { factory = new StatelessRetryOperationsInterceptorFactoryBean(); } factory.setMessageRecoverer(new MessageRecoverer() { @Override public void recover(Message message, Throwable cause) { - logger.info("Recovered: [" + SerializationUtils.deserialize(message.getBody()).toString()+"], message: " +message); + logger.info("Recovered: [" + SerializationUtils.deserialize(message.getBody()).toString() + "], message: " + message); latch.countDown(); } }); @@ -250,7 +251,8 @@ public class MessageListenerContainerRetryIntegrationTests { while (container.getActiveConsumerCount() > 0) { try { Thread.sleep(100L); - } catch (InterruptedException e) { + } + catch (InterruptedException e) { latch.countDown(); Thread.currentThread().interrupt(); return; @@ -272,7 +274,8 @@ public class MessageListenerContainerRetryIntegrationTests { // All failed messages recovered assertEquals(null, template.receiveAndConvert(queue.getName())); - } finally { + } + finally { container.shutdown(); ((DisposableBean) template.getConnectionFactory()).destroy(); @@ -290,10 +293,10 @@ public class MessageListenerContainerRetryIntegrationTests { } public void handleMessage(int value) throws Exception { - logger.debug("Handling: ["+value+ "], fails:" + count); + logger.debug("Handling: [" + value + "], fails:" + count); if (value % failFrequency == 0) { count.getAndIncrement(); - logger.debug("Failing: ["+value+ "], fails:" + count); + logger.debug("Failing: [" + value + "], fails:" + count); throw new RuntimeException("Planned"); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerManualAckIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerManualAckIntegrationTests.java index b4d4414e..1f89739c 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerManualAckIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerManualAckIntegrationTests.java @@ -158,7 +158,8 @@ public class MessageListenerManualAckIntegrationTests { try { logger.debug("Acking: " + value); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); - } finally { + } + finally { latch.countDown(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryCachingConnectionIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryCachingConnectionIntegrationTests.java index da95d0a0..9e25b488 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryCachingConnectionIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryCachingConnectionIntegrationTests.java @@ -423,7 +423,7 @@ public class MessageListenerRecoveryCachingConnectionIntegrationTests { template.convertAndSend("nonexistent", "foo" + i); } assertTrue(latch.await(10, TimeUnit.SECONDS)); - Map consumers = TestUtils.getPropertyValue(container, "consumers", Map.class); + Map consumers = TestUtils.getPropertyValue(container, "consumers", Map.class); assertEquals(1, consumers.size()); Object consumer = consumers.keySet().iterator().next(); @@ -525,7 +525,8 @@ public class MessageListenerRecoveryCachingConnectionIntegrationTests { // intentional error (causes exception on connection thread): throw new RuntimeException("Planned"); } - } finally { + } + finally { latch.countDown(); } } @@ -548,7 +549,8 @@ public class MessageListenerRecoveryCachingConnectionIntegrationTests { if (failed.compareAndSet(false, true)) { // intentional error (causes exception on connection thread): channel.abort(); - } else { + } + else { latch.countDown(); } } @@ -574,7 +576,8 @@ public class MessageListenerRecoveryCachingConnectionIntegrationTests { if (failed.compareAndSet(false, true)) { // intentional error (causes exception on connection thread): connection.close(); - } else { + } + else { latch.countDown(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryRepeatIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryRepeatIntegrationTests.java index c4eb8ac4..7632d92c 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryRepeatIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryRepeatIntegrationTests.java @@ -189,7 +189,8 @@ public class MessageListenerRecoveryRepeatIntegrationTests { // channel.abort(); // throw new RuntimeException("Planned"); throw new FatalListenerExecutionException("Planned"); - } else { + } + else { latch.countDown(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerTxSizeIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerTxSizeIntegrationTests.java index 0937564a..3b622a64 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerTxSizeIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerTxSizeIntegrationTests.java @@ -164,17 +164,19 @@ public class MessageListenerTxSizeIntegrationTests { String value = new String(message.getBody()); try { logger.debug("Received: " + value); - if (count.get()==null) { + if (count.get() == null) { count.set(1); - } else { - count.set(count.get()+1); } - if (count.get()==txSize && fail) { + else { + count.set(count.get() + 1); + } + if (count.get() == txSize && fail) { logger.debug("Failing: " + value); count.set(0); throw new RuntimeException("Planned"); } - } finally { + } + finally { latch.countDown(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MethodRabbitListenerEndpointTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MethodRabbitListenerEndpointTests.java index d0a55deb..97a00265 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MethodRabbitListenerEndpointTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MethodRabbitListenerEndpointTests.java @@ -24,7 +24,6 @@ import static org.mockito.AdditionalMatchers.aryEq; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import static org.springframework.amqp.rabbit.test.MessageTestUtils.createTextMessage; import java.io.Serializable; import java.lang.reflect.Method; @@ -45,6 +44,7 @@ import org.springframework.amqp.core.MessageProperties; import org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter; import org.springframework.amqp.rabbit.listener.adapter.ReplyFailureException; import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException; +import org.springframework.amqp.rabbit.test.MessageTestUtils; import org.springframework.amqp.support.AmqpHeaders; import org.springframework.amqp.support.AmqpMessageHeaderAccessor; import org.springframework.amqp.support.converter.MessageConversionException; @@ -71,6 +71,7 @@ import com.rabbitmq.client.Channel; /** * @author Stephane Nicoll * @author Artem Bilan + * @author Gary Russell */ public class MethodRabbitListenerEndpointTests { @@ -118,7 +119,7 @@ public class MethodRabbitListenerEndpointTests { org.springframework.amqp.core.Message.class, Channel.class); Channel channel = mock(Channel.class); - listener.onMessage(createTextMessage("test"), channel); + listener.onMessage(MessageTestUtils.createTextMessage("test"), channel); assertDefaultListenerMethodInvocation(); } @@ -127,7 +128,7 @@ public class MethodRabbitListenerEndpointTests { MessagingMessageListenerAdapter listener = createDefaultInstance(Message.class); Channel channel = mock(Channel.class); - listener.onMessage(createTextMessage("test"), channel); + listener.onMessage(MessageTestUtils.createTextMessage("test"), channel); assertDefaultListenerMethodInvocation(); } @@ -140,7 +141,7 @@ public class MethodRabbitListenerEndpointTests { properties.setHeader("myCounter", 55); properties.setConsumerTag("consumerTag"); properties.setConsumerQueue("queue"); - org.springframework.amqp.core.Message message = createTextMessage("my payload", properties); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); } @@ -152,7 +153,7 @@ public class MethodRabbitListenerEndpointTests { Channel channel = mock(Channel.class); MessageProperties properties = new MessageProperties(); properties.setHeader("myCounter", 24); - org.springframework.amqp.core.Message message = createTextMessage("my payload", properties); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); } @@ -165,7 +166,7 @@ public class MethodRabbitListenerEndpointTests { MessageProperties properties = new MessageProperties(); properties.setHeader("customInt", 1234); properties.setMessageId("abcd-1234"); - org.springframework.amqp.core.Message message = createTextMessage("my payload", properties); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); } @@ -178,7 +179,7 @@ public class MethodRabbitListenerEndpointTests { MessageProperties properties = new MessageProperties(); properties.setHeader("customLong", 4567L); properties.setType("myMessageType"); - org.springframework.amqp.core.Message message = createTextMessage("my payload", properties); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); } @@ -191,7 +192,7 @@ public class MethodRabbitListenerEndpointTests { MessageProperties properties = new MessageProperties(); properties.setHeader("customBoolean", true); properties.setAppId("myAppId"); - org.springframework.amqp.core.Message message = createTextMessage("my payload", properties); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); } @@ -217,7 +218,7 @@ public class MethodRabbitListenerEndpointTests { Channel channel = mock(Channel.class); - listener.onMessage(createTextMessage("33"), channel); + listener.onMessage(MessageTestUtils.createTextMessage("33"), channel); assertDefaultListenerMethodInvocation(); } @@ -233,7 +234,7 @@ public class MethodRabbitListenerEndpointTests { listener.setResponseRoutingKey(responseRoutingKey); MessageProperties properties = new MessageProperties(); properties.setCorrelationId(correlationId.getBytes(SimpleMessageConverter.DEFAULT_CHARSET)); - org.springframework.amqp.core.Message message = createTextMessage(body, properties); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage(body, properties); processAndReply(listener, message, responseExchange, responseRoutingKey, false, correlationId); assertDefaultListenerMethodInvocation(); @@ -246,7 +247,7 @@ public class MethodRabbitListenerEndpointTests { listener.setResponseExchange("fooQueue"); String body = "echo text"; - org.springframework.amqp.core.Message message = createTextMessage(body, new MessageProperties()); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage(body, new MessageProperties()); processAndReply(listener, message, "fooQueue", "", false, null); @@ -260,7 +261,7 @@ public class MethodRabbitListenerEndpointTests { listener.setResponseExchange("fooQueue"); String body = "echo text"; - org.springframework.amqp.core.Message message = createTextMessage(body, new MessageProperties()); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage(body, new MessageProperties()); try { processAndReply(listener, message, "fooQueue", "", false, null); @@ -284,7 +285,7 @@ public class MethodRabbitListenerEndpointTests { MessageProperties properties = new MessageProperties(); properties.setReplyToAddress(replyTo); - org.springframework.amqp.core.Message message = createTextMessage(body, properties); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage(body, properties); processAndReply(listener, message, "replyToQueue", "myRouting", true, null); @@ -299,7 +300,7 @@ public class MethodRabbitListenerEndpointTests { MessageProperties properties = new MessageProperties(); properties.setMessageId(messageId); - org.springframework.amqp.core.Message message = createTextMessage(body, properties); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage(body, properties); // MessageId is used as fallback when no correlationId is set processAndReply(listener, message, "replyDestination", "", false, messageId); @@ -324,7 +325,7 @@ public class MethodRabbitListenerEndpointTests { public void emptySendTo() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(String.class); - processAndReply(listener, createTextMessage("content"), "", "", false, null); + processAndReply(listener, MessageTestUtils.createTextMessage("content"), "", "", false, null); assertDefaultListenerMethodInvocation(); } @@ -352,7 +353,7 @@ public class MethodRabbitListenerEndpointTests { Method method = getListenerMethod(methodName, String.class); MessagingMessageListenerAdapter listener = createInstance(customFactory, method); Channel channel = mock(Channel.class); - listener.onMessage(createTextMessage("test"), channel); // test is a valid value + listener.onMessage(MessageTestUtils.createTextMessage("test"), channel); // test is a valid value assertListenerMethodInvocation(sample, methodName); } @@ -366,7 +367,7 @@ public class MethodRabbitListenerEndpointTests { Channel channel = mock(Channel.class); thrown.expect(ListenerExecutionFailedException.class); - listener.onMessage(createTextMessage("invalid value"), channel); // test is an invalid value + listener.onMessage(MessageTestUtils.createTextMessage("invalid value"), channel); // test is an invalid value } @@ -380,7 +381,7 @@ public class MethodRabbitListenerEndpointTests { thrown.expect(ListenerExecutionFailedException.class); thrown.expectCause(Matchers.isA(MessageConversionException.class)); thrown.expectMessage(getDefaultListenerMethod(Integer.class).toGenericString()); // ref to method - listener.onMessage(createTextMessage("test"), channel); // test is not a valid integer + listener.onMessage(MessageTestUtils.createTextMessage("test"), channel); // test is not a valid integer } @Test @@ -391,7 +392,7 @@ public class MethodRabbitListenerEndpointTests { thrown.expect(ListenerExecutionFailedException.class); thrown.expectCause(Matchers.either(Matchers.instanceOf(MethodArgumentTypeMismatchException.class)) .or(Matchers.instanceOf(MessageConversionException.class))); - listener.onMessage(createTextMessage("test"), channel); // Message as Message + listener.onMessage(MessageTestUtils.createTextMessage("test"), channel); // Message as Message } private MessagingMessageListenerAdapter createInstance( diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistryTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistryTests.java index 2fece1cf..959e3446 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistryTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistryTests.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. @@ -22,11 +22,11 @@ import org.junit.rules.ExpectedException; import org.springframework.amqp.rabbit.config.RabbitListenerContainerTestFactory; import org.springframework.amqp.rabbit.config.SimpleRabbitListenerEndpoint; -import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry; /** * * @author Stephane Nicoll + * @author Gary Russell */ public class RabbitListenerEndpointRegistryTests { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegration2Tests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegration2Tests.java index f365e96b..09dd4988 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegration2Tests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegration2Tests.java @@ -539,7 +539,8 @@ public class SimpleMessageListenerContainerIntegration2Tests { if (fail) { throw new RuntimeException("Planned failure"); } - } finally { + } + finally { latch.countDown(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegrationTests.java index b5da6089..5d23475e 100755 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegrationTests.java @@ -114,19 +114,19 @@ public class SimpleMessageListenerContainerIntegrationTests { @Parameters public static List getParameters() { - return Arrays.asList( // - params(0, 1, 1, AcknowledgeMode.AUTO), // - params(1, 1, 1, AcknowledgeMode.NONE), // - params(2, 4, 1, AcknowledgeMode.AUTO), // - extern(3, 4, 1, AcknowledgeMode.AUTO), // - params(4, 4, 1, AcknowledgeMode.AUTO, false), // - params(5, 2, 2, AcknowledgeMode.AUTO), // - params(6, 2, 2, AcknowledgeMode.NONE), // - params(7, 20, 4, AcknowledgeMode.AUTO), // - params(8, 20, 4, AcknowledgeMode.NONE), // - params(9, 300, 4, AcknowledgeMode.AUTO), // - params(10, 300, 4, AcknowledgeMode.NONE), // - params(11, 300, 4, AcknowledgeMode.AUTO, 10) // + return Arrays.asList( + params(0, 1, 1, AcknowledgeMode.AUTO), + params(1, 1, 1, AcknowledgeMode.NONE), + params(2, 4, 1, AcknowledgeMode.AUTO), + extern(3, 4, 1, AcknowledgeMode.AUTO), + params(4, 4, 1, AcknowledgeMode.AUTO, false), + params(5, 2, 2, AcknowledgeMode.AUTO), + params(6, 2, 2, AcknowledgeMode.NONE), + params(7, 20, 4, AcknowledgeMode.AUTO), + params(8, 20, 4, AcknowledgeMode.NONE), + params(9, 300, 4, AcknowledgeMode.AUTO), + params(10, 300, 4, AcknowledgeMode.NONE), + params(11, 300, 4, AcknowledgeMode.AUTO, 10) ); } @@ -247,7 +247,8 @@ public class SimpleMessageListenerContainerIntegrationTests { } if (acknowledgeMode.isTransactionAllowed()) { assertNotNull(template.receiveAndConvert(queue.getName())); - } else { + } + else { assertNull(template.receiveAndConvert(queue.getName())); } } @@ -297,7 +298,8 @@ public class SimpleMessageListenerContainerIntegrationTests { if (fail) { throw new RuntimeException("Planned failure"); } - } finally { + } + finally { latch.countDown(); } } @@ -330,7 +332,8 @@ public class SimpleMessageListenerContainerIntegrationTests { if (fail) { throw new RuntimeException("Planned failure"); } - } finally { + } + finally { latch.countDown(); } } @@ -363,7 +366,8 @@ public class SimpleMessageListenerContainerIntegrationTests { if (fail) { throw new RuntimeException("Planned failure"); } - } finally { + } + finally { latch.countDown(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerTests.java index ffeafc14..bbaeebb4 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerTests.java @@ -316,7 +316,7 @@ public class SimpleMessageListenerContainerTests { when(connectionFactory.createConnection()).thenReturn(connection); when(connection.createChannel(false)).thenReturn(channel); final AtomicReference consumer = new AtomicReference(); - final AtomicReference> args = new AtomicReference>(); + final AtomicReference> args = new AtomicReference>(); doAnswer(new Answer() { @Override @@ -336,10 +336,11 @@ public class SimpleMessageListenerContainerTests { public void onMessage(Message message) { } }); - container.setConsumerArguments(Collections. singletonMap("x-priority", Integer.valueOf(10))); + container.setConsumerArguments(Collections.singletonMap("x-priority", Integer.valueOf(10))); container.afterPropertiesSet(); container.start(); - verify(channel).basicConsume(anyString(), anyBoolean(), anyString(), anyBoolean(), anyBoolean(), any(Map.class), any(Consumer.class)); + verify(channel).basicConsume(anyString(), anyBoolean(), anyString(), anyBoolean(), anyBoolean(), any(Map.class), + any(Consumer.class)); assertTrue(args.get() != null); assertEquals(10, args.get().get("x-priority")); consumer.get().handleCancelOk("foo"); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerWithRabbitMQ.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerWithRabbitMQ.java index 1f38d36b..21fc6d44 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerWithRabbitMQ.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerWithRabbitMQ.java @@ -36,11 +36,16 @@ import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.amqp.support.converter.SimpleMessageConverter; import org.springframework.beans.DirectFieldAccessor; -public class SimpleMessageListenerWithRabbitMQ { +public final class SimpleMessageListenerWithRabbitMQ { private static Log logger = LogFactory.getLog(SimpleMessageListenerWithRabbitMQ.class); + private SimpleMessageListenerWithRabbitMQ() { + super(); + } + + public static void main(String[] args) throws InterruptedException { CachingConnectionFactory connectionFactory = new CachingConnectionFactory("localhost"); connectionFactory.setHost("localhost"); @@ -59,7 +64,7 @@ public class SimpleMessageListenerWithRabbitMQ { container.setTxSize(500); container.setAcknowledgeMode(AcknowledgeMode.AUTO); container.setConcurrentConsumers(20); - container.setMessageListener(new MessageListenerAdapter(new SimpleAdapter(),messageConverter)); + container.setMessageListener(new MessageListenerAdapter(new SimpleAdapter(), messageConverter)); container.start(); RabbitTemplate template = new RabbitTemplate(connectionFactory); @@ -68,8 +73,8 @@ public class SimpleMessageListenerWithRabbitMQ { Thread.sleep(10000); int n = 0; - while(true){ - for(int i=1; i<=200;i++){ + while (true) { + for (int i = 1; i <= 200; i++) { template.send("foo", "", new Message("foo # ID: id".replace("#", String.valueOf(i)).replace("id", java.util.UUID.randomUUID().toString()).getBytes(), messageProperties)); @@ -105,7 +110,7 @@ public class SimpleMessageListenerWithRabbitMQ { - private static class SimpleAdapter{ + private static class SimpleAdapter { @SuppressWarnings("unused") public void handleMessage(String input) { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/UnackedRawIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/UnackedRawIntegrationTests.java index 3dc0e6a7..33d9cefc 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/UnackedRawIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/UnackedRawIntegrationTests.java @@ -61,7 +61,8 @@ public class UnackedRawIntegrationTests { try { noTxChannel.queueDelete("test.queue"); - } catch (IOException e) { + } + catch (IOException e) { noTxChannel = conn.createChannel(); } noTxChannel.queueDeclare("test.queue", true, false, false, null); @@ -73,14 +74,16 @@ public class UnackedRawIntegrationTests { if (txChannel != null) { try { txChannel.close(); - } catch (Exception e) { + } + catch (Exception e) { e.printStackTrace(); } } if (noTxChannel != null) { try { noTxChannel.close(); - } catch (Exception e) { + } + catch (Exception e) { e.printStackTrace(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapterTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapterTests.java index 8eb6c38c..ab2d8fec 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapterTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapterTests.java @@ -20,7 +20,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; -import static org.springframework.amqp.rabbit.test.MessageTestUtils.createTextMessage; import java.lang.reflect.Method; import java.util.LinkedHashMap; @@ -29,6 +28,7 @@ import org.junit.Before; import org.junit.Test; import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException; +import org.springframework.amqp.rabbit.test.MessageTestUtils; import org.springframework.amqp.support.AmqpHeaders; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.beans.factory.support.StaticListableBeanFactory; @@ -77,7 +77,7 @@ public class MessagingMessageListenerAdapterTests { @Test public void exceptionInListener() { - org.springframework.amqp.core.Message message = createTextMessage("foo"); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("foo"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("fail", String.class); @@ -96,7 +96,7 @@ public class MessagingMessageListenerAdapterTests { @Test public void exceptionInInvocation() { - org.springframework.amqp.core.Message message = createTextMessage("foo"); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("foo"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("wrongParam", Integer.class); @@ -117,7 +117,7 @@ public class MessagingMessageListenerAdapterTests { @Test public void genericMessageTest1() throws Exception { - org.springframework.amqp.core.Message message = createTextMessage("\"foo\""); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("\"foo\""); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("withGenericMessageAnyType", Message.class); listener.setMessageConverter(new Jackson2JsonMessageConverter()); @@ -134,7 +134,7 @@ public class MessagingMessageListenerAdapterTests { @Test public void genericMessageTest2() throws Exception { - org.springframework.amqp.core.Message message = createTextMessage("{ \"foo\" : \"bar\" }"); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("{ \"foo\" : \"bar\" }"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("withGenericMessageFooType", Message.class); listener.setMessageConverter(new Jackson2JsonMessageConverter()); @@ -146,7 +146,7 @@ public class MessagingMessageListenerAdapterTests { @Test public void genericMessageTest3() throws Exception { - org.springframework.amqp.core.Message message = createTextMessage("{ \"foo\" : \"bar\" }"); + org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("{ \"foo\" : \"bar\" }"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("withNonGenericMessage", Message.class); listener.setMessageConverter(new Jackson2JsonMessageConverter()); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerRunning.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerRunning.java index 51b22728..501a7968 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerRunning.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerRunning.java @@ -65,17 +65,17 @@ import com.rabbitmq.http.client.Client; * @author Gary Russell * */ -public class BrokerRunning extends TestWatcher { +public final class BrokerRunning extends TestWatcher { private static final String DEFAULT_QUEUE_NAME = BrokerRunning.class.getName(); private static Log logger = LogFactory.getLog(BrokerRunning.class); // Static so that we only test once on failure: speeds up test suite - private static Map brokerOnline = new HashMap(); + private static Map brokerOnline = new HashMap(); // Static so that we only test once on failure - private static Map brokerOffline = new HashMap(); + private static Map brokerOffline = new HashMap(); private final boolean assumeOnline; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerTestUtils.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerTestUtils.java index 4da178e2..a0fa4456 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerTestUtils.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerTestUtils.java @@ -25,10 +25,14 @@ import org.springframework.amqp.rabbit.connection.ConnectionFactory; * @author Gary Russell * */ -public class BrokerTestUtils { +public final class BrokerTestUtils { public static final int DEFAULT_PORT = 5672; + private BrokerTestUtils() { + super(); + } + /** * The port that the broker is listening on (e.g. as input for a {@link ConnectionFactory}). * diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/Log4jLevelAdjuster.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/Log4jLevelAdjuster.java index 481e6234..ec63c539 100755 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/Log4jLevelAdjuster.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/Log4jLevelAdjuster.java @@ -64,8 +64,7 @@ public class Log4jLevelAdjuster implements MethodRule { } finally { logger.debug("Restoring log level setting for: " + Arrays.asList(classes)); - // raw Class type used to avoid http://bugs.sun.com/view_bug.do?bug_id=6682380 - for (@SuppressWarnings("rawtypes") Class cls : classes) { + for (Class cls : classes) { LogManager.getLogger(cls).setLevel(oldLevels.get(cls)); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/LongRunningIntegrationTest.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/LongRunningIntegrationTest.java index 739be0c4..a3764296 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/LongRunningIntegrationTest.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/LongRunningIntegrationTest.java @@ -41,7 +41,7 @@ public class LongRunningIntegrationTest extends TestWatcher { private boolean shouldRun = false; public LongRunningIntegrationTest() { - for(String value: new String[]{System.getenv(RUN_LONG_PROP), System.getProperty(RUN_LONG_PROP)}) { + for (String value: new String[]{System.getenv(RUN_LONG_PROP), System.getProperty(RUN_LONG_PROP)}) { if ("true".equalsIgnoreCase(value)) { this.shouldRun = true; break; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/RabbitMatchers.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/RabbitMatchers.java index 65b1ee9c..6f06f06a 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/RabbitMatchers.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/RabbitMatchers.java @@ -25,7 +25,11 @@ import org.hamcrest.Matcher; * @since 1.6 * */ -public class RabbitMatchers { +public final class RabbitMatchers { + + private RabbitMatchers() { + super(); + } public static Matcher matchesRegex(String pattern) { return new RegexMatcher(pattern); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/RepeatProcessor.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/RepeatProcessor.java index a2a9d26d..db15ed02 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/RepeatProcessor.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/RepeatProcessor.java @@ -91,11 +91,13 @@ public class RepeatProcessor implements MethodRule { for (int i = 0; i < repeats; i++) { try { base.evaluate(); - } catch (Throwable t) { + } + catch (Throwable t) { throw new IllegalStateException("Failed on iteration: " + i + " of " + repeats + " (started at 0)", t); } } - } finally { + } + finally { finalizeIfNecessary(target); } } @@ -114,7 +116,8 @@ public class RepeatProcessor implements MethodRule { public Boolean call() { try { base.evaluate(); - } catch (Throwable t) { + } + catch (Throwable t) { throw new IllegalStateException("Failed on iteration: " + count, t); } return true; @@ -125,7 +128,8 @@ public class RepeatProcessor implements MethodRule { Future future = completionService.take(); assertTrue("Null result from completer", future.get()); } - } finally { + } + finally { executor.shutdownNow(); finalizeIfNecessary(target); } @@ -145,11 +149,13 @@ public class RepeatProcessor implements MethodRule { public void evaluate() { } }, afters, target).evaluate(); - } catch (Throwable e) { + } + catch (Throwable e) { Assert.assertThat(e, CoreMatchers.not(CoreMatchers.anything())); } } - } finally { + } + finally { finalizing = false; } } @@ -165,7 +171,8 @@ public class RepeatProcessor implements MethodRule { public void evaluate() { } }, befores, target).evaluate(); - } catch (Throwable e) { + } + catch (Throwable e) { Assert.assertThat(e, CoreMatchers.not(CoreMatchers.anything())); } initialized = true; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitExceptionTranslatorTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitExceptionTranslatorTests.java index 1037f941..7120665d 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitExceptionTranslatorTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitExceptionTranslatorTests.java @@ -63,8 +63,8 @@ public class RabbitExceptionTranslatorTests { instanceOf(AmqpUnsupportedEncodingException.class)); assertThat(RabbitExceptionTranslator.convertRabbitAccessException(new Exception() { - private static final long serialVersionUID = 1L;}), - instanceOf(UncategorizedAmqpException.class)); + private static final long serialVersionUID = 1L; + }), instanceOf(UncategorizedAmqpException.class)); } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManagerIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManagerIntegrationTests.java index 99a72a10..7330db8f 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManagerIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManagerIntegrationTests.java @@ -107,7 +107,8 @@ public class RabbitTransactionManagerIntegrationTests { } }); fail("Expected PlannedException"); - } catch (PlannedException e) { + } + catch (PlannedException e) { // Expected } String result = (String) template.receiveAndConvert(ROUTE); @@ -144,7 +145,8 @@ public class RabbitTransactionManagerIntegrationTests { } }); fail("Expected PlannedException"); - } catch (PlannedException e) { + } + catch (PlannedException e) { // Expected } String result = (String) template.receiveAndConvert(ROUTE); diff --git a/src/checkstyle/checkstyle-suppressions.xml b/src/checkstyle/checkstyle-suppressions.xml index 4097d904..100adae9 100644 --- a/src/checkstyle/checkstyle-suppressions.xml +++ b/src/checkstyle/checkstyle-suppressions.xml @@ -6,4 +6,5 @@ + diff --git a/src/checkstyle/checkstyle.xml b/src/checkstyle/checkstyle.xml index e6875806..71ca7f32 100644 --- a/src/checkstyle/checkstyle.xml +++ b/src/checkstyle/checkstyle.xml @@ -19,52 +19,52 @@ - - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -72,23 +72,23 @@ - - - - - - - + + + + + + - - - - - - - + + + + + + + @@ -118,10 +118,12 @@ - - - - + + + + + + @@ -147,23 +149,23 @@ - - - - - + + + + + - - - - - - - - - - + + + + + + + + + + diff --git a/src/checkstyle/fixFinal.gradle b/src/checkstyle/fixFinal.gradle new file mode 100644 index 00000000..09702f97 --- /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') || line.contains('@Deprecated')) { + onNextLine = true; + } + else { + line = line.replaceFirst('class', 'final class') + + println "Fixed line $line" + + error = finalErrors[errorInx++] + } + } + + outSource += line + System.lineSeparator() + } + file.write(outSource) + println() + } + } + } +} diff --git a/src/checkstyle/fixWhiteAround.gradle b/src/checkstyle/fixWhiteAround.gradle new file mode 100644 index 00000000..94cf0281 --- /dev/null +++ b/src/checkstyle/fixWhiteAround.gradle @@ -0,0 +1,64 @@ +task fixWhiteAround << { + 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 thisErrors = [] + errors.each { error -> + if (error.@source == 'com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAfterCheck' || + error.@source == 'com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAroundCheck') { + thisErrors.add(error) + } + } + if (thisErrors) { + def errorInx = 0 + def error = thisErrors[errorInx++] + def file = new File(f.@name) + println "Fixing file $file ..." + boolean headerFixed + 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 (error && ln == (error.@line as int)) { + def message = error.@message + + def index = (error.@column as int) - 1 + def chars = line.toCharArray() + for (int i = 0; i < index; i++) { + if (chars[i] == '\t') { // tabs before code == 8 + index -= 7; + } + else if (chars[i] != ' ') { // tabs after code start are only counted as 1 + break; + } + } + + line = line.substring(0, index) + ' ' + line.substring(index) + + println "Fixed line $line" + + while (error && ln == (error.@line as int)) { + error = thisErrors[errorInx++] + } + } + + outSource += line + System.lineSeparator() + } + file.write(outSource) + println() + } + } + } +} diff --git a/src/reference/asciidoc/amqp.adoc b/src/reference/asciidoc/amqp.adoc index fdeb4a8a..e9152e0b 100644 --- a/src/reference/asciidoc/amqp.adoc +++ b/src/reference/asciidoc/amqp.adoc @@ -1345,7 +1345,7 @@ public class MyService { } @RabbitListener(bindings = @QueueBinding( - value = @Queue(), + value = @Queue, exchange = @Exchange(value = "auto.exch"), key = "invoiceRoutingKey") ) @@ -1356,7 +1356,8 @@ public class MyService { } ---- -In the first example, a queue `myQueue` will be declared automatically (durable) together with the exchange, if needed, and bound to the exchange with the routing key. +In the first example, a queue `myQueue` will be declared automatically (durable) together with the exchange, if needed, +and bound to the exchange with the routing key. In the second example, an anonymous (exclusive, auto-delete) queue will be declared and bound. Multiple `QueueBinding` entries can be provided, allowing the listener to listen to multiple queues.