You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2013/08/25 16:30:47 UTC
[1/3] git commit: CAMEL-6655: SMPP - add support of Vendor Specific
Optional Parameter
Updated Branches:
refs/heads/camel-2.10.x 5654b18b5 -> 36b2c8c6d
CAMEL-6655: SMPP - add support of Vendor Specific Optional Parameter
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a027d7dc
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a027d7dc
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a027d7dc
Branch: refs/heads/camel-2.10.x
Commit: a027d7dc9cef4dedeec54d321491a10bdfe8c7bf
Parents: 5654b18
Author: cmueller <cm...@apache.org>
Authored: Sat Aug 24 23:23:52 2013 +0200
Committer: cmueller <cm...@apache.org>
Committed: Sat Aug 24 23:26:28 2013 +0200
----------------------------------------------------------------------
.../component/smpp/AbstractSmppCommand.java | 52 ++++++++++++++-
.../component/smpp/SmppDataSmCommandTest.java | 66 ++++++++++++++++++++
.../smpp/SmppSubmitMultiCommandTest.java | 64 +++++++++++++++++++
.../component/smpp/SmppSubmitSmCommandTest.java | 63 +++++++++++++++++++
4 files changed, 244 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/a027d7dc/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java
index 54d93da..145ce46 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java
@@ -55,8 +55,58 @@ public abstract class AbstractSmppCommand implements SmppCommand {
return message;
}
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ protected List<OptionalParameter> createOptionalParameters(Map optinalParamaters) {
+ if (optinalParamaters == null || optinalParamaters.isEmpty()) {
+ return new ArrayList<OptionalParameter>();
+ }
+
+ Object firstKey = optinalParamaters.keySet().iterator().next();
+ if (firstKey instanceof String) {
+ return createOptionalParametersByName(optinalParamaters);
+ } else {
+ return createOptionalParametersByCode(optinalParamaters);
+ }
+ }
+
+ protected List<OptionalParameter> createOptionalParametersByCode(Map<Short, Object> optinalParamaters) {
+ List<OptionalParameter> optParams = new ArrayList<OptionalParameter>();
+
+ for (Entry<Short, Object> entry : optinalParamaters.entrySet()) {
+ OptionalParameter optParam = null;
+ Short key = entry.getKey();
+ Object value = entry.getValue();
+
+ try {
+ if (value == null) {
+ optParam = new OptionalParameter.Null(key);
+ } else if (value instanceof byte[]) {
+ optParam = new OptionalParameter.OctetString(key, (byte[]) value);
+ } else if (value instanceof String) {
+ optParam = new OptionalParameter.COctetString(key, (String) value);
+ } else if (value instanceof Byte) {
+ optParam = new OptionalParameter.Byte(key, (Byte) value);
+ } else if (value instanceof Integer) {
+ optParam = new OptionalParameter.Int(key, (Integer) value);
+ } else if (value instanceof Short) {
+ optParam = new OptionalParameter.Short(key, (Short) value);
+ } else {
+ log.info("Couldn't determine optional parameter for value {} (type: {}). Skip this one.", value, value.getClass());
+ continue;
+ }
+
+ optParams.add(optParam);
+ } catch (Exception e) {
+ log.info("Couldn't determine optional parameter for key {} and value {}. Skip this one.", key, value);
+ }
+ }
+
+ return optParams;
+ }
+
@SuppressWarnings("rawtypes")
- protected List<OptionalParameter> createOptionalParameters(Map<String, String> optinalParamaters) {
+ @Deprecated
+ protected List<OptionalParameter> createOptionalParametersByName(Map<String, String> optinalParamaters) {
List<OptionalParameter> optParams = new ArrayList<OptionalParameter>();
for (Entry<String, String> entry : optinalParamaters.entrySet()) {
http://git-wip-us.apache.org/repos/asf/camel/blob/a027d7dc/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
index 28714ec..5374753 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
@@ -136,6 +136,13 @@ public class SmppDataSmCommandTest {
optionalParameters.put("DEST_TELEMATICS_ID", "2");
optionalParameters.put("QOS_TIME_TO_LIVE", "3600000");
optionalParameters.put("ALERT_ON_MESSAGE_DELIVERY", null);
+ // fall back test for vendor specific optional parameter
+ optionalParameters.put("0x2150", "0815");
+ optionalParameters.put("0x2151", "0816");
+ optionalParameters.put("0x2152", "6");
+ optionalParameters.put("0x2153", "9");
+ optionalParameters.put("0x2154", "7400000");
+ optionalParameters.put("0x2155", null);
exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETERS, optionalParameters);
expect(session.dataShortMessage(eq("CMT"), eq(TypeOfNumber.UNKNOWN), eq(NumberingPlanIndicator.UNKNOWN), eq("1616"),
eq(TypeOfNumber.UNKNOWN), eq(NumberingPlanIndicator.UNKNOWN), eq("1717"), eq(new ESMClass()),
@@ -168,4 +175,63 @@ public class SmppDataSmCommandTest {
assertEquals("3600000", optParamMap.get("QOS_TIME_TO_LIVE"));
assertNull(optParamMap.get("ALERT_ON_MESSAGE_DELIVERY"));
}
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void executeWithOptionalParameterNewStyle() throws Exception {
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "DataSm");
+ Map<Short, Object> optionalParameters = new LinkedHashMap<Short, Object>();
+ // standard optional parameter
+ optionalParameters.put(Short.valueOf((short) 0x0202), "1292".getBytes("UTF-8"));
+ optionalParameters.put(Short.valueOf((short) 0x001D), "urgent");
+ optionalParameters.put(Short.valueOf((short) 0x0005), Byte.valueOf("4"));
+ optionalParameters.put(Short.valueOf((short) 0x0008), Short.valueOf((short) 2));
+ optionalParameters.put(Short.valueOf((short) 0x0017), Integer.valueOf(3600000));
+ optionalParameters.put(Short.valueOf((short) 0x130C), null);
+ // vendor specific optional parameter
+ optionalParameters.put(Short.valueOf((short) 0x2150), "0815".getBytes("UTF-8"));
+ optionalParameters.put(Short.valueOf((short) 0x2151), "0816");
+ optionalParameters.put(Short.valueOf((short) 0x2152), Byte.valueOf("6"));
+ optionalParameters.put(Short.valueOf((short) 0x2153), Short.valueOf((short) 9));
+ optionalParameters.put(Short.valueOf((short) 0x2154), Integer.valueOf(7400000));
+ optionalParameters.put(Short.valueOf((short) 0x2155), null);
+ exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETERS, optionalParameters);
+ expect(session.dataShortMessage(eq("CMT"), eq(TypeOfNumber.UNKNOWN), eq(NumberingPlanIndicator.UNKNOWN), eq("1616"),
+ eq(TypeOfNumber.UNKNOWN), eq(NumberingPlanIndicator.UNKNOWN), eq("1717"), eq(new ESMClass()),
+ eq(new RegisteredDelivery((byte) 1)), eq(DataCoding.newInstance((byte) 0)),
+ eq(new OptionalParameter.OctetString(Tag.SOURCE_SUBADDRESS, "1292")),
+ eq(new OptionalParameter.COctetString(Tag.ADDITIONAL_STATUS_INFO_TEXT.code(), "urgent")),
+ eq(new OptionalParameter.Byte(Tag.DEST_ADDR_SUBUNIT, (byte) 4)),
+ eq(new OptionalParameter.Short(Tag.DEST_TELEMATICS_ID.code(), (short) 2)),
+ eq(new OptionalParameter.Int(Tag.QOS_TIME_TO_LIVE, 3600000)),
+ eq(new OptionalParameter.Null(Tag.ALERT_ON_MESSAGE_DELIVERY)),
+ eq(new OptionalParameter.OctetString((short) 0x2150, "1292", "UTF-8")),
+ eq(new OptionalParameter.COctetString((short) 0x2151, "0816")),
+ eq(new OptionalParameter.Byte((short) 0x2152, (byte) 6)),
+ eq(new OptionalParameter.Short((short) 0x2153, (short) 9)),
+ eq(new OptionalParameter.Int((short) 0x2154, 7400000)),
+ eq(new OptionalParameter.Null((short) 0x2155))))
+ .andReturn(new DataSmResult(new MessageId("1"), new OptionalParameter[]{
+ new OptionalParameter.OctetString(Tag.SOURCE_SUBADDRESS, "1292"), new OptionalParameter.COctetString(Tag.ADDITIONAL_STATUS_INFO_TEXT.code(), "urgent"),
+ new OptionalParameter.Byte(Tag.DEST_ADDR_SUBUNIT, (byte) 4), new OptionalParameter.Short(Tag.DEST_TELEMATICS_ID.code(), (short) 2),
+ new OptionalParameter.Int(Tag.QOS_TIME_TO_LIVE, 3600000), new OptionalParameter.Null(Tag.ALERT_ON_MESSAGE_DELIVERY)}));
+
+ replay(session);
+
+ command.execute(exchange);
+
+ verify(session);
+
+ assertEquals("1", exchange.getOut().getHeader(SmppConstants.ID));
+ Map<String, String> optParamMap = exchange.getOut().getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
+ assertEquals(6, optParamMap.size());
+ assertEquals("1292", optParamMap.get("SOURCE_SUBADDRESS"));
+ // FIXME: fix required in JSMPP. See http://code.google.com/p/jsmpp/issues/detail?id=140
+ //assertEquals("urgent", optParamMap.get("ADDITIONAL_STATUS_INFO_TEXT"));
+ assertEquals("4", optParamMap.get("DEST_ADDR_SUBUNIT"));
+ assertEquals("2", optParamMap.get("DEST_TELEMATICS_ID"));
+ assertEquals("3600000", optParamMap.get("QOS_TIME_TO_LIVE"));
+ assertNull(optParamMap.get("ALERT_ON_MESSAGE_DELIVERY"));
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/a027d7dc/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java
index 01e24de..3434d40 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java
@@ -473,4 +473,68 @@ public class SmppSubmitMultiCommandTest {
assertEquals(1, exchange.getOut().getHeader(SmppConstants.SENT_MESSAGE_COUNT));
assertNull(exchange.getOut().getHeader(SmppConstants.ERROR));
}
+
+ @Test
+ public void executeWithOptionalParameterNewStyle() throws Exception {
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "SubmitMulti");
+ exchange.getIn().setHeader(SmppConstants.ID, "1");
+ exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR_TON, TypeOfNumber.NATIONAL.value());
+ exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR_NPI, NumberingPlanIndicator.NATIONAL.value());
+ exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR, "1818");
+ exchange.getIn().setHeader(SmppConstants.DEST_ADDR_TON, TypeOfNumber.INTERNATIONAL.value());
+ exchange.getIn().setHeader(SmppConstants.DEST_ADDR_NPI, NumberingPlanIndicator.INTERNET.value());
+ exchange.getIn().setHeader(SmppConstants.DEST_ADDR, Arrays.asList("1919"));
+ exchange.getIn().setHeader(SmppConstants.SCHEDULE_DELIVERY_TIME, new Date(1111111));
+ exchange.getIn().setHeader(SmppConstants.VALIDITY_PERIOD, new Date(2222222));
+ exchange.getIn().setHeader(SmppConstants.PROTOCOL_ID, (byte) 1);
+ exchange.getIn().setHeader(SmppConstants.PRIORITY_FLAG, (byte) 2);
+ exchange.getIn().setHeader(SmppConstants.REGISTERED_DELIVERY, new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS).value());
+ exchange.getIn().setHeader(SmppConstants.REPLACE_IF_PRESENT_FLAG, ReplaceIfPresentFlag.REPLACE.value());
+ Map<Short, Object> optionalParameters = new LinkedHashMap<Short, Object>();
+ // standard optional parameter
+ optionalParameters.put(Short.valueOf((short) 0x0202), "1292".getBytes("UTF-8"));
+ optionalParameters.put(Short.valueOf((short) 0x001D), "urgent");
+ optionalParameters.put(Short.valueOf((short) 0x0005), Byte.valueOf("4"));
+ optionalParameters.put(Short.valueOf((short) 0x0008), Short.valueOf((short) 2));
+ optionalParameters.put(Short.valueOf((short) 0x0017), Integer.valueOf(3600000));
+ optionalParameters.put(Short.valueOf((short) 0x130C), null);
+ // vendor specific optional parameter
+ optionalParameters.put(Short.valueOf((short) 0x2150), "0815".getBytes("UTF-8"));
+ optionalParameters.put(Short.valueOf((short) 0x2151), "0816");
+ optionalParameters.put(Short.valueOf((short) 0x2152), Byte.valueOf("6"));
+ optionalParameters.put(Short.valueOf((short) 0x2153), Short.valueOf((short) 9));
+ optionalParameters.put(Short.valueOf((short) 0x2154), Integer.valueOf(7400000));
+ optionalParameters.put(Short.valueOf((short) 0x2155), null);
+ exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETERS, optionalParameters);
+ exchange.getIn().setBody("short message body");
+ expect(session.submitMultiple(eq("CMT"), eq(TypeOfNumber.NATIONAL), eq(NumberingPlanIndicator.NATIONAL), eq("1818"),
+ aryEq(new Address[]{new Address(TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.INTERNET, "1919")}),
+ eq(new ESMClass()), eq((byte) 1), eq((byte) 2), eq("-300101001831100-"), eq("-300101003702200-"), eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS)),
+ eq(ReplaceIfPresentFlag.REPLACE), eq(DataCoding.newInstance((byte) 0)), eq((byte) 0), aryEq("short message body".getBytes()),
+ aryEq(new OptionalParameter[]{
+ new OptionalParameter.OctetString(Tag.SOURCE_SUBADDRESS, "1292"),
+ new OptionalParameter.COctetString(Tag.ADDITIONAL_STATUS_INFO_TEXT.code(), "urgent"),
+ new OptionalParameter.Byte(Tag.DEST_ADDR_SUBUNIT, (byte) 4),
+ new OptionalParameter.Short(Tag.DEST_TELEMATICS_ID.code(), (short) 2),
+ new OptionalParameter.Int(Tag.QOS_TIME_TO_LIVE, 3600000),
+ new OptionalParameter.Null(Tag.ALERT_ON_MESSAGE_DELIVERY),
+ new OptionalParameter.OctetString((short) 0x2150, "1292", "UTF-8"),
+ new OptionalParameter.COctetString((short) 0x2151, "0816"),
+ new OptionalParameter.Byte((short) 0x2152, (byte) 6),
+ new OptionalParameter.Short((short) 0x2153, (short) 9),
+ new OptionalParameter.Int((short) 0x2154, 7400000),
+ new OptionalParameter.Null((short) 0x2155)})))
+ .andReturn(new SubmitMultiResult("1"));
+
+ replay(session);
+
+ command.execute(exchange);
+
+ verify(session);
+
+ assertEquals(Arrays.asList("1"), exchange.getOut().getHeader(SmppConstants.ID));
+ assertEquals(1, exchange.getOut().getHeader(SmppConstants.SENT_MESSAGE_COUNT));
+ assertNull(exchange.getOut().getHeader(SmppConstants.ERROR));
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/a027d7dc/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java
index e13d0c04..9f32a95 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java
@@ -221,6 +221,69 @@ public class SmppSubmitSmCommandTest {
}
@Test
+ public void executeWithOptionalParameterNewStyle() throws Exception {
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "SubmitSm");
+ exchange.getIn().setHeader(SmppConstants.ID, "1");
+ exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR_TON, TypeOfNumber.NATIONAL.value());
+ exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR_NPI, NumberingPlanIndicator.NATIONAL.value());
+ exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR, "1818");
+ exchange.getIn().setHeader(SmppConstants.DEST_ADDR_TON, TypeOfNumber.INTERNATIONAL.value());
+ exchange.getIn().setHeader(SmppConstants.DEST_ADDR_NPI, NumberingPlanIndicator.INTERNET.value());
+ exchange.getIn().setHeader(SmppConstants.DEST_ADDR, "1919");
+ exchange.getIn().setHeader(SmppConstants.SCHEDULE_DELIVERY_TIME, new Date(1111111));
+ exchange.getIn().setHeader(SmppConstants.VALIDITY_PERIOD, new Date(2222222));
+ exchange.getIn().setHeader(SmppConstants.PROTOCOL_ID, (byte) 1);
+ exchange.getIn().setHeader(SmppConstants.PRIORITY_FLAG, (byte) 2);
+ exchange.getIn().setHeader(SmppConstants.REGISTERED_DELIVERY, new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS).value());
+ exchange.getIn().setHeader(SmppConstants.REPLACE_IF_PRESENT_FLAG, ReplaceIfPresentFlag.REPLACE.value());
+ exchange.getIn().setBody("short message body");
+ Map<Short, Object> optionalParameters = new LinkedHashMap<Short, Object>();
+ // standard optional parameter
+ optionalParameters.put(Short.valueOf((short) 0x0202), "1292".getBytes("UTF-8"));
+ optionalParameters.put(Short.valueOf((short) 0x001D), "urgent");
+ optionalParameters.put(Short.valueOf((short) 0x0005), Byte.valueOf("4"));
+ optionalParameters.put(Short.valueOf((short) 0x0008), Short.valueOf((short) 2));
+ optionalParameters.put(Short.valueOf((short) 0x0017), Integer.valueOf(3600000));
+ optionalParameters.put(Short.valueOf((short) 0x130C), null);
+ // vendor specific optional parameter
+ optionalParameters.put(Short.valueOf((short) 0x2150), "0815".getBytes("UTF-8"));
+ optionalParameters.put(Short.valueOf((short) 0x2151), "0816");
+ optionalParameters.put(Short.valueOf((short) 0x2152), Byte.valueOf("6"));
+ optionalParameters.put(Short.valueOf((short) 0x2153), Short.valueOf((short) 9));
+ optionalParameters.put(Short.valueOf((short) 0x2154), Integer.valueOf(7400000));
+ optionalParameters.put(Short.valueOf((short) 0x2155), null);
+ exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETERS, optionalParameters);
+ expect(session.submitShortMessage(eq("CMT"), eq(TypeOfNumber.NATIONAL), eq(NumberingPlanIndicator.NATIONAL), eq("1818"),
+ eq(TypeOfNumber.INTERNATIONAL), eq(NumberingPlanIndicator.INTERNET), eq("1919"),
+ eq(new ESMClass()), eq((byte) 1), eq((byte) 2), eq("-300101001831100-"), eq("-300101003702200-"), eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS)),
+ eq(ReplaceIfPresentFlag.REPLACE.value()), eq(DataCoding.newInstance((byte) 0)), eq((byte) 0),
+ aryEq("short message body".getBytes()),
+ eq(new OptionalParameter.OctetString(Tag.SOURCE_SUBADDRESS, "1292")),
+ eq(new OptionalParameter.COctetString(Tag.ADDITIONAL_STATUS_INFO_TEXT.code(), "urgent")),
+ eq(new OptionalParameter.Byte(Tag.DEST_ADDR_SUBUNIT, (byte) 4)),
+ eq(new OptionalParameter.Short(Tag.DEST_TELEMATICS_ID.code(), (short) 2)),
+ eq(new OptionalParameter.Int(Tag.QOS_TIME_TO_LIVE, 3600000)),
+ eq(new OptionalParameter.Null(Tag.ALERT_ON_MESSAGE_DELIVERY)),
+ eq(new OptionalParameter.OctetString((short) 0x2150, "1292", "UTF-8")),
+ eq(new OptionalParameter.COctetString((short) 0x2151, "0816")),
+ eq(new OptionalParameter.Byte((short) 0x2152, (byte) 6)),
+ eq(new OptionalParameter.Short((short) 0x2153, (short) 9)),
+ eq(new OptionalParameter.Int((short) 0x2154, 7400000)),
+ eq(new OptionalParameter.Null((short) 0x2155))))
+ .andReturn("1");
+
+ replay(session);
+
+ command.execute(exchange);
+
+ verify(session);
+
+ assertEquals(Arrays.asList("1"), exchange.getOut().getHeader(SmppConstants.ID));
+ assertEquals(1, exchange.getOut().getHeader(SmppConstants.SENT_MESSAGE_COUNT));
+ }
+
+ @Test
public void executeWithValidityPeriodAsString() throws Exception {
Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
exchange.getIn().setHeader(SmppConstants.COMMAND, "SubmitSm");
[2/3] git commit: CAMEL-6655: SMPP - add support of Vendor Specific
Optional Parameter
Posted by cm...@apache.org.
CAMEL-6655: SMPP - add support of Vendor Specific Optional Parameter
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8989fd3f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8989fd3f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8989fd3f
Branch: refs/heads/camel-2.10.x
Commit: 8989fd3fc7642d5e1f61bc13f176e1e6b92dd778
Parents: a027d7d
Author: cmueller <cm...@apache.org>
Authored: Sun Aug 25 15:41:52 2013 +0200
Committer: cmueller <cm...@apache.org>
Committed: Sun Aug 25 16:29:38 2013 +0200
----------------------------------------------------------------------
.../component/smpp/AbstractSmppCommand.java | 20 ++----
.../camel/component/smpp/SmppBinding.java | 73 +++++++++++++++-----
.../camel/component/smpp/SmppConstants.java | 3 +-
.../camel/component/smpp/SmppDataSmCommand.java | 14 ++--
.../component/smpp/SmppSubmitMultiCommand.java | 14 ++--
.../component/smpp/SmppSubmitSmCommand.java | 14 ++--
.../camel/component/smpp/SmppBindingTest.java | 15 +++-
.../component/smpp/SmppDataSmCommandTest.java | 2 +-
.../smpp/SmppSubmitMultiCommandTest.java | 2 +-
.../component/smpp/SmppSubmitSmCommandTest.java | 2 +-
10 files changed, 106 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java
index 145ce46..c6ad202 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/AbstractSmppCommand.java
@@ -55,20 +55,6 @@ public abstract class AbstractSmppCommand implements SmppCommand {
return message;
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
- protected List<OptionalParameter> createOptionalParameters(Map optinalParamaters) {
- if (optinalParamaters == null || optinalParamaters.isEmpty()) {
- return new ArrayList<OptionalParameter>();
- }
-
- Object firstKey = optinalParamaters.keySet().iterator().next();
- if (firstKey instanceof String) {
- return createOptionalParametersByName(optinalParamaters);
- } else {
- return createOptionalParametersByCode(optinalParamaters);
- }
- }
-
protected List<OptionalParameter> createOptionalParametersByCode(Map<Short, Object> optinalParamaters) {
List<OptionalParameter> optParams = new ArrayList<OptionalParameter>();
@@ -104,8 +90,12 @@ public abstract class AbstractSmppCommand implements SmppCommand {
return optParams;
}
+ /**
+ * @deprecated will be removed in Camel 2.13.0/3.0.0 - use createOptionalParametersByCode instead
+ * @param optinalParamaters
+ * @return
+ */
@SuppressWarnings("rawtypes")
- @Deprecated
protected List<OptionalParameter> createOptionalParametersByName(Map<String, String> optinalParamaters) {
List<OptionalParameter> optParams = new ArrayList<OptionalParameter>();
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/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 5c86c9c..c1a8a8e 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
@@ -106,26 +106,15 @@ 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());
+ // the deprecated way
+ Map<String, Object> optionalParameters = createOptionalParameterByName(deliverSm);
+ smppMessage.setHeader(SmppConstants.OPTIONAL_PARAMETERS, optionalParameters);
- 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);
+ // the new way
+ Map<Short, Object> optionalParameter = createOptionalParameterByCode(deliverSm);
+ smppMessage.setHeader(SmppConstants.OPTIONAL_PARAMETER, optionalParameter);
}
} else {
smppMessage.setHeader(SmppConstants.MESSAGE_TYPE, SmppMessageType.DeliverSm.toString());
@@ -162,7 +151,53 @@ public class SmppBinding {
return smppMessage;
}
-
+
+ private Map<String, Object> createOptionalParameterByName(DeliverSm deliverSm) {
+ List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParametes());
+
+ Map<String, Object> optParams = new HashMap<String, Object>();
+ for (OptionalParameter optPara : oplist) {
+ if (COctetString.class.isInstance(optPara)) {
+ optParams.put(OptionalParameter.Tag.valueOf(optPara.tag).toString(), ((COctetString) optPara).getValueAsString());
+ } else if (org.jsmpp.bean.OptionalParameter.OctetString.class.isInstance(optPara)) {
+ optParams.put(OptionalParameter.Tag.valueOf(optPara.tag).toString(), ((OctetString) 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);
+ }
+ }
+
+ return optParams;
+ }
+
+ private Map<Short, Object> createOptionalParameterByCode(DeliverSm deliverSm) {
+ List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParametes());
+
+ Map<Short, Object> optParams = new HashMap<Short, Object>();
+ for (OptionalParameter optPara : oplist) {
+ if (COctetString.class.isInstance(optPara)) {
+ optParams.put(Short.valueOf(optPara.tag), ((COctetString) optPara).getValueAsString());
+ } else if (org.jsmpp.bean.OptionalParameter.OctetString.class.isInstance(optPara)) {
+ optParams.put(Short.valueOf(optPara.tag), ((OctetString) optPara).getValue());
+ } else if (org.jsmpp.bean.OptionalParameter.Byte.class.isInstance(optPara)) {
+ optParams.put(Short.valueOf(optPara.tag), Byte.valueOf(((org.jsmpp.bean.OptionalParameter.Byte) optPara).getValue()));
+ } else if (org.jsmpp.bean.OptionalParameter.Short.class.isInstance(optPara)) {
+ optParams.put(Short.valueOf(optPara.tag), Short.valueOf(((org.jsmpp.bean.OptionalParameter.Short) optPara).getValue()));
+ } else if (org.jsmpp.bean.OptionalParameter.Int.class.isInstance(optPara)) {
+ optParams.put(Short.valueOf(optPara.tag), Integer.valueOf(((org.jsmpp.bean.OptionalParameter.Int) optPara).getValue()));
+ } else if (Null.class.isInstance(optPara)) {
+ optParams.put(Short.valueOf(optPara.tag), null);
+ }
+ }
+
+ return optParams;
+ }
+
public SmppMessage createSmppMessage(DataSm dataSm, String smppMessageId) {
SmppMessage smppMessage = new SmppMessage(dataSm, configuration);
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java
index 32555cc..7099c3a 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java
@@ -58,7 +58,8 @@ public interface SmppConstants {
String PASSWORD = "CamelSmppSystemId";
String VALIDITY_PERIOD = "CamelSmppValidityPeriod";
String OPTIONAL_PARAMETERS = "CamelSmppOptionalParameters";
-
+ String OPTIONAL_PARAMETER = "CamelSmppOptionalParameter";
+
String UCS2_ENCODING = "UTF-16BE";
byte UNKNOWN_ALPHABET = -1;
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java
index b33fa2a..a29a388 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java
@@ -168,12 +168,18 @@ public class SmppDataSmCommand extends AbstractSmppCommand {
dataSm.setRegisteredDelivery(config.getRegisteredDelivery());
}
- Map<String, String> optinalParamaters = in.getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
- if (optinalParamaters != null) {
- List<OptionalParameter> optParams = createOptionalParameters(optinalParamaters);
+ Map<java.lang.Short, Object> optinalParamater = in.getHeader(SmppConstants.OPTIONAL_PARAMETER, Map.class);
+ if (optinalParamater != null) {
+ List<OptionalParameter> optParams = createOptionalParametersByCode(optinalParamater);
dataSm.setOptionalParametes(optParams.toArray(new OptionalParameter[optParams.size()]));
} else {
- dataSm.setOptionalParametes();
+ Map<String, String> optinalParamaters = in.getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
+ if (optinalParamaters != null) {
+ List<OptionalParameter> optParams = createOptionalParametersByName(optinalParamaters);
+ dataSm.setOptionalParametes(optParams.toArray(new OptionalParameter[optParams.size()]));
+ } else {
+ dataSm.setOptionalParametes();
+ }
}
return dataSm;
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitMultiCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitMultiCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitMultiCommand.java
index 00c8638..f541dab 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitMultiCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitMultiCommand.java
@@ -246,12 +246,18 @@ public class SmppSubmitMultiCommand extends SmppSmCommand {
submitMulti.setReplaceIfPresentFlag(config.getReplaceIfPresentFlag());
}
- Map<String, String> optinalParamaters = in.getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
- if (optinalParamaters != null) {
- List<OptionalParameter> optParams = createOptionalParameters(optinalParamaters);
+ Map<java.lang.Short, Object> optinalParamater = in.getHeader(SmppConstants.OPTIONAL_PARAMETER, Map.class);
+ if (optinalParamater != null) {
+ List<OptionalParameter> optParams = createOptionalParametersByCode(optinalParamater);
submitMulti.setOptionalParameters(optParams.toArray(new OptionalParameter[optParams.size()]));
} else {
- submitMulti.setOptionalParameters(new OptionalParameter[]{});
+ Map<String, String> optinalParamaters = in.getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
+ if (optinalParamaters != null) {
+ List<OptionalParameter> optParams = createOptionalParametersByName(optinalParamaters);
+ submitMulti.setOptionalParameters(optParams.toArray(new OptionalParameter[optParams.size()]));
+ } else {
+ submitMulti.setOptionalParameters(new OptionalParameter[]{});
+ }
}
return submitMulti;
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
index 4a8166e..ac5f4f1 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
@@ -206,12 +206,18 @@ public class SmppSubmitSmCommand extends SmppSmCommand {
submitSm.setEsmClass(new ESMClass().value());
- Map<String, String> optinalParamaters = in.getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
- if (optinalParamaters != null) {
- List<OptionalParameter> optParams = createOptionalParameters(optinalParamaters);
+ Map<java.lang.Short, Object> optinalParamater = in.getHeader(SmppConstants.OPTIONAL_PARAMETER, Map.class);
+ if (optinalParamater != null) {
+ List<OptionalParameter> optParams = createOptionalParametersByCode(optinalParamater);
submitSm.setOptionalParametes(optParams.toArray(new OptionalParameter[optParams.size()]));
} else {
- submitSm.setOptionalParametes();
+ Map<String, String> optinalParamaters = in.getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
+ if (optinalParamaters != null) {
+ List<OptionalParameter> optParams = createOptionalParametersByName(optinalParamaters);
+ submitSm.setOptionalParametes(optParams.toArray(new OptionalParameter[optParams.size()]));
+ } else {
+ submitSm.setOptionalParametes();
+ }
}
return submitSm;
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/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 f427522..b440831 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
@@ -139,7 +139,7 @@ public class SmppBindingTest {
SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
assertEquals("Hello SMPP world!", smppMessage.getBody());
- assertEquals(9, smppMessage.getHeaders().size());
+ assertEquals(10, 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
@@ -149,8 +149,8 @@ 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));
-
- Map<String, String> optionalParameters = smppMessage.getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
+
+ Map<String, Object> 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"));
@@ -158,6 +158,15 @@ public class SmppBindingTest {
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"));
+
+ Map<Short, Object> optionalParameter = smppMessage.getHeader(SmppConstants.OPTIONAL_PARAMETER, Map.class);
+ assertEquals(6, optionalParameter.size());
+ assertArrayEquals("OctetString".getBytes("UTF-8"), (byte[]) optionalParameter.get(Short.valueOf((short) 0x0202)));
+ assertEquals("COctetStrin", optionalParameter.get(Short.valueOf((short) 0x001D)));
+ assertEquals(Byte.valueOf((byte) 0x01), optionalParameter.get(Short.valueOf((short) 0x0005)));
+ assertEquals(Short.valueOf((short) 1), optionalParameter.get(Short.valueOf((short) 0x0008)));
+ assertEquals(Integer.valueOf(1), optionalParameter.get(Short.valueOf((short) 0x0017)));
+ assertNull("0x00", optionalParameter.get(Short.valueOf((short) 0x130C)));
}
@Test
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
index 5374753..8fe3193 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
@@ -196,7 +196,7 @@ public class SmppDataSmCommandTest {
optionalParameters.put(Short.valueOf((short) 0x2153), Short.valueOf((short) 9));
optionalParameters.put(Short.valueOf((short) 0x2154), Integer.valueOf(7400000));
optionalParameters.put(Short.valueOf((short) 0x2155), null);
- exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETERS, optionalParameters);
+ exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETER, optionalParameters);
expect(session.dataShortMessage(eq("CMT"), eq(TypeOfNumber.UNKNOWN), eq(NumberingPlanIndicator.UNKNOWN), eq("1616"),
eq(TypeOfNumber.UNKNOWN), eq(NumberingPlanIndicator.UNKNOWN), eq("1717"), eq(new ESMClass()),
eq(new RegisteredDelivery((byte) 1)), eq(DataCoding.newInstance((byte) 0)),
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java
index 3434d40..c6ff222 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitMultiCommandTest.java
@@ -506,7 +506,7 @@ public class SmppSubmitMultiCommandTest {
optionalParameters.put(Short.valueOf((short) 0x2153), Short.valueOf((short) 9));
optionalParameters.put(Short.valueOf((short) 0x2154), Integer.valueOf(7400000));
optionalParameters.put(Short.valueOf((short) 0x2155), null);
- exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETERS, optionalParameters);
+ exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETER, optionalParameters);
exchange.getIn().setBody("short message body");
expect(session.submitMultiple(eq("CMT"), eq(TypeOfNumber.NATIONAL), eq(NumberingPlanIndicator.NATIONAL), eq("1818"),
aryEq(new Address[]{new Address(TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.INTERNET, "1919")}),
http://git-wip-us.apache.org/repos/asf/camel/blob/8989fd3f/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java
index 9f32a95..c74ca76 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppSubmitSmCommandTest.java
@@ -253,7 +253,7 @@ public class SmppSubmitSmCommandTest {
optionalParameters.put(Short.valueOf((short) 0x2153), Short.valueOf((short) 9));
optionalParameters.put(Short.valueOf((short) 0x2154), Integer.valueOf(7400000));
optionalParameters.put(Short.valueOf((short) 0x2155), null);
- exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETERS, optionalParameters);
+ exchange.getIn().setHeader(SmppConstants.OPTIONAL_PARAMETER, optionalParameters);
expect(session.submitShortMessage(eq("CMT"), eq(TypeOfNumber.NATIONAL), eq(NumberingPlanIndicator.NATIONAL), eq("1818"),
eq(TypeOfNumber.INTERNATIONAL), eq(NumberingPlanIndicator.INTERNET), eq("1919"),
eq(new ESMClass()), eq((byte) 1), eq((byte) 2), eq("-300101001831100-"), eq("-300101003702200-"), eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS)),
[3/3] git commit: CAMEL-6655: SMPP - add support of Vendor Specific
Optional Parameter
Posted by cm...@apache.org.
CAMEL-6655: SMPP - add support of Vendor Specific Optional Parameter
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/36b2c8c6
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/36b2c8c6
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/36b2c8c6
Branch: refs/heads/camel-2.10.x
Commit: 36b2c8c6d1b86cccb09de2df2adf53c12f8dcdee
Parents: 8989fd3
Author: cmueller <cm...@apache.org>
Authored: Sun Aug 25 16:24:15 2013 +0200
Committer: cmueller <cm...@apache.org>
Committed: Sun Aug 25 16:29:50 2013 +0200
----------------------------------------------------------------------
.../camel/component/smpp/SmppDataSmCommand.java | 32 ++++++++++++++++++--
.../component/smpp/SmppDataSmCommandTest.java | 27 ++++++++++++++++-
2 files changed, 56 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/36b2c8c6/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java
index a29a388..213af70 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppDataSmCommand.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.component.smpp;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -24,6 +25,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.jsmpp.bean.DataCoding;
import org.jsmpp.bean.DataSm;
+import org.jsmpp.bean.DeliverSm;
import org.jsmpp.bean.ESMClass;
import org.jsmpp.bean.NumberingPlanIndicator;
import org.jsmpp.bean.OptionalParameter;
@@ -78,10 +80,11 @@ public class SmppDataSmCommand extends AbstractSmppCommand {
Message message = getResponseMessage(exchange);
message.setHeader(SmppConstants.ID, result.getMessageId());
- message.setHeader(SmppConstants.OPTIONAL_PARAMETERS, getOptionalParametersAsMap(result.getOptionalParameters()));
+ message.setHeader(SmppConstants.OPTIONAL_PARAMETERS, createOptionalParameterByName(result.getOptionalParameters()));
+ message.setHeader(SmppConstants.OPTIONAL_PARAMETER, createOptionalParameterByCode(result.getOptionalParameters()));
}
- protected Map<String, String> getOptionalParametersAsMap(OptionalParameter[] optionalParameters) {
+ protected Map<String, String> createOptionalParameterByName(OptionalParameter[] optionalParameters) {
if (optionalParameters == null) {
return null;
}
@@ -109,6 +112,31 @@ public class SmppDataSmCommand extends AbstractSmppCommand {
return optParams;
}
+ protected Map<java.lang.Short, Object> createOptionalParameterByCode(OptionalParameter[] optionalParameters) {
+ if (optionalParameters == null) {
+ return null;
+ }
+
+ Map<java.lang.Short, Object> optParams = new HashMap<java.lang.Short, Object>();
+ for (OptionalParameter optPara : optionalParameters) {
+ if (COctetString.class.isInstance(optPara)) {
+ optParams.put(java.lang.Short.valueOf(optPara.tag), ((COctetString) optPara).getValueAsString());
+ } else if (org.jsmpp.bean.OptionalParameter.OctetString.class.isInstance(optPara)) {
+ optParams.put(java.lang.Short.valueOf(optPara.tag), ((OctetString) optPara).getValue());
+ } else if (org.jsmpp.bean.OptionalParameter.Byte.class.isInstance(optPara)) {
+ optParams.put(java.lang.Short.valueOf(optPara.tag), java.lang.Byte.valueOf(((org.jsmpp.bean.OptionalParameter.Byte) optPara).getValue()));
+ } else if (org.jsmpp.bean.OptionalParameter.Short.class.isInstance(optPara)) {
+ optParams.put(java.lang.Short.valueOf(optPara.tag), java.lang.Short.valueOf(((org.jsmpp.bean.OptionalParameter.Short) optPara).getValue()));
+ } else if (org.jsmpp.bean.OptionalParameter.Int.class.isInstance(optPara)) {
+ optParams.put(java.lang.Short.valueOf(optPara.tag), Integer.valueOf(((org.jsmpp.bean.OptionalParameter.Int) optPara).getValue()));
+ } else if (Null.class.isInstance(optPara)) {
+ optParams.put(java.lang.Short.valueOf(optPara.tag), null);
+ }
+ }
+
+ return optParams;
+ }
+
@SuppressWarnings({"unchecked"})
protected DataSm createDataSm(Exchange exchange) {
Message in = exchange.getIn();
http://git-wip-us.apache.org/repos/asf/camel/blob/36b2c8c6/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
index 8fe3193..e95da28 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDataSmCommandTest.java
@@ -45,6 +45,7 @@ import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -164,7 +165,9 @@ public class SmppDataSmCommandTest {
verify(session);
+ assertEquals(3, exchange.getOut().getHeaders().size());
assertEquals("1", exchange.getOut().getHeader(SmppConstants.ID));
+
Map<String, String> optParamMap = exchange.getOut().getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
assertEquals(6, optParamMap.size());
assertEquals("1292", optParamMap.get("SOURCE_SUBADDRESS"));
@@ -174,8 +177,18 @@ public class SmppDataSmCommandTest {
assertEquals("2", optParamMap.get("DEST_TELEMATICS_ID"));
assertEquals("3600000", optParamMap.get("QOS_TIME_TO_LIVE"));
assertNull(optParamMap.get("ALERT_ON_MESSAGE_DELIVERY"));
+
+ Map<Short, Object> optionalResultParameter = exchange.getOut().getHeader(SmppConstants.OPTIONAL_PARAMETER, Map.class);
+ assertEquals(6, optionalResultParameter.size());
+ assertArrayEquals("1292".getBytes("UTF-8"), (byte[]) optionalResultParameter.get(Short.valueOf((short) 0x0202)));
+ // FIXME: fix required in JSMPP. See http://code.google.com/p/jsmpp/issues/detail?id=140
+ //assertEquals("urgent", optionalResultParameter.get(Short.valueOf((short) 0x001D)));
+ assertEquals(Byte.valueOf((byte) 4), optionalResultParameter.get(Short.valueOf((short) 0x0005)));
+ assertEquals(Short.valueOf((short) 2), optionalResultParameter.get(Short.valueOf((short) 0x0008)));
+ assertEquals(Integer.valueOf(3600000), optionalResultParameter.get(Short.valueOf((short) 0x0017)));
+ assertNull(optionalResultParameter.get(Short.valueOf((short) 0x130C)));
}
-
+
@SuppressWarnings("unchecked")
@Test
public void executeWithOptionalParameterNewStyle() throws Exception {
@@ -223,7 +236,9 @@ public class SmppDataSmCommandTest {
verify(session);
+ assertEquals(3, exchange.getOut().getHeaders().size());
assertEquals("1", exchange.getOut().getHeader(SmppConstants.ID));
+
Map<String, String> optParamMap = exchange.getOut().getHeader(SmppConstants.OPTIONAL_PARAMETERS, Map.class);
assertEquals(6, optParamMap.size());
assertEquals("1292", optParamMap.get("SOURCE_SUBADDRESS"));
@@ -233,5 +248,15 @@ public class SmppDataSmCommandTest {
assertEquals("2", optParamMap.get("DEST_TELEMATICS_ID"));
assertEquals("3600000", optParamMap.get("QOS_TIME_TO_LIVE"));
assertNull(optParamMap.get("ALERT_ON_MESSAGE_DELIVERY"));
+
+ Map<Short, Object> optionalResultParameter = exchange.getOut().getHeader(SmppConstants.OPTIONAL_PARAMETER, Map.class);
+ assertEquals(6, optionalResultParameter.size());
+ assertArrayEquals("1292".getBytes("UTF-8"), (byte[]) optionalResultParameter.get(Short.valueOf((short) 0x0202)));
+ // FIXME: fix required in JSMPP. See http://code.google.com/p/jsmpp/issues/detail?id=140
+ //assertEquals("urgent", optionalResultParameter.get(Short.valueOf((short) 0x001D)));
+ assertEquals(Byte.valueOf((byte) 4), optionalResultParameter.get(Short.valueOf((short) 0x0005)));
+ assertEquals(Short.valueOf((short) 2), optionalResultParameter.get(Short.valueOf((short) 0x0008)));
+ assertEquals(Integer.valueOf(3600000), optionalResultParameter.get(Short.valueOf((short) 0x0017)));
+ assertNull(optionalResultParameter.get(Short.valueOf((short) 0x130C)));
}
}
\ No newline at end of file