summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-09-27 12:13:53 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-09-27 12:13:53 +0000
commit04c5726a17abb7c00e9a846fd368f7236c8ae5f7 (patch)
treef6dc92a734b1682f63101a4c9b8991c5a96854f9 /java
parent37302db75b5a24687c6b94d1af4902f7f572a084 (diff)
downloadqpid-python-04c5726a17abb7c00e9a846fd368f7236c8ae5f7.tar.gz
QPID-5182 : The details of custom error-conditions are not being preserved up to the Error object
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1526864 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java9
-rw-r--r--java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/transport/codec/ErrorConstructor.java52
2 files changed, 60 insertions, 1 deletions
diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
index 5502f88d75..ada100f0a6 100644
--- a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
+++ b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
@@ -306,7 +306,14 @@ public class MessageProducerImpl implements MessageProducer, QueueSender, TopicP
if (action.getOutcome() instanceof Rejected)
{
Error err = ((Rejected) action.getOutcome()).getError();
- throw new MessageRejectedException(err.getDescription(), err.getCondition().toString());
+ if(err != null)
+ {
+ throw new MessageRejectedException(err.getDescription(), err.getCondition().toString());
+ }
+ else
+ {
+ throw new MessageRejectedException("Message was rejected: " + action.getOutcome());
+ }
}
else
{
diff --git a/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/transport/codec/ErrorConstructor.java b/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/transport/codec/ErrorConstructor.java
index 6d745adb7e..510170ae1f 100644
--- a/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/transport/codec/ErrorConstructor.java
+++ b/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/transport/codec/ErrorConstructor.java
@@ -86,6 +86,10 @@ public class ErrorConstructor extends DescribedTypeConstructor<org.apache.qpid.a
if(condition == null)
{
condition = TransactionErrors.valueOf(val);
+ if(condition == null)
+ {
+ condition = new UnknownErrorCondition((Symbol)val);
+ }
}
}
}
@@ -166,4 +170,52 @@ public class ErrorConstructor extends DescribedTypeConstructor<org.apache.qpid.a
}
+ private static final class UnknownErrorCondition implements ErrorCondition
+ {
+ private final Symbol _value;
+
+ public UnknownErrorCondition(final Symbol value)
+ {
+ _value = value;
+ }
+
+ public Symbol getValue()
+ {
+ return _value;
+ }
+
+ @Override
+ public boolean equals(final Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ final UnknownErrorCondition that = (UnknownErrorCondition) o;
+
+ if (!_value.equals(that._value))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return _value.hashCode();
+ }
+
+ @Override
+ public String toString()
+ {
+ return _value.toString();
+ }
+ }
}