summaryrefslogtreecommitdiff
path: root/java/client/src
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2011-09-13 00:26:40 +0000
committerRobert Gemmell <robbie@apache.org>2011-09-13 00:26:40 +0000
commit79f25ae18103afc16bd92abf8ed31df1992f13cf (patch)
treeb9421cd313d59d33c0092926ee98fb48dc0c5e40 /java/client/src
parent6c83b9c3c46f31bebcdefc0359b8125391ef6c6f (diff)
downloadqpid-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')
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/AMQConnection.java7
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate.java2
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java13
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java4
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;
}
}