diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2013-09-27 12:13:53 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2013-09-27 12:13:53 +0000 |
| commit | 04c5726a17abb7c00e9a846fd368f7236c8ae5f7 (patch) | |
| tree | f6dc92a734b1682f63101a4c9b8991c5a96854f9 /java | |
| parent | 37302db75b5a24687c6b94d1af4902f7f572a084 (diff) | |
| download | qpid-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')
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(); + } + } } |
