QPID-8549: [Broker-J] Improve null checks

This closes #100
diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfiguredObjectRecord.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfiguredObjectRecord.java
index 3a6a9f0..715823d 100644
--- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfiguredObjectRecord.java
+++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfiguredObjectRecord.java
@@ -111,7 +111,10 @@
     @Override
     public String toString()
     {
-        return "BDBConfiguredObjectRecord [id=" + _id + ", type=" + _type + ", name=" + (_attributes == null ? null : _attributes.get("name")) + ", parents=" + _parents + "]";
+        return String.format(
+                "BDBConfiguredObjectRecord [id=%s, type=%s, name=%s, parents=%s]",
+                _id, _type, (_attributes == null ? "null" : _attributes.get("name")), _parents
+        );
     }
 
 }
diff --git a/broker-core/src/main/java/org/apache/qpid/server/consumer/AbstractConsumerTarget.java b/broker-core/src/main/java/org/apache/qpid/server/consumer/AbstractConsumerTarget.java
index 13d5e15..6733ed4 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/consumer/AbstractConsumerTarget.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/consumer/AbstractConsumerTarget.java
@@ -256,9 +256,9 @@
             }
         }
 
-        if (messageContainer != null)
+        if (consumer != null && messageContainer != null)
         {
-            MessageInstance entry = messageContainer.getMessageInstance();
+            final MessageInstance entry = messageContainer.getMessageInstance();
             try
             {
                 send(consumer, entry, false);
@@ -281,7 +281,7 @@
                         case ROUTE_TO_ALTERNATE:
                             if (consumer.acquires())
                             {
-                                int enqueues = entry.routeToAlternate(null, null, null);
+                                final int enqueues = entry.routeToAlternate(null, null, null);
                                 if (enqueues == 0)
                                 {
                                     LOGGER.info("Failed to convert message {} for this consumer because '{}'."
diff --git a/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java b/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java
index 06803a7..04bb11a 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java
@@ -251,14 +251,20 @@
     
     private Object getKey(QueueEntry entry)
     {
-        ServerMessage message = entry.getMessage();
-        AMQMessageHeader messageHeader = message == null ? null : message.getMessageHeader();
-        Object groupVal = messageHeader == null
-                ? _defaultGroup
-                : _groupId == null
-                        ? messageHeader.getGroupId()
-                        : messageHeader.getHeader(_groupId);
-        if(groupVal == null)
+        final ServerMessage message = entry.getMessage();
+        final AMQMessageHeader messageHeader = message == null ? null : message.getMessageHeader();
+        Object groupVal;
+        if (messageHeader == null)
+        {
+            groupVal = _defaultGroup;
+        }
+        else
+        {
+            groupVal = _groupId == null
+                    ? messageHeader.getGroupId()
+                    : messageHeader.getHeader(_groupId);
+        }
+        if (groupVal == null)
         {
             groupVal = _defaultGroup;
         }
diff --git a/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java b/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java
index 3babb1b..a41a265 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java
@@ -23,6 +23,7 @@
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.queue.SortedQueueEntry.Colour;
 import org.apache.qpid.server.store.MessageEnqueueRecord;
+import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
 
 /**
  * A sorted implementation of QueueEntryList.
@@ -84,7 +85,7 @@
     private void insert(final SortedQueueEntry entry)
     {
         SortedQueueEntry node;
-        if((node = _root) == null)
+        if ((node = _root) == null)
         {
             _root = entry;
             _head.setNext(entry);
@@ -94,10 +95,10 @@
         else
         {
             SortedQueueEntry parent = null;
-            while(node != null)
+            while (node != null)
             {
                 parent = node;
-                if(entry.compareTo(node) < 0)
+                if (entry.compareTo(node) < 0)
                 {
                     node = node.getLeft();
                 }
@@ -106,9 +107,13 @@
                     node = node.getRight();
                 }
             }
+            if (parent == null)
+            {
+                throw new ConnectionScopedRuntimeException("Failed to insert an entry, parent not found");
+            }
             entry.setParent(parent);
 
-            if(entry.compareTo(parent) < 0)
+            if (entry.compareTo(parent) < 0)
             {
                 parent.setLeft(entry);
                 final SortedQueueEntry prev = parent.getPrev();
@@ -125,7 +130,7 @@
                 entry.setNext(next);
                 parent.setNext(entry);
 
-                if(next != null)
+                if (next != null)
                 {
                     next.setPrev(entry);
                 }
diff --git a/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngine.java b/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngine.java
index 56a0fa6..85e79fb 100755
--- a/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngine.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngine.java
@@ -24,14 +24,18 @@
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.security.cert.Certificate;
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.Iterator;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 
 import javax.security.auth.Subject;
 
+import org.apache.qpid.server.util.ServerScopedRuntimeException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -402,10 +406,10 @@
                 _header.put(msgheader);
             }
 
-            if(!_header.hasRemaining())
+            if (!_header.hasRemaining())
             {
                 _header.flip();
-                byte[] headerBytes = new byte[MINIMUM_REQUIRED_HEADER_BYTES];
+                final byte[] headerBytes = new byte[MINIMUM_REQUIRED_HEADER_BYTES];
                 _header.get(headerBytes);
 
 
@@ -416,25 +420,25 @@
 
                 //Check the supported versions for a header match, and if there is one save the
                 //delegate. Also save most recent supported version and associated reply header bytes
-                for(int i = 0; newDelegate == null && i < _creators.length; i++)
+                for (int i = 0; newDelegate == null && i < _creators.length; i++)
                 {
                     final ProtocolEngineCreator creator = _creators[i];
-                    if(_supported.contains(creator.getVersion()))
+                    if (_supported.contains(creator.getVersion()))
                     {
                         supportedReplyBytes = creator.getHeaderIdentifier();
                         supportedReplyVersion = creator.getVersion();
-                        byte[] compareBytes = creator.getHeaderIdentifier();
+                        final byte[] compareBytes = creator.getHeaderIdentifier();
                         boolean equal = true;
-                        for(int j = 0; equal && j<compareBytes.length; j++)
+                        for (int j = 0; equal && j<compareBytes.length; j++)
                         {
                             equal = headerBytes[j] == compareBytes[j];
                         }
-                        if(equal)
+                        if (equal)
                         {
                             newDelegate = creator.newProtocolEngine(_broker,
                                                                     _network, _port, _transport, _id,
                                                                     _aggregateTicker);
-                            if(newDelegate == null && creator.getSuggestedAlternativeHeader() != null)
+                            if (newDelegate == null && creator.getSuggestedAlternativeHeader() != null)
                             {
                                 defaultSupportedReplyBytes = creator.getSuggestedAlternativeHeader();
                             }
@@ -443,17 +447,17 @@
 
                     //If there is a configured default reply to an unsupported version initiation,
                     //then save the associated reply header bytes when we encounter them
-                    if(defaultSupportedReplyBytes == null && _defaultSupportedReply != null && creator.getVersion() == _defaultSupportedReply)
+                    if (defaultSupportedReplyBytes == null && _defaultSupportedReply != null && creator.getVersion() == _defaultSupportedReply)
                     {
                         defaultSupportedReplyBytes = creator.getHeaderIdentifier();
                     }
                 }
 
                 // If no delegate is found then send back a supported protocol version id
-                if(newDelegate == null)
+                if (newDelegate == null)
                 {
                     //if a default reply was specified use its reply header instead of the most recent supported version
-                    if(_defaultSupportedReply != null && !(_defaultSupportedReply == supportedReplyVersion))
+                    if (_defaultSupportedReply != null && !(_defaultSupportedReply == supportedReplyVersion))
                     {
                         LOGGER.debug("Default reply to unsupported protocol version was configured, changing reply from {} to {}",
                                       supportedReplyVersion, _defaultSupportedReply);
@@ -464,7 +468,16 @@
 
                     _broker.getEventLogger().message(new PortLogSubject(_port),
                                                      PortMessages.UNSUPPORTED_PROTOCOL_HEADER(Functions.str(headerBytes),
-                                                                                              supportedReplyVersion.toString()));
+                                                                                              String.valueOf(supportedReplyVersion)));
+
+                    if (supportedReplyBytes == null)
+                    {
+                        ProtocolEngineCreator protocol = Arrays.stream(_creators)
+                                .filter(creator -> creator.getVersion().isAMQP() && _supported.contains(creator.getVersion()))
+                                .max((creator1, creator2) -> creator1.getVersion().ordinal() - creator2.getVersion().ordinal())
+                                .orElseThrow(() -> new ServerScopedRuntimeException("All AMQP protocols are disabled"));
+                        supportedReplyBytes = protocol.getHeaderIdentifier();
+                    }
 
                     try (QpidByteBuffer supportedReplyBuf = QpidByteBuffer.allocateDirect(supportedReplyBytes.length))
                     {
@@ -472,6 +485,7 @@
                         supportedReplyBuf.flip();
                         _sender.send(supportedReplyBuf);
                     }
+
                     _sender.flush();
 
                     _delegate = new ClosedDelegateProtocolEngine();
@@ -481,7 +495,7 @@
                 }
                 else
                 {
-                    boolean hasWork = _delegate.hasWork();
+                    final boolean hasWork = _delegate.hasWork();
                     if (hasWork)
                     {
                         newDelegate.notifyWork();
@@ -493,14 +507,14 @@
                     _delegate.received(_header);
                     _header.dispose();
 
-                    Certificate peerCertificate = _network.getPeerCertificate();
-                    if(peerCertificate != null && _port.getClientCertRecorder() != null)
+                    final Certificate peerCertificate = _network.getPeerCertificate();
+                    if (peerCertificate != null && _port.getClientCertRecorder() != null)
                     {
                         ((ManagedPeerCertificateTrustStore)(_port.getClientCertRecorder())).addCertificate(peerCertificate);
                     }
 
 
-                    if(msg.hasRemaining())
+                    if (msg.hasRemaining())
                     {
                         _delegate.received(msg);
                     }
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0Impl.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0Impl.java
index bce5b85..a7b6c81 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0Impl.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0Impl.java
@@ -926,12 +926,12 @@
 
         try
         {
-            boolean registerSucceeded = addressSpace.registerConnection(this, (existingConnections, newConnection) ->
+            final boolean registerSucceeded = addressSpace.registerConnection(this, (existingConnections, newConnection) ->
             {
                 boolean proceedWithRegistration = true;
                 if (newConnection instanceof AMQPConnection_1_0Impl && !newConnection.isClosing())
                 {
-                    List<ListenableFuture<Void>> rescheduleFutures = new ArrayList<>();
+                    final List<ListenableFuture<Void>> rescheduleFutures = new ArrayList<>();
                     for (AMQPConnection<?> existingConnection : StreamSupport.stream(existingConnections.spliterator(), false)
                             .filter(con -> con instanceof AMQPConnection_1_0)
                             .filter(con -> !con.isClosing())
@@ -953,10 +953,10 @@
                         if (SoleConnectionEnforcementPolicy.REFUSE_CONNECTION.equals(soleConnectionEnforcementPolicy))
                         {
                             _properties.put(Symbol.valueOf("amqp:connection-establishment-failed"), true);
-                            Error error = new Error(AmqpError.INVALID_FIELD,
+                            final Error error = new Error(AmqpError.INVALID_FIELD,
                                     String.format(
                                             "Connection closed due to sole-connection-enforcement-policy '%s'",
-                                            soleConnectionEnforcementPolicy.toString()));
+                                            String.valueOf(soleConnectionEnforcementPolicy)));
                             error.setInfo(Collections.singletonMap(Symbol.valueOf("invalid-field"), Symbol.valueOf("container-id")));
                             newConnection.doOnIOThreadAsync(() -> ((AMQPConnection_1_0Impl) newConnection).closeConnection(error));
                             proceedWithRegistration = false;
@@ -967,7 +967,7 @@
                             final Error error = new Error(AmqpError.RESOURCE_LOCKED,
                                     String.format(
                                             "Connection closed due to sole-connection-enforcement-policy '%s'",
-                                            soleConnectionEnforcementPolicy.toString()));
+                                            String.valueOf(soleConnectionEnforcementPolicy)));
                             error.setInfo(Collections.singletonMap(Symbol.valueOf("sole-connection-enforcement"), true));
                             rescheduleFutures.add(existingConnection.doOnIOThreadAsync(
                                     () -> ((AMQPConnection_1_0Impl) existingConnection).closeConnection(error)));
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java
index 5f9283e..9e1d168 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java
@@ -458,7 +458,7 @@
                 {
                     txn = _linkEndpoint.getTransaction(transactionId);
                     getSession().getConnection().registerTransactedMessageDelivered();
-                    TransactionLogResource owningResource = _queueEntry.getOwningResource();
+                    final TransactionLogResource owningResource = _queueEntry.getOwningResource();
                     if (owningResource instanceof TransactionMonitor)
                     {
                         ((TransactionMonitor) owningResource).registerTransaction(txn);
@@ -482,11 +482,13 @@
                 txn = null;
             }
 
-            if(outcome instanceof Accepted)
+            if (txn != null)
             {
-                if (_queueEntry.makeAcquisitionUnstealable(getConsumer()))
+                if (outcome instanceof Accepted)
                 {
-                    txn.dequeue(_queueEntry.getEnqueueRecord(),
+                    if (_queueEntry.makeAcquisitionUnstealable(getConsumer()))
+                    {
+                        txn.dequeue(_queueEntry.getEnqueueRecord(),
                                 new ServerTransaction.Action()
                                 {
                                     @Override
@@ -504,13 +506,13 @@
 
                                     }
                                 });
-                }
-                txn.addPostTransactionAction(new ServerTransaction.Action()
+                    }
+                    txn.addPostTransactionAction(new ServerTransaction.Action()
                     {
                         @Override
                         public void postCommit()
                         {
-                            if(Boolean.TRUE.equals(settled))
+                            if (Boolean.TRUE.equals(settled))
                             {
                                 _linkEndpoint.settle(_deliveryTag);
                             }
@@ -523,94 +525,94 @@
                         @Override
                         public void onRollback()
                         {
-                            if(Boolean.TRUE.equals(settled))
+                            if (Boolean.TRUE.equals(settled))
                             {
                                 // TODO: apply source's default outcome
                                 applyModifiedOutcome();
                             }
                         }
                     });
-            }
-            else if(outcome instanceof Released)
-            {
-                txn.addPostTransactionAction(new ServerTransaction.Action()
+                }
+                else if (outcome instanceof Released)
                 {
-                    @Override
-                    public void postCommit()
+                    txn.addPostTransactionAction(new ServerTransaction.Action()
                     {
-
-                        _queueEntry.release(getConsumer());
-                        _linkEndpoint.settle(_deliveryTag);
-                    }
-
-                    @Override
-                    public void onRollback()
-                    {
-                        _linkEndpoint.settle(_deliveryTag);
-
-                        // TODO: apply source's default outcome if settled
-                    }
-                });
-            }
-            else if(outcome instanceof Modified)
-            {
-                txn.addPostTransactionAction(new ServerTransaction.Action()
-                {
-                    @Override
-                    public void postCommit()
-                    {
-                        Modified modifiedOutcome = (Modified) outcome;
-                        if (Boolean.TRUE.equals(modifiedOutcome.getUndeliverableHere()))
+                        @Override
+                        public void postCommit()
                         {
-                            _queueEntry.reject(getConsumer());
-                        }
 
-                        if(Boolean.TRUE.equals(modifiedOutcome.getDeliveryFailed()))
-                        {
-                            incrementDeliveryCountOrRouteToAlternateOrDiscard();
-                        }
-                        else
-                        {
                             _queueEntry.release(getConsumer());
+                            _linkEndpoint.settle(_deliveryTag);
                         }
-                        _linkEndpoint.settle(_deliveryTag);
-                    }
 
-                    @Override
-                    public void onRollback()
-                    {
-                        if(Boolean.TRUE.equals(settled))
+                        @Override
+                        public void onRollback()
                         {
-                            // TODO: apply source's default outcome
-                            applyModifiedOutcome();
+                            _linkEndpoint.settle(_deliveryTag);
+
+                            // TODO: apply source's default outcome if settled
                         }
-                    }
-                });
-            }
-            else if (outcome instanceof Rejected)
-            {
-                txn.addPostTransactionAction(new ServerTransaction.Action()
+                    });
+                }
+                else if (outcome instanceof Modified)
                 {
-                    @Override
-                    public void postCommit()
+                    txn.addPostTransactionAction(new ServerTransaction.Action()
                     {
-                        _linkEndpoint.settle(_deliveryTag);
-                        incrementDeliveryCountOrRouteToAlternateOrDiscard();
-                        _linkEndpoint.sendFlowConditional();
-                    }
-
-                    @Override
-                    public void onRollback()
-                    {
-                        if(Boolean.TRUE.equals(settled))
+                        @Override
+                        public void postCommit()
                         {
-                            // TODO: apply source's default outcome
-                            applyModifiedOutcome();
-                        }
-                    }
-                });
-            }
+                            final Modified modifiedOutcome = (Modified) outcome;
+                            if (Boolean.TRUE.equals(modifiedOutcome.getUndeliverableHere()))
+                            {
+                                _queueEntry.reject(getConsumer());
+                            }
 
+                            if (Boolean.TRUE.equals(modifiedOutcome.getDeliveryFailed()))
+                            {
+                                incrementDeliveryCountOrRouteToAlternateOrDiscard();
+                            }
+                            else
+                            {
+                                _queueEntry.release(getConsumer());
+                            }
+                            _linkEndpoint.settle(_deliveryTag);
+                        }
+
+                        @Override
+                        public void onRollback()
+                        {
+                            if (Boolean.TRUE.equals(settled))
+                            {
+                                // TODO: apply source's default outcome
+                                applyModifiedOutcome();
+                            }
+                        }
+                    });
+                }
+                else if (outcome instanceof Rejected)
+                {
+                    txn.addPostTransactionAction(new ServerTransaction.Action()
+                    {
+                        @Override
+                        public void postCommit()
+                        {
+                            _linkEndpoint.settle(_deliveryTag);
+                            incrementDeliveryCountOrRouteToAlternateOrDiscard();
+                            _linkEndpoint.sendFlowConditional();
+                        }
+
+                        @Override
+                        public void onRollback()
+                        {
+                            if (Boolean.TRUE.equals(settled))
+                            {
+                                // TODO: apply source's default outcome
+                                applyModifiedOutcome();
+                            }
+                        }
+                    });
+                }
+            }
             return (transactionId == null && outcome != null);
         }
 
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_from_1_0.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_from_1_0.java
index b744d25..93ab0c3 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_from_1_0.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_from_1_0.java
@@ -26,6 +26,7 @@
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
@@ -78,7 +79,7 @@
 
     static Object convertBodyToObject(final Message_1_0 serverMessage)
     {
-        SectionDecoderImpl sectionDecoder = new SectionDecoderImpl(MessageConverter_v1_0_to_Internal.TYPE_REGISTRY.getSectionDecoderRegistry());
+        final SectionDecoderImpl sectionDecoder = new SectionDecoderImpl(MessageConverter_v1_0_to_Internal.TYPE_REGISTRY.getSectionDecoderRegistry());
 
         Object bodyObject = null;
         List<EncodingRetainingSection<?>> sections = null;
@@ -89,12 +90,13 @@
                 sections = sectionDecoder.parseAll(allData);
             }
 
-            List<EncodingRetainingSection<?>> bodySections = new ArrayList<>(sections.size());
-            ListIterator<EncodingRetainingSection<?>> iterator = sections.listIterator();
+            final int size = sections == null ? 0 : sections.size();
+            final List<EncodingRetainingSection<?>> bodySections = new ArrayList<>(size);
+            final ListIterator<EncodingRetainingSection<?>> iterator = sections == null ? Collections.emptyListIterator() : sections.listIterator();
             EncodingRetainingSection<?> previousSection = null;
             while(iterator.hasNext())
             {
-                EncodingRetainingSection<?> section = iterator.next();
+                final EncodingRetainingSection<?> section = iterator.next();
                 if (section instanceof AmqpValueSection || section instanceof DataSection || section instanceof AmqpSequenceSection)
                 {
                     if (previousSection != null && (previousSection.getClass() != section.getClass() || section instanceof AmqpValueSection))
@@ -112,20 +114,20 @@
             // In 1.0 of the spec, it is illegal to have message with no body but AMQP-127 asks to have that restriction lifted
             if (!bodySections.isEmpty())
             {
-                EncodingRetainingSection<?> firstBodySection = bodySections.get(0);
-                if(firstBodySection instanceof AmqpValueSection)
+                final EncodingRetainingSection<?> firstBodySection = bodySections.get(0);
+                if (firstBodySection instanceof AmqpValueSection)
                 {
                     bodyObject = convertValue(firstBodySection.getValue());
                 }
                 else if(firstBodySection instanceof DataSection)
                 {
                     int totalSize = 0;
-                    for(EncodingRetainingSection<?> section : bodySections)
+                    for (EncodingRetainingSection<?> section : bodySections)
                     {
                         totalSize += ((DataSection)section).getValue().getArray().length;
                     }
-                    byte[] bodyData = new byte[totalSize];
-                    ByteBuffer buf = ByteBuffer.wrap(bodyData);
+                    final byte[] bodyData = new byte[totalSize];
+                    final ByteBuffer buf = ByteBuffer.wrap(bodyData);
                     for(EncodingRetainingSection<?> section : bodySections)
                     {
                         buf.put(((DataSection) section).getValue().asByteBuffer());
@@ -134,7 +136,7 @@
                 }
                 else
                 {
-                    ArrayList<Object> totalSequence = new ArrayList<>();
+                    final ArrayList<Object> totalSequence = new ArrayList<>();
                     for(EncodingRetainingSection<?> section : bodySections)
                     {
                         totalSequence.addAll(((AmqpSequenceSection)section).getValue());
diff --git a/tools/src/main/java/org/apache/qpid/tools/StressTestClient.java b/tools/src/main/java/org/apache/qpid/tools/StressTestClient.java
index 327a754..b4e847b 100644
--- a/tools/src/main/java/org/apache/qpid/tools/StressTestClient.java
+++ b/tools/src/main/java/org/apache/qpid/tools/StressTestClient.java
@@ -406,7 +406,11 @@
                                             {
                                                 System.out.println(CLASS + ": Consuming Message " + cs);
                                             }
-                                            Message msg = consumer.receive(recieveTimeout);
+                                            Message msg = null;
+                                            if (consumer != null)
+                                            {
+                                                msg = consumer.receive(recieveTimeout);
+                                            }
 
                                             if (sess.getTransacted() && cs % txBatch == 0)
                                             {
diff --git a/tools/src/main/java/org/apache/qpid/tools/util/ArgumentsParser.java b/tools/src/main/java/org/apache/qpid/tools/util/ArgumentsParser.java
index a71b466..e9c4110 100644
--- a/tools/src/main/java/org/apache/qpid/tools/util/ArgumentsParser.java
+++ b/tools/src/main/java/org/apache/qpid/tools/util/ArgumentsParser.java
@@ -133,7 +133,7 @@
     public void usage(Class<?> objectClass, Set<String> requiredFields)
     {
         System.out.println("Supported arguments:");
-        Field[] fields = objectClass.getDeclaredFields();
+        final Field[] fields = objectClass.getDeclaredFields();
 
         Object object = null;
         try
@@ -147,7 +147,7 @@
 
         for (int i = 0 ; i< fields.length ; i++)
         {
-            Field field = fields[i];
+            final Field field = fields[i];
             if (!Modifier.isFinal(field.getModifiers()))
             {
                 Object defaultValue = null;
@@ -163,7 +163,7 @@
 
                 System.out.println("    " + field.getName()  + " ( type: "
                         + field.getType().getSimpleName().toLowerCase()
-                        + (object != null ? ", default: " + defaultValue : "")
+                        + (object != null ? ", default: " + String.valueOf(defaultValue) : "")
                         + (requiredFields != null && requiredFields.contains(field.getName()) ? ", mandatory" : "")
                         + ")");
             }