summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2011-04-12 17:24:10 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2011-04-12 17:24:10 +0000
commitf914dd107474b33fd900f9e7008d5db27f3563dc (patch)
tree7a960cd8671858d9f830124f1e934952b42ece57
parent2b36efb651ffc14e1ad5081c8a7d6f8707342008 (diff)
downloadqpid-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.java30
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);