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.