Author: rgodfrey
Date: Mon Jul  6 16:37:22 2015
New Revision: 1689451

URL: http://svn.apache.org/r1689451
Log:
QPID-6624 : [Java Broker] If the default reply is not a supported protocol 
version - use the latest supported version instead

Removed:
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactoryTest.java
Modified:
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngine.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngineFactory.java

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java?rev=1689451&r1=1689450&r2=1689451&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
 Mon Jul  6 16:37:22 2015
@@ -398,12 +398,23 @@ public class AmqpPortImpl extends Abstra
 
     private Protocol getDefaultAmqpSupportedReply()
     {
-        String defaultAmqpSupportedReply = 
System.getProperty(BrokerProperties.PROPERTY_DEFAULT_SUPPORTED_PROTOCOL_REPLY);
+        String defaultAmqpSupportedReply = 
getContextKeys(false).contains(BrokerProperties.PROPERTY_DEFAULT_SUPPORTED_PROTOCOL_REPLY)
 ?
+                getContextValue(String.class, 
BrokerProperties.PROPERTY_DEFAULT_SUPPORTED_PROTOCOL_REPLY) : null;
+        Protocol protocol = null;
         if (defaultAmqpSupportedReply != null && 
defaultAmqpSupportedReply.length() != 0)
         {
-            return Protocol.valueOf("AMQP_" + 
defaultAmqpSupportedReply.substring(1));
+            protocol = Protocol.valueOf("AMQP_" + 
defaultAmqpSupportedReply.substring(1));
         }
-        return null;
+        final Set<Protocol> protocolSet = getProtocols();
+        if(protocol != null && !protocolSet.contains(protocol))
+        {
+            LOGGER.warn("The configured default reply ({}) to an unsupported 
protocol version initiation is not"
+                         + " supported on this port.  Only the following 
versions are supported: {}",
+                         defaultAmqpSupportedReply, protocolSet);
+
+            protocol = null;
+        }
+        return protocol;
     }
 
     public static Set<Protocol> getInstalledProtocols()

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngine.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngine.java?rev=1689451&r1=1689450&r2=1689451&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngine.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngine.java
 Mon Jul  6 16:37:22 2015
@@ -26,6 +26,7 @@ import java.net.SocketAddress;
 import java.nio.ByteBuffer;
 import java.security.cert.Certificate;
 import java.util.Set;
+import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 
@@ -69,7 +70,7 @@ public class MultiVersionProtocolEngine
 
     public MultiVersionProtocolEngine(final Broker<?> broker,
                                       final Set<Protocol> supported,
-                                      final Protocol defaultSupportedReply,
+                                      Protocol defaultSupportedReply,
                                       AmqpPort<?> port,
                                       Transport transport,
                                       final long id,
@@ -78,8 +79,10 @@ public class MultiVersionProtocolEngine
     {
         if(defaultSupportedReply != null && 
!supported.contains(defaultSupportedReply))
         {
-            throw new IllegalArgumentException("The configured default reply 
(" + defaultSupportedReply
-                                             + ") to an unsupported protocol 
version initiation is itself not supported!");
+            _logger.warn("The configured default reply ({}) to an unsupported 
protocol version initiation is not"
+                         + " supported on this port.  Only the following 
versions are supported: {}",
+                         defaultSupportedReply, supported);
+            defaultSupportedReply = null;
         }
 
         _id = id;

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngineFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngineFactory.java?rev=1689451&r1=1689450&r2=1689451&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngineFactory.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/MultiVersionProtocolEngineFactory.java
 Mon Jul  6 16:37:22 2015
@@ -27,6 +27,9 @@ import java.util.List;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.apache.qpid.server.logging.messages.PortMessages;
 import org.apache.qpid.server.logging.subjects.PortLogSubject;
 import org.apache.qpid.server.model.Broker;
@@ -40,6 +43,7 @@ import org.apache.qpid.server.plugin.Qpi
 public class MultiVersionProtocolEngineFactory implements ProtocolEngineFactory
 {
     private static final AtomicLong ID_GENERATOR = new AtomicLong(0);
+    private static final Logger _logger = 
LoggerFactory.getLogger(MultiVersionProtocolEngineFactory.class);
 
     private final Broker<?> _broker;
     private final Set<Protocol> _supported;
@@ -51,15 +55,17 @@ public class MultiVersionProtocolEngineF
             _connectionCountDecrementingTask = new 
ConnectionCountDecrementingTask();
 
     public MultiVersionProtocolEngineFactory(Broker<?> broker,
-                                             final Set<Protocol> 
supportedVersions,
-                                             final Protocol 
defaultSupportedReply,
+                                             Set<Protocol> supportedVersions,
+                                             Protocol defaultSupportedReply,
                                              AmqpPort<?> port,
                                              Transport transport)
     {
         if(defaultSupportedReply != null && 
!supportedVersions.contains(defaultSupportedReply))
         {
-            throw new IllegalArgumentException("The configured default reply 
(" + defaultSupportedReply
-                                             + ") to an unsupported protocol 
version initiation is itself not supported!");
+            _logger.warn("The configured default reply ({}) to an unsupported 
protocol version initiation is not"
+                         + " supported on this port.  Only the following 
versions are supported: {}",
+                         defaultSupportedReply, supportedVersions);
+            defaultSupportedReply = null;
         }
 
         _broker = broker;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to