From f79decd5edc925aefebac3a5b93c04192a84f9c7 Mon Sep 17 00:00:00 2001 From: Martin Ritchie Date: Tue, 18 Mar 2008 12:33:34 +0000 Subject: QPID-847 : Prevented the InvalidArgumentException from closing the connection. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1@638346 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/qpid/client/AMQAuthenticationException.java | 5 +++++ .../src/main/java/org/apache/qpid/client/AMQConnection.java | 12 +++++++++++- java/common/src/main/java/org/apache/qpid/AMQException.java | 5 +++++ .../java/org/apache/qpid/AMQInvalidArgumentException.java | 6 ++++++ .../main/java/org/apache/qpid/AMQUndeliveredException.java | 6 ++++++ 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQAuthenticationException.java b/java/client/src/main/java/org/apache/qpid/client/AMQAuthenticationException.java index b6fbb6c6bf..8f90a0bdfa 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQAuthenticationException.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQAuthenticationException.java @@ -39,4 +39,9 @@ public class AMQAuthenticationException extends AMQException { super(error, msg); } + public boolean isHardError() + { + return false; + } + } 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 8cbcda053b..4b8143cfb5 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 @@ -1301,7 +1301,7 @@ public class AMQConnection extends Closeable implements Connection, QueueConnect _logger.error("Throwable Received but no listener set: " + cause.getMessage()); } - if (!(cause instanceof AMQUndeliveredException) && !(cause instanceof AMQAuthenticationException)) + if (hardError(cause)) { try { @@ -1325,6 +1325,16 @@ public class AMQConnection extends Closeable implements Connection, QueueConnect } } + private boolean hardError(Throwable cause) + { + if (cause instanceof AMQException) + { + return ((AMQException)cause).isHardError(); + } + + return true; + } + void registerSession(int channelId, AMQSession session) { _sessions.put(channelId, session); diff --git a/java/common/src/main/java/org/apache/qpid/AMQException.java b/java/common/src/main/java/org/apache/qpid/AMQException.java index 41599ed880..00396f6583 100644 --- a/java/common/src/main/java/org/apache/qpid/AMQException.java +++ b/java/common/src/main/java/org/apache/qpid/AMQException.java @@ -98,4 +98,9 @@ public class AMQException extends Exception { return _errorCode; } + + public boolean isHardError() + { + return true; + } } diff --git a/java/common/src/main/java/org/apache/qpid/AMQInvalidArgumentException.java b/java/common/src/main/java/org/apache/qpid/AMQInvalidArgumentException.java index 278128f924..6725c1cfe8 100644 --- a/java/common/src/main/java/org/apache/qpid/AMQInvalidArgumentException.java +++ b/java/common/src/main/java/org/apache/qpid/AMQInvalidArgumentException.java @@ -36,4 +36,10 @@ public class AMQInvalidArgumentException extends AMQException { super(AMQConstant.INVALID_ARGUMENT, message); } + + public boolean isHardError() + { + return false; + } + } diff --git a/java/common/src/main/java/org/apache/qpid/AMQUndeliveredException.java b/java/common/src/main/java/org/apache/qpid/AMQUndeliveredException.java index 03220cc95e..1e2788f9f5 100644 --- a/java/common/src/main/java/org/apache/qpid/AMQUndeliveredException.java +++ b/java/common/src/main/java/org/apache/qpid/AMQUndeliveredException.java @@ -45,4 +45,10 @@ public class AMQUndeliveredException extends AMQException { return _bounced; } + + public boolean isHardError() + { + return false; + } + } -- cgit v1.2.1