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 2016/05/28 08:08:18 UTC

[2/3] camel git commit: CAMEL-8219: camel-smpp - use jsmpp version 2.2.3

CAMEL-8219: camel-smpp - use jsmpp version 2.2.3


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/611ceef0
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/611ceef0
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/611ceef0

Branch: refs/heads/master
Commit: 611ceef0402a34d60822efa1a740ec52ec269093
Parents: fc02923
Author: Pascal Schumacher <pa...@gmx.net>
Authored: Thu Mar 17 20:07:31 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat May 28 09:53:47 2016 +0200

----------------------------------------------------------------------
 .../component/smpp/AbstractSmppCommand.java     | 37 ++++----
 .../smpp/MessageReceiverListenerImpl.java       |  2 +-
 .../camel/component/smpp/SmppBinding.java       | 43 +++++----
 .../camel/component/smpp/SmppConsumer.java      |  4 +-
 .../camel/component/smpp/SmppDataSmCommand.java | 12 +--
 .../camel/component/smpp/SmppMessage.java       |  5 +-
 .../camel/component/smpp/SmppProducer.java      |  6 +-
 .../camel/component/smpp/SmppSmCommand.java     | 15 ++--
 .../component/smpp/SmppSubmitMultiCommand.java  |  4 +-
 .../component/smpp/SmppSubmitSmCommand.java     | 12 +--
 .../apache/camel/component/smpp/SmppUtils.java  | 14 +--
 .../component/smpp/AbstractSmppCommandTest.java | 15 ++--
 .../smpp/MessageReceiverListenerImplTest.java   |  2 +-
 .../camel/component/smpp/SmppBindingTest.java   | 18 ++--
 .../camel/component/smpp/SmppComponentTest.java |  6 +-
 .../component/smpp/SmppConfigurationTest.java   |  3 +-
 .../camel/component/smpp/SmppConsumerTest.java  |  4 +-
 .../component/smpp/SmppDataSmCommandTest.java   | 60 ++++++-------
 .../camel/component/smpp/SmppMessageTest.java   |  1 +
 .../smpp/SmppSubmitMultiCommandTest.java        | 94 +++++++++-----------
 .../component/smpp/SmppSubmitSmCommandTest.java | 58 ++++++------
 .../camel/component/smpp/SmppUtilsTest.java     | 23 +----
 parent/pom.xml                                  |  2 +-
 23 files changed, 208 insertions(+), 232 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/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 52cfb50..6fd627b 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
@@ -18,14 +18,15 @@ package org.apache.camel.component.smpp;
 
 import java.lang.reflect.Field;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.jsmpp.bean.OptionalParameter;
-import org.jsmpp.bean.OptionalParameter.COctetString;
 import org.jsmpp.bean.OptionalParameter.OctetString;
 import org.jsmpp.bean.OptionalParameter.Tag;
 import org.jsmpp.session.SMPPSession;
@@ -96,34 +97,40 @@ public abstract class AbstractSmppCommand implements SmppCommand {
      * @return
      */
     @Deprecated
-    @SuppressWarnings("rawtypes")
+    @SuppressWarnings({ "rawtypes", "unchecked" })
     protected List<OptionalParameter> createOptionalParametersByName(Map<String, String> optinalParamaters) {
         List<OptionalParameter> optParams = new ArrayList<OptionalParameter>();
 
         for (Entry<String, String> entry : optinalParamaters.entrySet()) {
             OptionalParameter optParam = null;
 
+            String value = entry.getValue();
             try {
                 Tag tag = Tag.valueOf(entry.getKey());
                 Class type = determineTypeClass(tag);
 
-                if (OctetString.class.equals(type)) {
-                    optParam = new OptionalParameter.OctetString(tag.code(), entry.getValue());
-                } else if (COctetString.class.equals(type)) {
-                    optParam = new OptionalParameter.COctetString(tag.code(), entry.getValue());
-                } else if (org.jsmpp.bean.OptionalParameter.Byte.class.equals(type)) {
-                    optParam = new OptionalParameter.Byte(tag.code(), Byte.valueOf(entry.getValue()));
-                } else if (org.jsmpp.bean.OptionalParameter.Int.class.equals(type)) {
-                    optParam = new OptionalParameter.Int(tag.code(), Integer.valueOf(entry.getValue()));
-                } else if (org.jsmpp.bean.OptionalParameter.Short.class.equals(type)) {
-                    optParam = new OptionalParameter.Short(tag.code(), Short.valueOf(entry.getValue()));
-                } else if (org.jsmpp.bean.OptionalParameter.Null.class.equals(type)) {
-                    optParam = new OptionalParameter.Null(tag);
+                Set<Class> ancestorClasses = new HashSet<Class>(2);
+                Class superclass = type.getSuperclass();
+                ancestorClasses.add(superclass);
+                if (superclass != Object.class) {
+                    ancestorClasses.add(superclass.getSuperclass());
+                }
+                if (ancestorClasses.contains(OctetString.class)) {
+                    optParam = (OptionalParameter) type.getConstructor(byte[].class).newInstance(value.getBytes());
+                } else if (ancestorClasses.contains(OptionalParameter.Byte.class)) {
+                    Byte byteValue = (value == null) ? 0 : Byte.valueOf(value); // required because jsmpp 2.1.1 interpreted null as 0
+                    optParam = (OptionalParameter) type.getConstructor(byte.class).newInstance(byteValue);
+                } else if (ancestorClasses.contains(OptionalParameter.Int.class)) {
+                    Integer intValue = (value == null) ? 0 : Integer.valueOf(value); // required because jsmpp 2.1.1 interpreted null as 0
+                    optParam = (OptionalParameter) type.getConstructor(int.class).newInstance(intValue);
+                } else if (ancestorClasses.contains(OptionalParameter.Short.class)) {
+                    Short shortValue = (value == null) ? 0 : Short.valueOf(value); // required because jsmpp 2.1.1 interpreted null as 0
+                    optParam = (OptionalParameter) type.getConstructor(short.class).newInstance(shortValue);
                 }
 
                 optParams.add(optParam);
             } catch (Exception e) {
-                log.info("Couldn't determine optional parameter for key {} and value {}. Skip this one.", entry.getKey(), entry.getValue());
+                log.info("Couldn't determine optional parameter for key {} and value {}. Skip this one.", entry.getKey(), value);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java
index c62c687..645e3f2 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java
@@ -107,7 +107,7 @@ public class MessageReceiverListenerImpl implements MessageReceiverListener {
             throw pre;
         }
 
-        return new DataSmResult(newMessageId, dataSm.getOptionalParametes());
+        return new DataSmResult(newMessageId, dataSm.getOptionalParameters());
     }
 
     public void setMessageIDGenerator(MessageIDGenerator messageIDGenerator) {

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/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 cbb5c64..79d9dc7 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
@@ -34,6 +34,7 @@ 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.bean.OptionalParameter.Tag;
 import org.jsmpp.session.SMPPSession;
 import org.jsmpp.util.DefaultDecomposer;
 import org.slf4j.Logger;
@@ -100,8 +101,8 @@ public class SmppBinding {
 
         String messagePayload = null;
 
-        if (deliverSm.getShortMessage() == null && deliverSm.getOptionalParametes() != null) {
-            List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParametes());
+        if (deliverSm.getShortMessage() == null && deliverSm.getOptionalParameters() != null) {
+            List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParameters());
 
             for (OptionalParameter optPara : oplist) {
                 if (OptionalParameter.Tag.MESSAGE_PAYLOAD.code() == optPara.tag && OctetString.class
@@ -137,7 +138,7 @@ public class SmppBinding {
                 smppMessage.setHeader(SmppConstants.FINAL_STATUS, smscDeliveryReceipt.getFinalStatus());
             }
 
-            if (deliverSm.getOptionalParametes() != null && deliverSm.getOptionalParametes().length > 0) {
+            if (deliverSm.getOptionalParameters() != null && deliverSm.getOptionalParameters().length > 0) {
                 // the deprecated way
                 Map<String, Object> optionalParameters = createOptionalParameterByName(deliverSm);
                 smppMessage.setHeader(SmppConstants.OPTIONAL_PARAMETERS, optionalParameters);
@@ -150,7 +151,8 @@ public class SmppBinding {
             smppMessage.setHeader(SmppConstants.MESSAGE_TYPE, SmppMessageType.DeliverSm.toString());
 
             if (deliverSm.getShortMessage() != null) {
-                if (SmppUtils.parseAlphabetFromDataCoding(deliverSm.getDataCoding()) == Alphabet.ALPHA_8_BIT) {
+                Alphabet alphabet = Alphabet.parseDataCoding(deliverSm.getDataCoding());
+                if (SmppUtils.is8Bit(alphabet)) {
                     smppMessage.setBody(deliverSm.getShortMessage());
                 } else {
                     smppMessage.setBody(String.valueOf(new String(deliverSm.getShortMessage(), configuration.getEncoding())));
@@ -177,23 +179,28 @@ public class SmppBinding {
     }
 
     private Map<String, Object> createOptionalParameterByName(DeliverSm deliverSm) {
-        List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParametes());
+        List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParameters());
 
         Map<String, Object> optParams = new HashMap<String, Object>();
         for (OptionalParameter optPara : oplist) {
             try {
-                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);
+                Tag valueOfTag = OptionalParameter.Tag.valueOf(optPara.tag);
+                if (valueOfTag != null) {
+                    if (COctetString.class.isInstance(optPara)) {
+                        optParams.put(valueOfTag.toString(), ((COctetString) optPara).getValueAsString());
+                    } else if (org.jsmpp.bean.OptionalParameter.OctetString.class.isInstance(optPara)) {
+                        optParams.put(valueOfTag.toString(), ((OctetString) optPara).getValueAsString());
+                    } else if (org.jsmpp.bean.OptionalParameter.Byte.class.isInstance(optPara)) {
+                        optParams.put(valueOfTag.toString(), Byte.valueOf(((org.jsmpp.bean.OptionalParameter.Byte) optPara).getValue()));
+                    } else if (org.jsmpp.bean.OptionalParameter.Short.class.isInstance(optPara)) {
+                        optParams.put(valueOfTag.toString(), Short.valueOf(((org.jsmpp.bean.OptionalParameter.Short) optPara).getValue()));
+                    } else if (org.jsmpp.bean.OptionalParameter.Int.class.isInstance(optPara)) {
+                        optParams.put(valueOfTag.toString(), Integer.valueOf(((org.jsmpp.bean.OptionalParameter.Int) optPara).getValue()));
+                    } else if (Null.class.isInstance(optPara)) {
+                        optParams.put(valueOfTag.toString(), null);
+                    }
+                } else {
+                    LOG.debug("Skipping optional parameter with tag {} because it was not recogized", optPara.tag);
                 }
             } catch (IllegalArgumentException e) {
                 LOG.debug("Skipping optional parameter with tag {} due " + e.getMessage(), optPara.tag);
@@ -204,7 +211,7 @@ public class SmppBinding {
     }
 
     private Map<Short, Object> createOptionalParameterByCode(DeliverSm deliverSm) {
-        List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParametes());
+        List<OptionalParameter> oplist = Arrays.asList(deliverSm.getOptionalParameters());
 
         Map<Short, Object> optParams = new HashMap<Short, Object>();
         for (OptionalParameter optPara : oplist) {

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java
index 3052b9d..9bb5030 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java
@@ -31,6 +31,7 @@ import org.jsmpp.extra.SessionState;
 import org.jsmpp.session.BindParameter;
 import org.jsmpp.session.MessageReceiverListener;
 import org.jsmpp.session.SMPPSession;
+import org.jsmpp.session.Session;
 import org.jsmpp.session.SessionStateListener;
 import org.jsmpp.util.DefaultComposer;
 import org.slf4j.Logger;
@@ -61,7 +62,8 @@ public class SmppConsumer extends DefaultConsumer {
 
         this.configuration = config;
         this.internalSessionStateListener = new SessionStateListener() {
-            public void onStateChange(SessionState newState, SessionState oldState, Object source) {
+            @Override
+            public void onStateChange(SessionState newState, SessionState oldState, Session source) {
                 if (configuration.getSessionStateListener() != null) {
                     configuration.getSessionStateListener().onStateChange(newState, oldState, source);
                 }

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/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 272f800..49040540 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
@@ -22,7 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
-import org.jsmpp.bean.DataCoding;
+import org.jsmpp.bean.DataCodings;
 import org.jsmpp.bean.DataSm;
 import org.jsmpp.bean.ESMClass;
 import org.jsmpp.bean.NumberingPlanIndicator;
@@ -65,8 +65,8 @@ public class SmppDataSmCommand extends AbstractSmppCommand {
                     dataSm.getDestAddress(),
                     new ESMClass(dataSm.getEsmClass()),
                     new RegisteredDelivery(dataSm.getRegisteredDelivery()),
-                    DataCoding.newInstance(dataSm.getDataCoding()),
-                    dataSm.getOptionalParametes());
+                    DataCodings.newInstance(dataSm.getDataCoding()),
+                    dataSm.getOptionalParameters());
         } catch (Exception e) {
             throw new SmppException(e);
         }
@@ -199,14 +199,14 @@ public class SmppDataSmCommand extends AbstractSmppCommand {
         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()]));
+            dataSm.setOptionalParameters(optParams.toArray(new OptionalParameter[optParams.size()]));
         } else {
             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()]));
+                dataSm.setOptionalParameters(optParams.toArray(new OptionalParameter[optParams.size()]));
             } else {
-                dataSm.setOptionalParametes();
+                dataSm.setOptionalParameters();
             }
         }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java
index 3ffd445..760c920 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppMessage.java
@@ -39,8 +39,6 @@ public class SmppMessage extends DefaultMessage {
     private Command command;
     private SmppConfiguration configuration;
     
-    
-    
     public SmppMessage(SmppConfiguration configuration) {
         this.configuration = configuration;
     }
@@ -89,7 +87,8 @@ public class SmppMessage extends DefaultMessage {
             if (shortMessage == null || shortMessage.length == 0) {
                 return null;
             }
-            if (SmppUtils.parseAlphabetFromDataCoding(msgRequest.getDataCoding()) == Alphabet.ALPHA_8_BIT) {
+            Alphabet alphabet = Alphabet.parseDataCoding(msgRequest.getDataCoding());
+            if (SmppUtils.is8Bit(alphabet)) {
                 return shortMessage;
             }
             

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java
index b80e11d..589b865 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java
@@ -31,6 +31,7 @@ import org.jsmpp.bean.TypeOfNumber;
 import org.jsmpp.extra.SessionState;
 import org.jsmpp.session.BindParameter;
 import org.jsmpp.session.SMPPSession;
+import org.jsmpp.session.Session;
 import org.jsmpp.session.SessionStateListener;
 import org.jsmpp.util.DefaultComposer;
 import org.slf4j.Logger;
@@ -52,7 +53,8 @@ public class SmppProducer extends DefaultProducer {
         super(endpoint);
         this.configuration = config;
         this.internalSessionStateListener = new SessionStateListener() {
-            public void onStateChange(SessionState newState, SessionState oldState, Object source) {
+            @Override
+            public void onStateChange(SessionState newState, SessionState oldState, Session source) {
                 if (configuration.getSessionStateListener() != null) {
                     configuration.getSessionStateListener().onStateChange(newState, oldState, source);
                 }
@@ -237,4 +239,4 @@ public class SmppProducer extends DefaultProducer {
     public String toString() {
         return "SmppProducer[" + getEndpoint().getConnectionString() + "]";
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
index ae1342d..c308e4d 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
@@ -81,17 +81,12 @@ public abstract class SmppSmCommand extends AbstractSmppCommand {
         String body = message.getBody(String.class);
 
         SmppSplitter splitter;
-        switch (alphabet) {
-        case ALPHA_8_BIT:
+        if (SmppUtils.is8Bit(alphabet)) {
             splitter = new Smpp8BitSplitter(body.length());
-            break;
-        case ALPHA_UCS2:
+        } else if (alphabet == Alphabet.ALPHA_UCS2) {
             splitter = new SmppUcs2Splitter(body.length());
-            break;
-        case ALPHA_DEFAULT:
-        default:
+        } else {
             splitter = new SmppDefaultSplitter(body.length());
-            break;
         }
 
         return splitter;
@@ -112,10 +107,10 @@ public abstract class SmppSmCommand extends AbstractSmppCommand {
     private static boolean has8bitDataCoding(Message message) {
         Byte dcs = message.getHeader(SmppConstants.DATA_CODING, Byte.class);
         if (dcs != null) {
-            return SmppUtils.parseAlphabetFromDataCoding(dcs.byteValue()) == Alphabet.ALPHA_8_BIT;
+            return SmppUtils.is8Bit(Alphabet.parseDataCoding(dcs.byteValue()));
         } else {
             Byte alphabet = message.getHeader(SmppConstants.ALPHABET, Byte.class);
-            return alphabet != null && alphabet.equals(Alphabet.ALPHA_8_BIT.value());
+            return alphabet != null && SmppUtils.is8Bit(Alphabet.valueOf(alphabet));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/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 3188ce4..8faa487 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
@@ -26,7 +26,7 @@ import java.util.Map;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.jsmpp.bean.Address;
-import org.jsmpp.bean.DataCoding;
+import org.jsmpp.bean.DataCodings;
 import org.jsmpp.bean.ESMClass;
 import org.jsmpp.bean.GSMSpecificFeature;
 import org.jsmpp.bean.MessageMode;
@@ -72,7 +72,7 @@ public class SmppSubmitMultiCommand extends SmppSmCommand {
                         submitMulti.getValidityPeriod(),
                         new RegisteredDelivery(submitMulti.getRegisteredDelivery()),
                         new ReplaceIfPresentFlag(submitMulti.getReplaceIfPresentFlag()),
-                        DataCoding.newInstance(submitMulti.getDataCoding()),
+                        DataCodings.newInstance(submitMulti.getDataCoding()),
                         submitMulti.getSmDefaultMsgId(),
                         submitMulti.getShortMessage(),
                         submitMulti.getOptionalParameters());

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/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 c02697a..542266f 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
@@ -23,7 +23,7 @@ import java.util.Map;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
-import org.jsmpp.bean.DataCoding;
+import org.jsmpp.bean.DataCodings;
 import org.jsmpp.bean.ESMClass;
 import org.jsmpp.bean.GSMSpecificFeature;
 import org.jsmpp.bean.MessageMode;
@@ -69,10 +69,10 @@ public class SmppSubmitSmCommand extends SmppSmCommand {
                         submitSm.getValidityPeriod(),
                         new RegisteredDelivery(submitSm.getRegisteredDelivery()),
                         submitSm.getReplaceIfPresent(),
-                        DataCoding.newInstance(submitSm.getDataCoding()),
+                        DataCodings.newInstance(submitSm.getDataCoding()),
                         (byte) 0,
                         submitSm.getShortMessage(),
-                        submitSm.getOptionalParametes());
+                        submitSm.getOptionalParameters());
             } catch (Exception e) {
                 throw new SmppException(e);
             }
@@ -207,14 +207,14 @@ public class SmppSubmitSmCommand extends SmppSmCommand {
         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()]));
+            submitSm.setOptionalParameters(optParams.toArray(new OptionalParameter[optParams.size()]));
         } else {
             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()]));
+                submitSm.setOptionalParameters(optParams.toArray(new OptionalParameter[optParams.size()]));
             } else {
-                submitSm.setOptionalParametes();
+                submitSm.setOptionalParameters();
             }
         }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUtils.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUtils.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUtils.java
index 9a427f6..2cb8815 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUtils.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUtils.java
@@ -115,14 +115,8 @@ public final class SmppUtils {
         }
     }
 
-    public static Alphabet parseAlphabetFromDataCoding(byte dataCoding) {
-        /* Both the 3.4 and 5.0 SMPP specs clearly state that 0x02 is
-         * 'Octet-unspecified (8-bit)', but jsmpp doesn't account for this for
-         * some reason.
-         */
-        return dataCoding == 0x02
-            ? Alphabet.ALPHA_8_BIT
-            : Alphabet.valueOf((byte)(dataCoding & Alphabet.MASK_ALPHABET));
+    public static boolean is8Bit(Alphabet alphabet) {
+        return alphabet == Alphabet.ALPHA_UNSPECIFIED_2 || alphabet == Alphabet.ALPHA_8_BIT;
     }
 
     /**
@@ -160,7 +154,7 @@ public final class SmppUtils {
         dest.setDestAddrNpi(src.getDestAddrNpi());
         dest.setDestAddrTon(src.getDestAddrTon());
         dest.setEsmClass(src.getEsmClass());
-        dest.setOptionalParametes(src.getOptionalParametes());
+        dest.setOptionalParameters(src.getOptionalParameters());
         dest.setPriorityFlag(src.getPriorityFlag());
         dest.setProtocolId(src.getProtocolId());
         dest.setRegisteredDelivery(src.getRegisteredDelivery());
@@ -251,7 +245,7 @@ public final class SmppUtils {
         dest.setDestAddrNpi(src.getDestAddrNpi());
         dest.setDestAddrTon(src.getDestAddrTon());
         dest.setEsmClass(src.getEsmClass());
-        dest.setOptionalParametes(src.getOptionalParametes());
+        dest.setOptionalParameters(src.getOptionalParameters());
         dest.setRegisteredDelivery(src.getRegisteredDelivery());
         dest.setSequenceNumber(src.getSequenceNumber());
         dest.setServiceType(src.getServiceType());

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/AbstractSmppCommandTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/AbstractSmppCommandTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/AbstractSmppCommandTest.java
index 33c5d18..a671c95 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/AbstractSmppCommandTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/AbstractSmppCommandTest.java
@@ -20,8 +20,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
-import org.jsmpp.bean.OptionalParameter.COctetString;
-import org.jsmpp.bean.OptionalParameter.OctetString;
+import org.jsmpp.bean.OptionalParameter;
 import org.jsmpp.bean.OptionalParameter.Tag;
 import org.jsmpp.session.SMPPSession;
 import org.junit.Before;
@@ -64,11 +63,11 @@ public class AbstractSmppCommandTest {
 
     @Test
     public void determineTypeClass() throws Exception {
-        assertSame(OctetString.class, command.determineTypeClass(Tag.SOURCE_SUBADDRESS));
-        assertSame(COctetString.class, command.determineTypeClass(Tag.ADDITIONAL_STATUS_INFO_TEXT));
-        assertSame(org.jsmpp.bean.OptionalParameter.Byte.class, command.determineTypeClass(Tag.DEST_ADDR_SUBUNIT));
-        assertSame(org.jsmpp.bean.OptionalParameter.Short.class, command.determineTypeClass(Tag.DEST_TELEMATICS_ID));
-        assertSame(org.jsmpp.bean.OptionalParameter.Int.class, command.determineTypeClass(Tag.QOS_TIME_TO_LIVE));
-        assertSame(org.jsmpp.bean.OptionalParameter.Null.class, command.determineTypeClass(Tag.ALERT_ON_MESSAGE_DELIVERY));
+        assertSame(OptionalParameter.Source_subaddress.class, command.determineTypeClass(Tag.SOURCE_SUBADDRESS));
+        assertSame(OptionalParameter.Additional_status_info_text.class, command.determineTypeClass(Tag.ADDITIONAL_STATUS_INFO_TEXT));
+        assertSame(OptionalParameter.Dest_addr_subunit.class, command.determineTypeClass(Tag.DEST_ADDR_SUBUNIT));
+        assertSame(OptionalParameter.Dest_telematics_id.class, command.determineTypeClass(Tag.DEST_TELEMATICS_ID));
+        assertSame(OptionalParameter.Qos_time_to_live.class, command.determineTypeClass(Tag.QOS_TIME_TO_LIVE));
+        assertSame(OptionalParameter.Alert_on_message_delivery.class, command.determineTypeClass(Tag.ALERT_ON_MESSAGE_DELIVERY));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java
index c81b18c..32fbf7b 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java
@@ -108,7 +108,7 @@ public class MessageReceiverListenerImplTest {
             .andReturn(exchange);
         processor.process(exchange);
         expect(exchange.getException()).andReturn(null);
-        expect(dataSm.getOptionalParametes())
+        expect(dataSm.getOptionalParameters())
             .andReturn(optionalParameters);
         
         replay(endpoint, processor, exceptionHandler, session, dataSm, exchange);

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/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 dea34a4..92edbc3 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
@@ -133,7 +133,7 @@ public class SmppBindingTest {
         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(
+        deliverSm.setOptionalParameters(
             new OptionalParameter.OctetString(Tag.SOURCE_SUBADDRESS, "OctetString"),
             new OptionalParameter.COctetString((short) 0x001D, "COctetString"),
             new OptionalParameter.Byte(Tag.DEST_ADDR_SUBUNIT, (byte) 0x01),
@@ -157,7 +157,7 @@ public class SmppBindingTest {
         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"));
+        assertEquals("COctetString", 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"));
@@ -166,7 +166,7 @@ public class SmppBindingTest {
         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("COctetString", 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)));
@@ -177,7 +177,7 @@ public class SmppBindingTest {
     public void createSmppMessageFromDeliveryReceiptWithPayloadInOptionalParameterShouldReturnASmppMessage() {
         DeliverSm deliverSm = new DeliverSm();
         deliverSm.setSmscDeliveryReceipt();
-        deliverSm.setOptionalParametes(new OctetString(OptionalParameter.Tag.MESSAGE_PAYLOAD,
+        deliverSm.setOptionalParameters(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);
@@ -196,10 +196,10 @@ public class SmppBindingTest {
     }
 
     @Test
-    public void createSmppMessageFromDeliveryReceiptWithoutShortMessageShouldNotThrowException() {
+    public void createSmppMessageFromDeliveryReceiptWithoutShortMessageShouldNotThrowException() throws Exception {
         DeliverSm deliverSm = new DeliverSm();
         deliverSm.setSmscDeliveryReceipt();
-        deliverSm.setOptionalParametes(new OptionalParameter.Short((short) 0x2153, (short) 0));
+        deliverSm.setOptionalParameters(new OptionalParameter.Short((short) 0x2153, (short) 0));
 
         try {
             SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
@@ -235,7 +235,7 @@ public class SmppBindingTest {
         assertEquals((byte) 8, smppMessage.getHeader(SmppConstants.SOURCE_ADDR_NPI));
         assertEquals((byte) 2, smppMessage.getHeader(SmppConstants.SOURCE_ADDR_TON));
         assertEquals("1919", smppMessage.getHeader(SmppConstants.DEST_ADDR));
-        assertEquals((byte) 20, smppMessage.getHeader(SmppConstants.DEST_ADDR_NPI));
+        assertEquals((byte) 14, smppMessage.getHeader(SmppConstants.DEST_ADDR_NPI));
         assertEquals((byte) 3, smppMessage.getHeader(SmppConstants.DEST_ADDR_TON));
         assertEquals("090831230627004+", smppMessage.getHeader(SmppConstants.SCHEDULE_DELIVERY_TIME));
         assertEquals("090901230627004+", smppMessage.getHeader(SmppConstants.VALIDITY_PERIOD));
@@ -257,7 +257,7 @@ public class SmppBindingTest {
         deliverSm.setScheduleDeliveryTime("090831230627004+");
         deliverSm.setValidityPeriod("090901230627004+");
         deliverSm.setServiceType("WAP");
-        deliverSm.setOptionalParametes(new OctetString(OptionalParameter.Tag.MESSAGE_PAYLOAD, "Hello SMPP world!"));
+        deliverSm.setOptionalParameters(new OctetString(OptionalParameter.Tag.MESSAGE_PAYLOAD, "Hello SMPP world!"));
         SmppMessage smppMessage = binding.createSmppMessage(deliverSm);
         
         assertEquals("Hello SMPP world!", smppMessage.getBody());
@@ -268,7 +268,7 @@ public class SmppBindingTest {
         assertEquals((byte) 8, smppMessage.getHeader(SmppConstants.SOURCE_ADDR_NPI));
         assertEquals((byte) 2, smppMessage.getHeader(SmppConstants.SOURCE_ADDR_TON));
         assertEquals("1919", smppMessage.getHeader(SmppConstants.DEST_ADDR));
-        assertEquals((byte) 20, smppMessage.getHeader(SmppConstants.DEST_ADDR_NPI));
+        assertEquals((byte) 14, smppMessage.getHeader(SmppConstants.DEST_ADDR_NPI));
         assertEquals((byte) 3, smppMessage.getHeader(SmppConstants.DEST_ADDR_TON));
         assertEquals("090831230627004+", smppMessage.getHeader(SmppConstants.SCHEDULE_DELIVERY_TIME));
         assertEquals("090901230627004+", smppMessage.getHeader(SmppConstants.VALIDITY_PERIOD));

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java
index 5acfab9..deecd23 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java
@@ -25,6 +25,7 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.SimpleRegistry;
 import org.jsmpp.extra.SessionState;
+import org.jsmpp.session.Session;
 import org.jsmpp.session.SessionStateListener;
 import org.junit.Before;
 import org.junit.Test;
@@ -180,7 +181,8 @@ public class SmppComponentTest {
     public void createEndpointWithSessionStateListener() throws Exception {
         SimpleRegistry registry = new SimpleRegistry();
         registry.put("sessionStateListener", new SessionStateListener() {
-            public void onStateChange(SessionState arg0, SessionState arg1, Object arg2) {
+            @Override
+            public void onStateChange(SessionState arg0, SessionState arg1, Session arg2) {
             }
         });
         context.setRegistry(registry);
@@ -189,4 +191,4 @@ public class SmppComponentTest {
         
         assertNotNull(endpoint.getConfiguration().getSessionStateListener());
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java
index 6211744..3cb4b5e 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java
@@ -25,6 +25,7 @@ import org.jsmpp.bean.NumberingPlanIndicator;
 import org.jsmpp.bean.SMSCDeliveryReceipt;
 import org.jsmpp.bean.TypeOfNumber;
 import org.jsmpp.extra.SessionState;
+import org.jsmpp.session.Session;
 import org.jsmpp.session.SessionStateListener;
 import org.junit.Before;
 import org.junit.Test;
@@ -233,7 +234,7 @@ public class SmppConfigurationTest {
         config.setHttpProxyUsername("user");
         config.setHttpProxyPassword("secret");
         config.setSessionStateListener(new SessionStateListener() {
-            public void onStateChange(SessionState arg0, SessionState arg1, Object arg2) {
+            public void onStateChange(SessionState arg0, SessionState arg1, Session arg2) {
             }
         });
         Map<String, String> proxyHeaders = new HashMap<String, String>();

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConsumerTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConsumerTest.java
index 3349e1f..2d7a7fa 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConsumerTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConsumerTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.smpp;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Processor;
 import org.jsmpp.bean.BindType;
 import org.jsmpp.bean.NumberingPlanIndicator;
@@ -28,7 +27,7 @@ import org.jsmpp.session.SessionStateListener;
 import org.junit.Before;
 import org.junit.Test;
 
-import static org.easymock.classextension.EasyMock.*;
+import static org.easymock.EasyMock.*;
 import static org.junit.Assert.assertSame;
 
 /**
@@ -43,7 +42,6 @@ public class SmppConsumerTest {
     private SmppConfiguration configuration;
     private Processor processor;
     private SMPPSession session;
-    private CamelContext camelContext;
 
     @Before
     public void setUp() {

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/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 e95da28..4938e40 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
@@ -24,7 +24,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
-import org.jsmpp.bean.DataCoding;
+import org.jsmpp.bean.DataCodings;
 import org.jsmpp.bean.ESMClass;
 import org.jsmpp.bean.NumberingPlanIndicator;
 import org.jsmpp.bean.OptionalParameter;
@@ -85,7 +85,7 @@ public class SmppDataSmCommandTest {
         exchange.getIn().setHeader(SmppConstants.COMMAND, "DataSm");
         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 RegisteredDelivery((byte) 1)), eq(DataCodings.newInstance((byte) 0))))
             .andReturn(new DataSmResult(new MessageId("1"), null));
 
         replay(session);
@@ -112,7 +112,7 @@ public class SmppDataSmCommandTest {
         exchange.getIn().setHeader(SmppConstants.REGISTERED_DELIVERY, new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS).value());
         expect(session.dataShortMessage(eq("XXX"), eq(TypeOfNumber.NATIONAL), eq(NumberingPlanIndicator.NATIONAL), eq("1818"),
                 eq(TypeOfNumber.INTERNATIONAL), eq(NumberingPlanIndicator.INTERNET), eq("1919"), eq(new ESMClass()),
-                eq(new RegisteredDelivery((byte) 2)), eq(DataCoding.newInstance((byte) 0))))
+                eq(new RegisteredDelivery((byte) 2)), eq(DataCodings.newInstance((byte) 0))))
             .andReturn(new DataSmResult(new MessageId("1"), null));
 
         replay(session);
@@ -147,17 +147,19 @@ public class SmppDataSmCommandTest {
         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))))
-            .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)}));
+                eq(new RegisteredDelivery((byte) 1)), eq(DataCodings.newInstance((byte) 0)),
+                eq(new OptionalParameter.Source_subaddress("1292".getBytes())),
+                eq(new OptionalParameter.Additional_status_info_text("urgent")),
+                eq(new OptionalParameter.Dest_addr_subunit((byte) 4)),
+                eq(new OptionalParameter.Dest_telematics_id((short) 2)),
+                eq(new OptionalParameter.Qos_time_to_live(3600000)),
+                eq(new OptionalParameter.Alert_on_message_delivery((byte) 0))))
+            .andReturn(new DataSmResult(new MessageId("1"), new OptionalParameter[] {new OptionalParameter.Source_subaddress("1292".getBytes()),
+                new OptionalParameter.Additional_status_info_text("urgent"),
+                new OptionalParameter.Dest_addr_subunit((byte) 4),
+                new OptionalParameter.Dest_telematics_id((short) 2),
+                new OptionalParameter.Qos_time_to_live(3600000),
+                new OptionalParameter.Alert_on_message_delivery((byte) 0)}));
 
         replay(session);
 
@@ -171,22 +173,20 @@ public class SmppDataSmCommandTest {
         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("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"));
+        assertEquals("0", 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("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)));
+        assertEquals((byte) 0, optionalResultParameter.get(Short.valueOf((short) 0x130C)));
     }
 
     @SuppressWarnings("unchecked")
@@ -212,7 +212,7 @@ public class SmppDataSmCommandTest {
         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)),
+                eq(new RegisteredDelivery((byte) 1)), eq(DataCodings.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)),
@@ -226,9 +226,9 @@ public class SmppDataSmCommandTest {
                 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)}));
+                new OptionalParameter.Source_subaddress("1292".getBytes()), new OptionalParameter.Additional_status_info_text("urgent"),
+                new OptionalParameter.Dest_addr_subunit((byte) 4), new OptionalParameter.Dest_telematics_id((short) 2),
+                new OptionalParameter.Qos_time_to_live(3600000), new OptionalParameter.Alert_on_message_delivery((byte) 0)}));
 
         replay(session);
 
@@ -242,21 +242,19 @@ public class SmppDataSmCommandTest {
         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("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"));
+        assertEquals("0", 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("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)));
+        assertEquals((byte) 0, optionalResultParameter.get(Short.valueOf((short) 0x130C)));
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java
index 0e54b0f..38dbc74 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppMessageTest.java
@@ -124,6 +124,7 @@ public class SmppMessageTest {
             for (String encoding : encodings) {
                 config.setEncoding(encoding);
                 message = new SmppMessage(command, config);
+                
                 assertArrayEquals(
                     String.format("data coding=0x%02X; encoding=%s",
                                   dataCoding,

http://git-wip-us.apache.org/repos/asf/camel/blob/611ceef0/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 c6ff222..2c5f562 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
@@ -28,7 +28,7 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.jsmpp.bean.Address;
 import org.jsmpp.bean.Alphabet;
-import org.jsmpp.bean.DataCoding;
+import org.jsmpp.bean.DataCodings;
 import org.jsmpp.bean.ESMClass;
 import org.jsmpp.bean.NumberingPlanIndicator;
 import org.jsmpp.bean.OptionalParameter;
@@ -95,8 +95,7 @@ public class SmppSubmitMultiCommandTest {
         expect(session.submitMultiple(eq("CMT"), eq(TypeOfNumber.UNKNOWN), eq(NumberingPlanIndicator.UNKNOWN), eq("1616"),
                 aryEq(new Address[]{new Address(TypeOfNumber.UNKNOWN, NumberingPlanIndicator.UNKNOWN, "1717")}),
                 eq(new ESMClass()), eq((byte) 0), eq((byte) 1), (String) isNull(), (String) isNull(), eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE)),
-                eq(ReplaceIfPresentFlag.DEFAULT), eq(DataCoding.newInstance((byte) 0)), eq((byte) 0), aryEq("short message body".getBytes()),
-                aryEq(new OptionalParameter[0])))
+                eq(ReplaceIfPresentFlag.DEFAULT), eq(DataCodings.newInstance((byte) 0)), eq((byte) 0), aryEq("short message body".getBytes())))
                 .andReturn(new SubmitMultiResult("1", new UnsuccessDelivery(new Address(TypeOfNumber.UNKNOWN, NumberingPlanIndicator.UNKNOWN, "1717"), 0)));
 
         replay(session);
@@ -131,8 +130,7 @@ public class SmppSubmitMultiCommandTest {
         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[0])))
+                eq(ReplaceIfPresentFlag.REPLACE), eq(DataCodings.newInstance((byte) 0)), eq((byte) 0), aryEq("short message body".getBytes())))
                 .andReturn(new SubmitMultiResult("1"));
 
         replay(session);
@@ -167,8 +165,7 @@ public class SmppSubmitMultiCommandTest {
         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("000003000000000R"), eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS)),
-                eq(ReplaceIfPresentFlag.REPLACE), eq(DataCoding.newInstance((byte) 0)), eq((byte) 0), aryEq("short message body".getBytes()),
-                aryEq(new OptionalParameter[0])))
+                eq(ReplaceIfPresentFlag.REPLACE), eq(DataCodings.newInstance((byte) 0)), eq((byte) 0), aryEq("short message body".getBytes())))
                 .andReturn(new SubmitMultiResult("1"));
 
         replay(session);
@@ -184,7 +181,7 @@ public class SmppSubmitMultiCommandTest {
 
     @Test
     public void bodyWithSmscDefaultDataCodingNarrowedToCharset() throws Exception {
-        final int dataCoding = 0x00; /* SMSC-default */
+        final byte dataCoding = (byte)0x00; /* SMSC-default */
         byte[] body = {(byte)0xFF, 'A', 'B', (byte)0x00, (byte)0xFF, (byte)0x7F, 'C', (byte)0xFF};
         byte[] bodyNarrowed = {'?', 'A', 'B', '\0', '?', (byte)0x7F, 'C', '?'};
 
@@ -210,10 +207,9 @@ public class SmppSubmitMultiCommandTest {
                                       (String) isNull(),
                                       eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE)),
                                       eq(ReplaceIfPresentFlag.DEFAULT),
-                                      eq(DataCoding.newInstance(dataCoding)),
+                                      eq(DataCodings.newInstance(dataCoding)),
                                       eq((byte) 0),
-                                      aryEq(bodyNarrowed),
-                                      aryEq(new OptionalParameter[0])))
+                                      aryEq(bodyNarrowed)))
             .andReturn(new SubmitMultiResult("1"));
 
         replay(session);
@@ -225,7 +221,7 @@ public class SmppSubmitMultiCommandTest {
 
     @Test
     public void bodyWithLatin1DataCodingNarrowedToCharset() throws Exception {
-        final int dataCoding = 0x03; /* ISO-8859-1 (Latin1) */
+        final byte dataCoding = (byte)0x03; /* ISO-8859-1 (Latin1) */
         byte[] body = {(byte)0xFF, 'A', 'B', (byte)0x00, (byte)0xFF, (byte)0x7F, 'C', (byte)0xFF};
         byte[] bodyNarrowed = {'?', 'A', 'B', '\0', '?', (byte)0x7F, 'C', '?'};
 
@@ -251,10 +247,9 @@ public class SmppSubmitMultiCommandTest {
                                       (String) isNull(),
                                       eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE)),
                                       eq(ReplaceIfPresentFlag.DEFAULT),
-                                      eq(DataCoding.newInstance(dataCoding)),
+                                      eq(DataCodings.newInstance(dataCoding)),
                                       eq((byte) 0),
-                                      aryEq(bodyNarrowed),
-                                      aryEq(new OptionalParameter[0])))
+                                      aryEq(bodyNarrowed)))
             .andReturn(new SubmitMultiResult("1"));
 
         replay(session);
@@ -266,7 +261,7 @@ public class SmppSubmitMultiCommandTest {
 
     @Test
     public void bodyWithSMPP8bitDataCodingNotModified() throws Exception {
-        final int dataCoding = 0x04; /* SMPP 8-bit */
+        final byte dataCoding = (byte)0x04; /* SMPP 8-bit */
         byte[] body = {(byte)0xFF, 'A', 'B', (byte)0x00, (byte)0xFF, (byte)0x7F, 'C', (byte)0xFF};
 
         Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
@@ -291,10 +286,9 @@ public class SmppSubmitMultiCommandTest {
                                       (String) isNull(),
                                       eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE)),
                                       eq(ReplaceIfPresentFlag.DEFAULT),
-                                      eq(DataCoding.newInstance(dataCoding)),
+                                      eq(DataCodings.newInstance(dataCoding)),
                                       eq((byte) 0),
-                                      aryEq(body),
-                                      aryEq(new OptionalParameter[0])))
+                                      aryEq(body)))
             .andReturn(new SubmitMultiResult("1"));
 
         replay(session);
@@ -306,7 +300,7 @@ public class SmppSubmitMultiCommandTest {
 
     @Test
     public void bodyWithGSM8bitDataCodingNotModified() throws Exception {
-        final int dataCoding = 0xF7; /* GSM 8-bit class 3 */
+        final byte dataCoding = (byte)0xF7; /* GSM 8-bit class 3 */
         byte[] body = {(byte)0xFF, 'A', 'B', (byte)0x00, (byte)0xFF, (byte)0x7F, 'C', (byte)0xFF};
 
         Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
@@ -331,10 +325,9 @@ public class SmppSubmitMultiCommandTest {
                                       (String) isNull(),
                                       eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE)),
                                       eq(ReplaceIfPresentFlag.DEFAULT),
-                                      eq(DataCoding.newInstance(dataCoding)),
+                                      eq(DataCodings.newInstance(dataCoding)),
                                       eq((byte) 0),
-                                      aryEq(body),
-                                      aryEq(new OptionalParameter[0])))
+                                      aryEq(body)))
             .andReturn(new SubmitMultiResult("1"));
 
         replay(session);
@@ -346,7 +339,7 @@ public class SmppSubmitMultiCommandTest {
 
     @Test
     public void eightBitDataCodingOverridesDefaultAlphabet() throws Exception {
-        final int binDataCoding = 0x04; /* SMPP 8-bit */
+        final byte binDataCoding = (byte)0x04; /* SMPP 8-bit */
         byte[] body = {(byte)0xFF, 'A', 'B', (byte)0x00, (byte)0xFF, (byte)0x7F, 'C', (byte)0xFF};
 
         Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
@@ -372,10 +365,9 @@ public class SmppSubmitMultiCommandTest {
                                       (String) isNull(),
                                       eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE)),
                                       eq(ReplaceIfPresentFlag.DEFAULT),
-                                      eq(DataCoding.newInstance(binDataCoding)),
+                                      eq(DataCodings.newInstance(binDataCoding)),
                                       eq((byte) 0),
-                                      aryEq(body),
-                                      aryEq(new OptionalParameter[0])))
+                                      aryEq(body)))
             .andReturn(new SubmitMultiResult("1"));
 
         replay(session);
@@ -387,7 +379,7 @@ public class SmppSubmitMultiCommandTest {
 
     @Test
     public void latin1DataCodingOverridesEightBitAlphabet() throws Exception {
-        final int latin1DataCoding = 0x03; /* ISO-8859-1 (Latin1) */
+        final byte latin1DataCoding = (byte)0x03; /* ISO-8859-1 (Latin1) */
         byte[] body = {(byte)0xFF, 'A', 'B', (byte)0x00, (byte)0xFF, (byte)0x7F, 'C', (byte)0xFF};
         byte[] bodyNarrowed = {'?', 'A', 'B', '\0', '?', (byte)0x7F, 'C', '?'};
 
@@ -414,10 +406,9 @@ public class SmppSubmitMultiCommandTest {
                                       (String) isNull(),
                                       eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE)),
                                       eq(ReplaceIfPresentFlag.DEFAULT),
-                                      eq(DataCoding.newInstance(latin1DataCoding)),
+                                      eq(DataCodings.newInstance(latin1DataCoding)),
                                       eq((byte) 0),
-                                      aryEq(bodyNarrowed),
-                                      aryEq(new OptionalParameter[0])))
+                                      aryEq(bodyNarrowed)))
             .andReturn(new SubmitMultiResult("1"));
 
         replay(session);
@@ -456,11 +447,13 @@ public class SmppSubmitMultiCommandTest {
         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)})))
+                eq(ReplaceIfPresentFlag.REPLACE), eq(DataCodings.newInstance((byte) 0)), eq((byte) 0), aryEq("short message body".getBytes()),
+                eq(new OptionalParameter.Source_subaddress("1292".getBytes())),
+                eq(new OptionalParameter.Additional_status_info_text("urgent".getBytes())),
+                eq(new OptionalParameter.Dest_addr_subunit((byte) 4)),
+                eq(new OptionalParameter.Dest_telematics_id((short) 2)),
+                eq(new OptionalParameter.Qos_time_to_live(3600000)),
+                eq(new OptionalParameter.Alert_on_message_delivery("O".getBytes()))))
                 .andReturn(new SubmitMultiResult("1"));
 
         replay(session);
@@ -511,20 +504,19 @@ public class SmppSubmitMultiCommandTest {
         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)})))
+                eq(ReplaceIfPresentFlag.REPLACE), eq(DataCodings.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(new SubmitMultiResult("1"));
 
         replay(session);
@@ -537,4 +529,4 @@ public class SmppSubmitMultiCommandTest {
         assertEquals(1, exchange.getOut().getHeader(SmppConstants.SENT_MESSAGE_COUNT));
         assertNull(exchange.getOut().getHeader(SmppConstants.ERROR));
     }
-}
\ No newline at end of file
+}