You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/11/25 14:36:12 UTC
camel git commit: CAMEL-9356: Allow delivery receipts with empty
shortMessage field. Thanks to Anshu Avinash for the patch.
Repository: camel
Updated Branches:
refs/heads/master 006b4594a -> ad7f37fab
CAMEL-9356: Allow delivery receipts with empty shortMessage field. Thanks to Anshu Avinash for the patch.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ad7f37fa
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ad7f37fa
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ad7f37fa
Branch: refs/heads/master
Commit: ad7f37fab42ed6e70ad27052737ec77f3f1ae71b
Parents: 006b459
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Nov 25 14:36:04 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Nov 25 14:36:04 2015 +0100
----------------------------------------------------------------------
.../camel/component/smpp/SmppBinding.java | 58 +++++++++++++-------
.../camel/component/smpp/SmppBindingTest.java | 45 ++++++++++++++-
2 files changed, 81 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/ad7f37fa/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java
index b44658f..cbb5c64 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java
@@ -35,6 +35,7 @@ import org.jsmpp.bean.OptionalParameter.COctetString;
import org.jsmpp.bean.OptionalParameter.Null;
import org.jsmpp.bean.OptionalParameter.OctetString;
import org.jsmpp.session.SMPPSession;
+import org.jsmpp.util.DefaultDecomposer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -97,20 +98,44 @@ public class SmppBinding {
public SmppMessage createSmppMessage(DeliverSm deliverSm) throws Exception {
SmppMessage smppMessage = new SmppMessage(deliverSm, configuration);
+ String messagePayload = null;
+
+ if (deliverSm.getShortMessage() == null && deliverSm.getOptionalParametes() != null) {
+ List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParametes());
+
+ for (OptionalParameter optPara : oplist) {
+ if (OptionalParameter.Tag.MESSAGE_PAYLOAD.code() == optPara.tag && OctetString.class
+ .isInstance(optPara)) {
+ messagePayload = ((OctetString) optPara).getValueAsString();
+ break;
+ }
+ }
+ }
+
if (deliverSm.isSmscDeliveryReceipt()) {
smppMessage.setHeader(SmppConstants.MESSAGE_TYPE, SmppMessageType.DeliveryReceipt.toString());
- DeliveryReceipt smscDeliveryReceipt = deliverSm.getShortMessageAsDeliveryReceipt();
- smppMessage.setBody(smscDeliveryReceipt.getText());
-
- smppMessage.setHeader(SmppConstants.ID, smscDeliveryReceipt.getId());
- smppMessage.setHeader(SmppConstants.DELIVERED, smscDeliveryReceipt.getDelivered());
- smppMessage.setHeader(SmppConstants.DONE_DATE, smscDeliveryReceipt.getDoneDate());
- if (!"000".equals(smscDeliveryReceipt.getError())) {
- smppMessage.setHeader(SmppConstants.ERROR, smscDeliveryReceipt.getError());
+
+ DeliveryReceipt smscDeliveryReceipt = null;
+
+ if (deliverSm.getShortMessage() != null) {
+ smscDeliveryReceipt = deliverSm.getShortMessageAsDeliveryReceipt();
+ } else if (messagePayload != null) {
+ smscDeliveryReceipt = DefaultDecomposer.getInstance().deliveryReceipt(messagePayload);
+ }
+
+ if (smscDeliveryReceipt != null) {
+ smppMessage.setBody(smscDeliveryReceipt.getText());
+
+ smppMessage.setHeader(SmppConstants.ID, smscDeliveryReceipt.getId());
+ smppMessage.setHeader(SmppConstants.DELIVERED, smscDeliveryReceipt.getDelivered());
+ smppMessage.setHeader(SmppConstants.DONE_DATE, smscDeliveryReceipt.getDoneDate());
+ if (!"000".equals(smscDeliveryReceipt.getError())) {
+ smppMessage.setHeader(SmppConstants.ERROR, smscDeliveryReceipt.getError());
+ }
+ smppMessage.setHeader(SmppConstants.SUBMIT_DATE, smscDeliveryReceipt.getSubmitDate());
+ smppMessage.setHeader(SmppConstants.SUBMITTED, smscDeliveryReceipt.getSubmitted());
+ smppMessage.setHeader(SmppConstants.FINAL_STATUS, smscDeliveryReceipt.getFinalStatus());
}
- smppMessage.setHeader(SmppConstants.SUBMIT_DATE, smscDeliveryReceipt.getSubmitDate());
- smppMessage.setHeader(SmppConstants.SUBMITTED, smscDeliveryReceipt.getSubmitted());
- smppMessage.setHeader(SmppConstants.FINAL_STATUS, smscDeliveryReceipt.getFinalStatus());
if (deliverSm.getOptionalParametes() != null && deliverSm.getOptionalParametes().length > 0) {
// the deprecated way
@@ -130,15 +155,8 @@ public class SmppBinding {
} else {
smppMessage.setBody(String.valueOf(new String(deliverSm.getShortMessage(), configuration.getEncoding())));
}
- } else if (deliverSm.getOptionalParametes() != null && deliverSm.getOptionalParametes().length > 0) {
- List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParametes());
-
- for (OptionalParameter optPara : oplist) {
- if (OptionalParameter.Tag.MESSAGE_PAYLOAD.code() == optPara.tag && OctetString.class.isInstance(optPara)) {
- smppMessage.setBody(((OctetString) optPara).getValueAsString());
- break;
- }
- }
+ } else if (messagePayload != null) {
+ smppMessage.setBody(messagePayload);
}
smppMessage.setHeader(SmppConstants.SEQUENCE_NUMBER, deliverSm.getSequenceNumber());
http://git-wip-us.apache.org/repos/asf/camel/blob/ad7f37fa/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java
index 890d871..dea34a4 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java
@@ -43,6 +43,8 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
/**
* JUnit test class for <code>org.apache.camel.component.smpp.SmppBinding</code>
@@ -106,7 +108,9 @@ public class SmppBindingTest {
public void createSmppMessageFromDeliveryReceiptShouldReturnASmppMessage() throws Exception {
DeliverSm deliverSm = new DeliverSm();
deliverSm.setSmscDeliveryReceipt();
- deliverSm.setShortMessage("id:2 sub:001 dlvrd:001 submit date:0908312310 done date:0908312311 stat:DELIVRD err:xxx Text:Hello SMPP world!".getBytes());
+ deliverSm.setShortMessage(
+ "id:2 sub:001 dlvrd:001 submit date:0908312310 done date:0908312311 stat:DELIVRD err:xxx Text:Hello SMPP world!"
+ .getBytes());
SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
assertEquals("Hello SMPP world!", smppMessage.getBody());
@@ -170,6 +174,43 @@ public class SmppBindingTest {
}
@Test
+ public void createSmppMessageFromDeliveryReceiptWithPayloadInOptionalParameterShouldReturnASmppMessage() {
+ DeliverSm deliverSm = new DeliverSm();
+ deliverSm.setSmscDeliveryReceipt();
+ deliverSm.setOptionalParametes(new OctetString(OptionalParameter.Tag.MESSAGE_PAYLOAD,
+ "id:2 sub:001 dlvrd:001 submit date:0908312310 done date:0908312311 stat:DELIVRD err:xxx Text:Hello SMPP world!"));
+ try {
+ SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
+
+ assertEquals("Hello SMPP world!", smppMessage.getBody());
+ assertEquals(10, smppMessage.getHeaders().size());
+ assertEquals("2", smppMessage.getHeader(SmppConstants.ID));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.DELIVERED));
+ assertEquals("xxx", smppMessage.getHeader(SmppConstants.ERROR));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.SUBMITTED));
+ assertEquals(DeliveryReceiptState.DELIVRD, smppMessage.getHeader(SmppConstants.FINAL_STATUS));
+ assertEquals(SmppMessageType.DeliveryReceipt.toString(), smppMessage.getHeader(SmppConstants.MESSAGE_TYPE));
+ } catch (Exception e) {
+ fail("Should not throw exception while creating smppMessage.");
+ }
+ }
+
+ @Test
+ public void createSmppMessageFromDeliveryReceiptWithoutShortMessageShouldNotThrowException() {
+ DeliverSm deliverSm = new DeliverSm();
+ deliverSm.setSmscDeliveryReceipt();
+ deliverSm.setOptionalParametes(new OptionalParameter.Short((short) 0x2153, (short) 0));
+
+ try {
+ SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
+ Map<Short, Object> optionalParameter = smppMessage.getHeader(SmppConstants.OPTIONAL_PARAMETER, Map.class);
+ assertEquals(Short.valueOf((short) 0), optionalParameter.get(Short.valueOf((short) 0x2153)));
+ } catch (Exception e) {
+ fail("Should not throw exception while creating smppMessage in absence of shortMessage");
+ }
+ }
+
+ @Test
public void createSmppMessageFromDeliverSmShouldReturnASmppMessage() throws Exception {
DeliverSm deliverSm = new DeliverSm();
deliverSm.setShortMessage("Hello SMPP world!".getBytes());
@@ -376,4 +417,4 @@ public class SmppBindingTest {
assertTrue(command instanceof SmppCancelSmCommand);
}
-}
\ No newline at end of file
+}