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 | cfa39e12ce4da0036faffb6f3f397bffb2b9e4cd (patch) | |
| tree | 8e94136aa611f1a9c4967061c75cc1a2ec277c66 | |
| parent | c9626a07e8bcc1f68be7e7791bd28918b3b7b5b7 (diff) | |
| download | qpid-python-cfa39e12ce4da0036faffb6f3f397bffb2b9e4cd.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@1526864 13f79535-47bb-0310-9956-ffa450edef68
2 files changed, 60 insertions, 1 deletions
diff --git a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java index 5502f88d75..ada100f0a6 100644 --- a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java +++ b/qpid/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/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/transport/codec/ErrorConstructor.java b/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/transport/codec/ErrorConstructor.java index 6d745adb7e..510170ae1f 100644 --- a/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/transport/codec/ErrorConstructor.java +++ b/qpid/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(); + } + } } |
