From 6d5667361a7790726b30d55b8d02ddbfda0fbc16 Mon Sep 17 00:00:00 2001 From: Rajith Muditha Attapattu Date: Tue, 12 Apr 2011 17:24:10 +0000 Subject: 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/qpid@1091507 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/qpid/transport/Session.java | 30 +++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'java') diff --git a/java/common/src/main/java/org/apache/qpid/transport/Session.java b/java/common/src/main/java/org/apache/qpid/transport/Session.java index d961507382..b3c335ae68 100644 --- a/java/common/src/main/java/org/apache/qpid/transport/Session.java +++ b/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 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); -- cgit v1.2.1