summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2008-03-18 12:33:34 +0000
committerMartin Ritchie <ritchiem@apache.org>2008-03-18 12:33:34 +0000
commitf79decd5edc925aefebac3a5b93c04192a84f9c7 (patch)
tree1fa465074f5249ee01034a4a6d06d0c6e657fca8
parentd78c5ab1483b8282105c480aa035a7f39bd08a8c (diff)
downloadqpid-python-f79decd5edc925aefebac3a5b93c04192a84f9c7.tar.gz
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
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/AMQAuthenticationException.java5
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/AMQConnection.java12
-rw-r--r--java/common/src/main/java/org/apache/qpid/AMQException.java5
-rw-r--r--java/common/src/main/java/org/apache/qpid/AMQInvalidArgumentException.java6
-rw-r--r--java/common/src/main/java/org/apache/qpid/AMQUndeliveredException.java6
5 files changed, 33 insertions, 1 deletions
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;
+ }
+
}