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 | 6d5667361a7790726b30d55b8d02ddbfda0fbc16 (patch) | |
| tree | e8004bb1b1c727219ff8ab5bb8697e4b6603d8af /java/common/src/main | |
| parent | 2a52a4bc7e34dee86612f5a05fea06c2452121d5 (diff) | |
| download | qpid-python-6d5667361a7790726b30d55b8d02ddbfda0fbc16.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/qpid@1091507 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/common/src/main')
| -rw-r--r-- | java/common/src/main/java/org/apache/qpid/transport/Session.java | 30 |
1 files changed, 29 insertions, 1 deletions
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<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); |
