Author: cmueller Date: Fri Mar 8 04:30:27 2013 New Revision: 1454242 URL: http://svn.apache.org/r1454242 Log: CAMEL-6116: Populate all optional parameters from DeliverSm (if it is DeliveryReceipt)
Modified: camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java camel/branches/camel-2.10.x/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java Modified: camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java?rev=1454242&r1=1454241&r2=1454242&view=diff ============================================================================== --- camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java (original) +++ camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppBinding.java Fri Mar 8 04:30:27 2013 @@ -19,7 +19,9 @@ package org.apache.camel.component.smpp; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.camel.Exchange; import org.jsmpp.bean.AlertNotification; @@ -29,6 +31,8 @@ import org.jsmpp.bean.DataSm; import org.jsmpp.bean.DeliverSm; import org.jsmpp.bean.DeliveryReceipt; import org.jsmpp.bean.OptionalParameter; +import org.jsmpp.bean.OptionalParameter.COctetString; +import org.jsmpp.bean.OptionalParameter.Null; import org.jsmpp.bean.OptionalParameter.OctetString; import org.jsmpp.session.SMPPSession; @@ -102,6 +106,27 @@ public class SmppBinding { 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) { + List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParametes()); + + Map<String, Object> optParams = new HashMap<String, Object>(); + for (OptionalParameter optPara : oplist) { + if (OctetString.class.isInstance(optPara)) { + optParams.put(OptionalParameter.Tag.valueOf(optPara.tag).toString(), ((OctetString) optPara).getValueAsString()); + } else if (org.jsmpp.bean.OptionalParameter.COctetString.class.isInstance(optPara)) { + optParams.put(OptionalParameter.Tag.valueOf(optPara.tag).toString(), ((COctetString) optPara).getValueAsString()); + } else if (org.jsmpp.bean.OptionalParameter.Byte.class.isInstance(optPara)) { + optParams.put(OptionalParameter.Tag.valueOf(optPara.tag).toString(), Byte.valueOf(((org.jsmpp.bean.OptionalParameter.Byte) optPara).getValue())); + } else if (org.jsmpp.bean.OptionalParameter.Short.class.isInstance(optPara)) { + optParams.put(OptionalParameter.Tag.valueOf(optPara.tag).toString(), Short.valueOf(((org.jsmpp.bean.OptionalParameter.Short) optPara).getValue())); + } else if (org.jsmpp.bean.OptionalParameter.Int.class.isInstance(optPara)) { + optParams.put(OptionalParameter.Tag.valueOf(optPara.tag).toString(), Integer.valueOf(((org.jsmpp.bean.OptionalParameter.Int) optPara).getValue())); + } else if (Null.class.isInstance(optPara)) { + optParams.put(OptionalParameter.Tag.valueOf(optPara.tag).toString(), null); + } + } + smppMessage.setHeader(SmppConstants.OPTIONAL_PARAMETERS, optParams); + } } else { smppMessage.setHeader(SmppConstants.MESSAGE_TYPE, SmppMessageType.DeliverSm.toString()); Modified: camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java?rev=1454242&r1=1454241&r2=1454242&view=diff ============================================================================== --- camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java (original) +++ camel/branches/camel-2.10.x/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java Fri Mar 8 04:30:27 2013 @@ -57,6 +57,7 @@ public interface SmppConstants { String SYSTEM_ID = "CamelSmppSystemId"; String PASSWORD = "CamelSmppSystemId"; String VALIDITY_PERIOD = "CamelSmppValidityPeriod"; + String OPTIONAL_PARAMETERS = "CamelSmppOptionalParameters"; String UCS2_ENCODING = "UTF-16BE"; byte UNKNOWN_ALPHABET = -1; Modified: camel/branches/camel-2.10.x/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java?rev=1454242&r1=1454241&r2=1454242&view=diff ============================================================================== --- camel/branches/camel-2.10.x/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java (original) +++ camel/branches/camel-2.10.x/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java Fri Mar 8 04:30:27 2013 @@ -18,6 +18,7 @@ package org.apache.camel.component.smpp; import java.nio.charset.Charset; import java.util.Date; +import java.util.Map; import java.util.Set; import org.apache.camel.Exchange; @@ -29,6 +30,7 @@ import org.jsmpp.bean.DeliverSm; import org.jsmpp.bean.NumberingPlanIndicator; import org.jsmpp.bean.OptionalParameter; import org.jsmpp.bean.OptionalParameter.OctetString; +import org.jsmpp.bean.OptionalParameter.Tag; import org.jsmpp.bean.TypeOfNumber; import org.jsmpp.session.SMPPSession; import org.jsmpp.util.DeliveryReceiptState; @@ -118,8 +120,46 @@ public class SmppBindingTest { assertEquals(1, smppMessage.getHeader(SmppConstants.SUBMITTED)); assertEquals(DeliveryReceiptState.DELIVRD, smppMessage.getHeader(SmppConstants.FINAL_STATUS)); assertEquals(SmppMessageType.DeliveryReceipt.toString(), smppMessage.getHeader(SmppConstants.MESSAGE_TYPE)); + assertNull(smppMessage.getHeader(SmppConstants.OPTIONAL_PARAMETERS)); } - + + @SuppressWarnings("unchecked") + @Test + public void createSmppMessageFromDeliveryReceiptWithOptionalParametersShouldReturnASmppMessage() 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.setOptionalParametes( + new OptionalParameter.OctetString(Tag.SOURCE_SUBADDRESS, "OctetString"), + new OptionalParameter.COctetString((short) 0x001D, "COctetString"), + new OptionalParameter.Byte(Tag.DEST_ADDR_SUBUNIT, (byte) 0x01), + new OptionalParameter.Short(Tag.DEST_TELEMATICS_ID, (short) 1), + new OptionalParameter.Int(Tag.QOS_TIME_TO_LIVE, 1), + new OptionalParameter.Null(Tag.ALERT_ON_MESSAGE_DELIVERY)); + SmppMessage smppMessage = binding.createSmppMessage(deliverSm); + + assertEquals("Hello SMPP world!", smppMessage.getBody()); + assertEquals(9, smppMessage.getHeaders().size()); + assertEquals("2", smppMessage.getHeader(SmppConstants.ID)); + assertEquals(1, smppMessage.getHeader(SmppConstants.DELIVERED)); + // To avoid the test failure when running in different TimeZone + //assertEquals(new Date(1251753060000L), smppMessage.getHeader(SmppConstants.DONE_DATE)); + assertEquals("xxx", smppMessage.getHeader(SmppConstants.ERROR)); + //assertEquals(new Date(1251753000000L), smppMessage.getHeader(SmppConstants.SUBMIT_DATE)); + assertEquals(1, smppMessage.getHeader(SmppConstants.SUBMITTED)); + assertEquals(DeliveryReceiptState.DELIVRD, smppMessage.getHeader(SmppConstants.FINAL_STATUS)); + assertEquals(SmppMessageType.DeliveryReceipt.toString(), smppMessage.getHeader(SmppConstants.MESSAGE_TYPE)); + + Map<String, String> optionalParameters = smppMessage.getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class); + assertEquals(6, optionalParameters.size()); + assertEquals("OctetString", optionalParameters.get("SOURCE_SUBADDRESS")); + assertEquals("COctetStrin", optionalParameters.get("ADDITIONAL_STATUS_INFO_TEXT")); + assertEquals(Byte.valueOf((byte) 0x01), optionalParameters.get("DEST_ADDR_SUBUNIT")); + assertEquals(Short.valueOf((short) 1), optionalParameters.get("DEST_TELEMATICS_ID")); + assertEquals(Integer.valueOf(1), optionalParameters.get("QOS_TIME_TO_LIVE")); + assertNull("0x00", optionalParameters.get("ALERT_ON_MESSAGE_DELIVERY")); + } + @Test public void createSmppMessageFromDeliverSmShouldReturnASmppMessage() throws Exception { DeliverSm deliverSm = new DeliverSm();