diff options
author | Robert Gemmell <robbie@apache.org> | 2011-09-13 00:26:40 +0000 |
---|---|---|
committer | Robert Gemmell <robbie@apache.org> | 2011-09-13 00:26:40 +0000 |
commit | 79f25ae18103afc16bd92abf8ed31df1992f13cf (patch) | |
tree | b9421cd313d59d33c0092926ee98fb48dc0c5e40 /java/client/src | |
parent | 6c83b9c3c46f31bebcdefc0359b8125391ef6c6f (diff) | |
download | qpid-python-79f25ae18103afc16bd92abf8ed31df1992f13cf.tar.gz |
QPID-3428: make the Java broker validate 0-10 Session names, enabling it to satisfy the clients new ClientID verification feature. Misc updates to the clients verification process.
Applied patch from Andrew MacBean
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1169982 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/client/src')
4 files changed, 18 insertions, 8 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java b/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java index d9194a3408..f15af72407 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java @@ -1451,11 +1451,14 @@ public class AMQConnection extends Closeable implements Connection, QueueConnect { try { - _delegate.verifyClientID(); + if (!_delegate.verifyClientID()) + { + throw new AMQException(AMQConstant.ALREADY_EXISTS,"ClientID must be unique"); + } } catch(JMSException e) { - throw new AMQException(AMQConstant.ALREADY_EXISTS,"ClientID must be unique",e); + throw new AMQException(e.getMessage(),e); } } } diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate.java b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate.java index 5acdaaa185..8768f93c8c 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate.java @@ -64,5 +64,5 @@ public interface AMQConnectionDelegate ProtocolVersion getProtocolVersion(); - void verifyClientID() throws JMSException; + boolean verifyClientID() throws JMSException, AMQException; } diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java index 6dfbb969e7..63342bdb26 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java @@ -49,6 +49,7 @@ import org.apache.qpid.transport.ConnectionListener; import org.apache.qpid.transport.ConnectionSettings; import org.apache.qpid.transport.ProtocolVersionException; import org.apache.qpid.transport.SessionDetachCode; +import org.apache.qpid.transport.SessionException; import org.apache.qpid.transport.TransportException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -408,7 +409,7 @@ public class AMQConnectionDelegate_0_10 implements AMQConnectionDelegate, Connec return _qpidConnection; } - public void verifyClientID() throws JMSException + public boolean verifyClientID() throws JMSException, AMQException { int prefetch = (int)_conn.getMaxPrefetch(); AMQSession_0_10 ssn = (AMQSession_0_10)createSession(false, 1,prefetch,prefetch,_conn.getClientID()); @@ -417,13 +418,19 @@ public class AMQConnectionDelegate_0_10 implements AMQConnectionDelegate, Connec { ssn_0_10.awaitOpen(); } - catch(Exception e) + catch(SessionException se) { + //if due to non unique client id for user return false, otherwise wrap and re-throw. if (ssn_0_10.getDetachCode() != null && ssn_0_10.getDetachCode() == SessionDetachCode.SESSION_BUSY) { - throw new JMSException("ClientID must be unique"); + return false; + } + else + { + throw new AMQException(AMQConstant.INTERNAL_ERROR, "Unexpected SessionException thrown while awaiting session opening", se); } } + return true; } } diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java index 948f5178a6..92f9ebe07c 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java @@ -351,8 +351,8 @@ public class AMQConnectionDelegate_8_0 implements AMQConnectionDelegate return ProtocolVersion.v8_0; } - public void verifyClientID() throws JMSException + public boolean verifyClientID() throws JMSException { - // NOOP + return true; } } |