diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2011-04-12 17:24:10 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2011-04-12 17:24:10 +0000 |
commit | f914dd107474b33fd900f9e7008d5db27f3563dc (patch) | |
tree | 7a960cd8671858d9f830124f1e934952b42ece57 | |
parent | 2b36efb651ffc14e1ad5081c8a7d6f8707342008 (diff) | |
download | qpid-python-f914dd107474b33fd900f9e7008d5db27f3563dc.tar.gz |
QPID-3205
Added the nessacery null checks to avoid a NPE due to missing delivery props or headers all together.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1091507 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java index d961507382..b3c335ae68 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java @@ -42,7 +42,10 @@ import static org.apache.qpid.util.Serial.max; import static org.apache.qpid.util.Strings.toUTF8; import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; @@ -262,7 +265,32 @@ public class Session extends SessionInvoker } else if (m instanceof MessageTransfer) { - ((MessageTransfer)m).getHeader().get(DeliveryProperties.class).setRedelivered(true); + MessageTransfer xfr = (MessageTransfer)m; + + if (xfr.getHeader() != null) + { + if (xfr.getHeader().get(DeliveryProperties.class) != null) + { + xfr.getHeader().get(DeliveryProperties.class).setRedelivered(true); + } + else + { + Struct[] structs = xfr.getHeader().getStructs(); + DeliveryProperties deliveryProps = new DeliveryProperties(); + deliveryProps.setRedelivered(true); + + List<Struct> list = Arrays.asList(structs); + list.add(deliveryProps); + xfr.setHeader(new Header(list)); + } + + } + else + { + DeliveryProperties deliveryProps = new DeliveryProperties(); + deliveryProps.setRedelivered(true); + xfr.setHeader(new Header(deliveryProps)); + } } sessionCommandPoint(m.getId(), 0); send(m); |