summaryrefslogtreecommitdiff
path: root/qpid/java/client
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2013-02-28 00:08:07 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2013-02-28 00:08:07 +0000
commit8ba26143ef15381faefada81906b64f83cb09403 (patch)
treee5f19e3dd6db4d2e2dd22057a401c65057ecdd55 /qpid/java/client
parent119554c72479af7ecaeafd12d0f840c8fb50f415 (diff)
downloadqpid-python-8ba26143ef15381faefada81906b64f83cb09403.tar.gz
QPID-4608 Moved the exception handling code to a method. The method also
checks for authorization denied exceptions and throws a JMSSecurityException instead of a regular JMSException. This allows applications that are specifically looking for authorization failures to handle that situation.There will not be any changes required for other applications. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1451047 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/client')
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java42
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java6
2 files changed, 26 insertions, 22 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
index 91a6389214..f93b58f92f 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
@@ -59,6 +59,7 @@ import org.apache.qpid.transport.TransportException;
import javax.jms.*;
import javax.jms.IllegalStateException;
+
import java.io.Serializable;
import java.net.URISyntaxException;
import java.text.MessageFormat;
@@ -831,7 +832,7 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
}
catch (AMQException e)
{
- throw new JMSAMQException("Exception during commit: " + e.getMessage() + ":" + e.getCause(), e);
+ throw toJMSException("Exception during commit: " + e.getMessage() + ":" + e.getCause(), e);
}
catch (FailoverException e)
{
@@ -1007,10 +1008,7 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
}
catch(AMQException e)
{
- JMSException ex = new JMSException("Error when verifying destination");
- ex.initCause(e);
- ex.setLinkedException(e);
- throw ex;
+ throw toJMSException("Error when verifying destination",e);
}
catch(TransportException e)
{
@@ -1434,12 +1432,9 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
new FieldTable(), result.getExchangeName(), result);
return result;
}
- catch (Exception e)
+ catch (AMQException e)
{
- JMSException jmse = new JMSException("Cannot create temporary queue");
- jmse.setLinkedException(e);
- jmse.initCause(e);
- throw jmse;
+ throw toJMSException("Cannot create temporary queue",e);
}
}
@@ -1740,7 +1735,7 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
}
catch (AMQException e)
{
- throw new JMSAMQException("Recover failed: " + e.getMessage(), e);
+ throw toJMSException("Recover failed: " + e.getMessage(), e);
}
catch (FailoverException e)
{
@@ -1826,7 +1821,7 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
}
catch (AMQException e)
{
- throw new JMSAMQException("Failed to rollback: " + e, e);
+ throw toJMSException("Failed to rollback: " + e, e);
}
catch (FailoverException e)
{
@@ -2015,10 +2010,7 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
close(-1, false);
}
- JMSException ex = new JMSException("Error registering consumer: " + e);
- ex.setLinkedException(e);
- ex.initCause(e);
- throw ex;
+ throw toJMSException("Error registering consumer: " + e,e);
}
catch (TransportException e)
{
@@ -2753,7 +2745,7 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
}
catch (AMQException e)
{
- throw new JMSAMQException("The queue deletion failed: " + e.getMessage(), e);
+ throw toJMSException("The queue deletion failed: " + e.getMessage(), e);
}
}
@@ -3456,6 +3448,22 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
return code;
}
+ JMSException toJMSException(String message, AMQException e)
+ {
+ JMSException ex;
+ if (e.getErrorCode() == AMQConstant.ACCESS_REFUSED)
+ {
+ ex = new JMSSecurityException(message);
+ }
+ else
+ {
+ ex = new JMSException(message);
+ }
+ ex.initCause(e);
+ ex.setLinkedException(e);
+ return ex;
+ }
+
private boolean isBrowseOnlyDestination(Destination destination)
{
return ((destination instanceof AMQDestination) && ((AMQDestination)destination).isBrowseOnly());
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
index 8490a724bf..2915b25122 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
@@ -691,11 +691,7 @@ public class AMQSession_0_10 extends AMQSession<BasicMessageConsumer_0_10, Basic
}
catch (AMQException e)
{
- JMSException ex = new JMSException("Error creating producer");
- ex.initCause(e);
- ex.setLinkedException(e);
-
- throw ex;
+ throw toJMSException("Error creating producer",e);
}
catch(TransportException e)
{