Author: kwall
Date: Fri Apr 8 17:49:24 2016
New Revision: 1738271
URL: http://svn.apache.org/viewvc?rev=1738271&view=rev
Log:
QPID-7189: [Java Client] Consistently name the connection delegates
* The previous inconsistency with the naming of 0-91's delegate was caused by
the fact that
AMQP 0-10 implementation misinterpreted 0-91 header.
* Also on the 0-8..0-91 path ensure that a AMQProtocolHeaderException is
promptly reported to the caller (rather than causing a hang).
Added:
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_91.java
- copied, changed from r1738231,
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_9_1.java
Removed:
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_9_1.java
Modified:
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/ProtocolInitiation.java
Modified:
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java?rev=1738271&r1=1738270&r2=1738271&view=diff
==============================================================================
---
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java
(original)
+++
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnection.java
Fri Apr 8 17:49:24 2016
@@ -434,7 +434,7 @@ public class AMQConnection extends Close
}
else if ("0-91".equals(amqpVersion) || "0-9-1".equals(amqpVersion))
{
- _delegate = new AMQConnectionDelegate_9_1(this);
+ _delegate = new AMQConnectionDelegate_0_91(this);
}
else
{
@@ -634,15 +634,14 @@ public class AMQConnection extends Close
}
// reset state waiter state
- _protocolHandler.getStateManager().clearLastException();
+ _protocolHandler.getStateManager().clearLastException();
_protocolHandler.getStateManager().changeState(AMQState.CONNECTION_NOT_STARTED);
-
}
catch (ClassNotFoundException e)
{
throw new AMQProtocolException
(AMQConstant.UNSUPPORTED_CLIENT_PROTOCOL_ERROR,
- String.format("Protocol: %s.%s is rquired by the broker but
is not " +
+ String.format("Protocol: %s.%s is required by the broker but
is not " +
"currently supported by this client library
implementation",
pe.getMajorVersion(), pe.getMinorVersion()),
e);
Modified:
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java?rev=1738271&r1=1738270&r2=1738271&view=diff
==============================================================================
---
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
(original)
+++
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
Fri Apr 8 17:49:24 2016
@@ -235,7 +235,16 @@ public class AMQConnectionDelegate_0_10
}
catch (ProtocolVersionException pe)
{
- return ProtocolVersion.get(pe.getMajor(), pe.getMinor());
+ if (pe.getMajor() == 9 && pe.getMinor() == 1)
+ {
+ // 0-10 misinterprets 0-91's header (major/minor/revision) by
treating minor as the major, and
+ // revision as the minor. Correct this so that we find the
correct delegate.
+ return ProtocolVersion.v0_91;
+ }
+ else
+ {
+ return ProtocolVersion.get(pe.getMajor(), pe.getMinor());
+ }
}
catch (ConnectionException ce)
{
Copied:
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_91.java
(from r1738231,
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_9_1.java)
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_91.java?p2=qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_91.java&p1=qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_9_1.java&r1=1738231&r2=1738271&rev=1738271&view=diff
==============================================================================
---
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_9_1.java
(original)
+++
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_91.java
Fri Apr 8 17:49:24 2016
@@ -23,10 +23,10 @@ package org.apache.qpid.client;
import org.apache.qpid.framing.ProtocolVersion;
-public class AMQConnectionDelegate_9_1 extends AMQConnectionDelegate_8_0
+public class AMQConnectionDelegate_0_91 extends AMQConnectionDelegate_8_0
{
- public AMQConnectionDelegate_9_1(AMQConnection conn)
+ public AMQConnectionDelegate_0_91(AMQConnection conn)
{
super(conn);
}
Modified:
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java?rev=1738271&r1=1738270&r2=1738271&view=diff
==============================================================================
---
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java
(original)
+++
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java
Fri Apr 8 17:49:24 2016
@@ -52,6 +52,7 @@ import org.apache.qpid.framing.AMQBody;
import org.apache.qpid.framing.AMQDataBlock;
import org.apache.qpid.framing.AMQFrame;
import org.apache.qpid.framing.AMQMethodBody;
+import org.apache.qpid.framing.AMQProtocolHeaderException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.ConnectionCloseBody;
import org.apache.qpid.framing.ConnectionCloseOkBody;
@@ -478,17 +479,21 @@ public class AMQProtocolHandler implemen
// We get here if the server sends a response to our
initial protocol header
// suggesting an alternate ProtocolVersion; the server
will then close the
// connection.
- ProtocolInitiation protocolInit = (ProtocolInitiation)
message;
- ProtocolVersion checkedVersion =
protocolInit.checkVersion();
- _logger.info("Broker suggested using protocol version: {}
", checkedVersion);
-
- // Create protocol version from reported major and minor
versions
- // in order to use them on delegate instantiation.
- // Currently delegate classes are named based on reported
major and minor versions.
- _suggestedProtocolVersion =
ProtocolVersion.get(protocolInit.getProtocolMajor(),
protocolInit.getProtocolMinor());
+ try
+ {
+ ProtocolInitiation protocolInit = (ProtocolInitiation)
message;
+ _suggestedProtocolVersion =
protocolInit.checkVersion();
+ _logger.debug("Broker suggested using protocol
version: {} ", _suggestedProtocolVersion);
+
+ // get round a bug in old versions of qpid whereby the
connection is not closed
+ _stateManager.changeState(AMQState.CONNECTION_CLOSED);
- // get round a bug in old versions of qpid whereby the
connection is not closed
- _stateManager.changeState(AMQState.CONNECTION_CLOSED);
+ }
+ catch (AMQProtocolHeaderException e)
+ {
+ _stateManager.error(e);
+ throw e;
+ }
}
}
}
Modified:
qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/ProtocolInitiation.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/ProtocolInitiation.java?rev=1738271&r1=1738270&r2=1738271&view=diff
==============================================================================
---
qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/ProtocolInitiation.java
(original)
+++
qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/ProtocolInitiation.java
Fri Apr 8 17:49:24 2016
@@ -204,8 +204,9 @@ public class ProtocolInitiation extends
if (!pv.isSupported())
{
// TODO: add list of available versions in list to msg...
- throw new AMQProtocolVersionException("Protocol version " +
- _protocolMajor + "." +
_protocolMinor + " not suppoerted by this version of the Qpid broker.", null);
+ throw new AMQProtocolVersionException("Protocol version " +
_protocolMajor + "."
+ + _protocolMinor
+ + " not supported.", null);
}
return pv;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]