Download & Support

A free, 30-day trial version of the jSMS API is available for download here:

Click here for more information about pricing and licensing terms.

Support

If you have any questions about our product, don’t hesitate to contact us via email at support@objectxp.com or give us a call at +41-52-202-3757.


 

Changelog

jSMS 2.3.3 Oct 24 2013 Maintenance Release
Changes in this release
MM7:

  • Mime-types loading correction, when jSMS is used in an environment with several class-loaders (eg Tomcat web-application)
  • additional supported date format while parsing mm7: yyyy-MM-dd’T’HH:mm:ss (now time zone) possibility to enrich the MMSMessage before the MM7ReceiverServlet invokes the listener

UCP:

  • ping-operations are send sequentially, when UcpSmsService.isAlive() is invoked with several threads. (correction in generating the UCP-transaction-ID, when generating ping-operations))

ALL:

  • Set the REUSE_ADDR option when binding a socket
  • This allows the socket to be bound even though a previous connection is in timed_wait state. To disable this setting, set the system property ‘com.objectxp.msg.socket.reuse_addr’ to ‘false’.
  • While at it: Allow the local address to be empty and in this case use the ‘unspecified’ wildcard (0.0.0.0).
jSMS 2.3.2 Aug 03 2012 Maintenance Release
Changes in this release
GSM:

  • Fix MMS flag extraction in incoming status reports

Multipart:

  • Receiver: Fix asynchronous event listener notification
  • Messages: Enable serialization of message parts

MMS:

  • MM7: Work-around ‘broken’ Content-ID headers when parsing incoming messages
jSMS 2.3.1 Oct 10 2011 Maintenance Release
Changes in this release
SMPP:

  • Fix race-condition during disconnect()
  • Fix message ID conversion in delivery receipts

UCP:

  • Fix message ID parsing, when more than one receiving connector is used

Multipart Messages:

  • Multipart Messages now return the timestamp of the last part instead of null
jSMS 2.3.0 Nov 10 2010 Maintenance Release
Changes in this release

  • jSMS now requires J2SE v1.4 or higher
  • Prevent possible Log4J NDC (Nested Diagnostic Context) memory leaks
  • Enable TCP socket connect timeouts
jSMS 2.2.8 Feb 10 2010 Maintenance Release
Changes in this release
MMS:

  • Provide a handle to the Content-ID of MMS Message Parts
  • MM7ReceiverServlet: Fixed a bug that prevented doPost() from providing a proper response on Read-Replies and Delivery-Reports

SMPP:

  • Fix off-by-one error when extracting incoming UDH data
  • Workaround parsing error when trying to convert message IDs greater than Integer.MAX_VALUE (2147483647)
jSMS 2.2.7 Dec 10 2009 Maintenance Release
Changes in this release
MM7:

  • Cope with SOAP documents having a default XML namespace definition
    This fixes the extraction of the MM7 namespace for default namespaces
  • Try harder to find a name for a MMS multipart element.
    If the element does not have a name, fall back to either ‘Content-Location’ or ‘Content-Id’
jSMS 2.2.6 Sep 02 2009 Maintenance Release
Changes in this release
SMPP:
Fix decoding of incoming messages

  • If the first two bits of SMPP data_coding field are set, the data_coding can be used 1:1 as the GSM Data Coding Scheme
  • Extract and possibly use SMPP data_coding charsets (e.g. “ISO-8859-1″)
  • Don’t ask Java to convert from GSM to String

UCP:

  • Don’t broadcast DEVICE_NOT_READY if connect() fails. All other SmsService implementations don’t show this behaviour and the API documentation does not mention it either, so teach the UCP-Service to behave as all the other services.

MMS:

  • Cope with MMS notifications containing content-type options. In previous releases, if a notification contained additional content-type parameters (e.g. the character set) those messages where not recognized

MM7:

  • The MM7-XML-NameSpace and MM7-Version to use can now be configured by setting the properties ‘mm7.namespace’ (and ‘mm7.version’)
jSMS 2.2.5 Mar 27 2009 Maintenance Release
Changes in this release
MM1:

  • RAS (Win32): Windows Vista support.

MM7:

  • MM7 Address Format. Possibility for using full addressing format including ‘/TYPE=’ specification.
jSMS 2.2.4 Dec 02 2008 Maintenance Release
Changes in this release
SmtpService:

  • The SMTP service no longer insists on a GSM license
  • Fix the “Date” header generated in the UTC Timezone
jSMS 2.2.3 Nov 05 2008 Maintenance Release
Changes in this release
SMPP:

  • Properly report SMPP_DATA timeouts. In previous releases, if an outgoing SMPP_DATA message timed out, this fact was never reported to the user via a Message Event.

UCP:

  • OPID support: New optional property ‘ucp.opid’ that is sent to the SMSC when opening a session (operation 60, large volume account)
jSMS 1.8.12 Nov 04 2008 Maintenance Release
Changes in this release
SMPP:

  • Properly report SMPP_DATA timeouts. In previous releases, if an outgoing SMPP_DATA message timed out, this fact was never reported to the user via a Message Event.
  • Do not convert incoming 8-bit-messages having a “GSM class” data_coding. The old code did convert the short message if the four first bits of the SMPP data_coding field where set (meaning: it’s a GSM message class) without checking if the four remaining bits actually mean “the message is encoded in the GSM alphabet”.

UCP:

  • Fix a bug causing stale (left-over) threads if connect() and disconnect() were called concurrently.
jSMS 2.2.2 Aug 22 2008 Maintenance Release
Changes in this release
MM7:

  • Fix VASPID/VASID configuration having no effect on the XML-Request
  • Add attribute ‘mustUnderstand’ to element ‘TransactionID’
  • Make sure to only output elements and attributes allowed by the XML schema for the currently set MM7 version.
  • The MM7 version can now be configured using the configuration property ‘mm7.version’. Supported values are: 5.3.0, 5.5.0, 5.6.0, 5.8.0, 5.10.0, 6.3.0, 6.4.0, 6.5.0, 6.6.0, 6.8.0. If unset, the version defaults to 6.8.0

SMPP:

  • New property for disabling UNBIND from the SMSC if receiving fails. If the property “smpp.unbind.on.ioe’ is set to ‘false’, jSMS does no longer issue an SMPP UNBIND operation when an I/O Exception occurs while receiving data from the SMSC.
  • Do not convert incoming 8-Bit messages having a “GSM message class control” data_coding
  • SmppStatus now can hold optional SMPP parameters (TLVs). When receiving a StatusReportMessage over SMPP, there is no way for the user to get the optional parameters for the message (since there is no SMPP specific StatusReportMessage subclass). We now attach those parameters to the SmppStatus instance.
  • Fix detection of UDHI when converting a Message to a SMPP Submit-Operation. The UDHI was not correctly set if the user called SmsMessage#setUserDataHeader(true).

UCP:

  • Fix a bug causing stale (left-over) threads if connect() and disconnect() were called concurrently.

EMS:

  • EMSSound: Fix tokenization of “repeat” elements. If an iMelody string contained a “repeat” element, this provoked an endless- loop in the tokenizer, finally leading to an OutOfMemory error.

Various Changes:

  • Make MMSStatus and MMSDeliveryStatus serializable
  • Provide a hashCode() function for Address and EMSTextFormat
jSMS 2.2.1 Apr 11 2007 Maintenance Release
Changes in this release
General:

  • MMS Text elements encoded in UTF8 where not correctly converted to WAP binary representation. This has been fixed in jWAP. Please make sure to replace your current jWAP.jar with the new version found in this release.

mms.MM1Protocol:

  • After sending a message, not only check the HTTP status code but also look at the MMS response code. This fixes some cases where jSMS assumed that a message was sent correctly despite the fact that the MMSC reported a problem.
jSMS 2.2.0 Mar 09 2007 Support of the MM7 protocol
Changes in this release
General

  • jSMS now supports the MM7 protocol
  • The jWAP library now deals with duplicate and lost WTP packets.

mms.MMSServiceFactory:

  • new method to create a factory using an InputStream for the configuration properties
  • The MMS encapsulation version can now be specified in the configuration properties. If unset, jSMS uses MMS V1.1

mms.MMSService:

  • The interface defines a new method (hasCapability()) for checking if a MMS service has a specific capability (e.g. if it is able to cancel previously sent multimedia messages).
  • cancel and replace methods added

mms.smil.Element:

  • add TIMING_END to the list of valid timing attributes

MM1 Protocol:

  • MM1 specific MMSService extension: MM1Service
  • Support for Read- and Delivery Reports
  • Encode unknown headers as text instead of throwing an exception
  • Support for X-Mms-Reply-Charging, X-Mms-Applic-ID, X-Mms-Reply-Applic-ID, X-Mms-Aux-Applic-Info, X-Mms-DRM-Content, X-Mms-Adaptation-Allowed and X-Mms-Content-Class

mms.MMSListener:

  • New interface for processing incoming multimedia messages and reports

mms.MMSMessagePart:

  • support for specifying the charset of a text-part.

mms.MMSAddress:

  • equals() and hashCode() implemented

msg.Message:

  • Deprecated (since jSMS 1.6) methods setMessageId() and getMessageId() removed.

msg.SmsMessage:

  • Passing an empty byte array to setUserDataHeader() is treated like invoking this method using a null argument.

msg.ota.OTAMessage:

  • OTAMessage and subclasses no longer depend on jWAP for WAP Header encoding

msg.MultiPartReceiver:

  • Events are now dispatched asynchronously
jSMS 2.1.8 Oct 18 2006 Maintenance Release
Changes in this release
SmsService:

  • The SmsService interface now defines methods for querying, cancelling and replacing short messages.
  • The interface defines a new method (hasCapability()) for checking if a SMS service has a specific capability (e.g. if it is able to cancel previously sent short messages).

All SMS Service implementations:

  • Implementation of the “hasCapability()” method
  • query, cancel and replace interface methods implemented if available by the underlying protocol (CIMD2: query and cancel, SMPP and UCP: query, cancel and replace)

SmsMessage:

  • toString() now also includes deferred delivery time

MMSService:

  • don’t try to decode unknown MMS headers (this caused a null pointer exception in the logfile)
  • MMS header definitions from OMA-MMS-ENC V1.2 and V1.3 added

MM1Protocol:

  • RAS (Win32): Fixed a bug that prevented jSMS to add a route to the WAP gateway if the property “mms.transport.ppp.ras.addroute” contains a trailing port number
jSMS 1.8.11 Oct 18 2006 Maintenance Release
Changes in this release
GsmAddress:

  • The constructor taking a single String now uses TON_UNKNOWN for all addresses except those starting with a “+”. Previously, nummerical addresses not starting with “+” were treated as TON_NATIONAL which caused delivery failures with some GSM networks. Using TON_UNKNOWN instead will leave the final decision on how to address the recipient to the SMSC.
jSMS 2.1.7 Sep 28 2006 Maintenance Release
Changes in this release
PPP Dialup:

  • Fixed a bug causing a “java.lang.NoSuchMethodError” on Windows when trying to establish a PPP connection to the MMSC.

MMSNotification:

  • Fixed a bug causing the expiry time for a MMS notification to be calculated wrongly.

MM1Protocol:

  • The “User-Agent” header that jSMS uses when connecting to the WAP gateway can now be specified using the ‘mm1.user.agent’ init property. If unset, the String “jSMS/2.1″ will be used.
jSMS 2.1.6 Jun 14 2006 Maintenance Release
Changes in this release
MM1Protocol:

  • The timeout values for login, sending and fetching MMS can now be configured using the ‘mm1.timeout.*’ init properties. The default send/receive timeouts have been increased from 3 to 5 minutes. This prevents jSMS from timing out when sending / receiving large MMS.

Cimd2SmsService:

  • fixed a bug that caused incoming ALIVE operations to be acknowledged twice.

General:

  • ClassNotFound issues when embedding jSMS.jar into an Oracle DB or when using it in jBuilder (should) have been fixed.
jSMS 1.8.10 Jun 08 2006 Maintenance Release
Changes in this release
Cimd2SmsService:

  • fixed a bug that caused incoming ALIVE operations to be acknowledged twice.
jSMS 2.1.5 May 23 2006 Maintenance Release
Changes in this release
GsmSmsService

  • fixed a bug that caused a NegativeArraySizeException for incoming Status reports not containing a SMSC address.

SmsStatus:

  • new method “getDischargeTime()”: Returns the time at which a previously submittet SMS was successfully delivered to or attempted to deliver to the recipient.
jSMS 2.1.4 Apr 13 2006 Maintenance Release
Changes in this release
SmppSmsService

  • Fixed a bug where the UD part of a message got lost if an incoming message has a UDH
jSMS 1.8.9 Apr 13 2006 Maintenance Release
Changes in this releaseSmppSmsService

  • Fixed a bug where the UD part of a message got lost if an incoming message has a UDH
jSMS 2.1.3 Mar 08 2006 Maintenance Release
Changes in this release
OTA ServiceIndication/ServiceLoading

  • Use the short-form encoding for the content type (omitting the character set).

smart.Ringtone

  • Support for “temporary” ringtones (not having a name)
  • The Ringtone class now internally uses the binary form of the ringtone. In previous releases, the constructor taking a byte[] converted the binary data into it’s textual (RTX) form which may lead to loss of information due to some missing features in RTX.

ems.EMSSound

  • fixed a bug that caused splitMelody() to forget the last iMelody token in each fragment.

GsmSmsService

  • For incoming messages, the SMSC address can now be fetched by calling Message.getProperty(GsmSmsService.SMSC_ADDR_PROPERTY). This will return an object of type GsmAddress or null if not available.

GsmAddress

  • The constructor taking a single String now uses TON_UNKNOWN for all addresses except those starting with a “+”. Previously, nummerical addresses not starting with “+” were treated as TON_NATIONAL which caused delivery failures with some GSM networks. Using TON_UNKNOWN instead will leave the final decision on how to address the recipient to the SMSC.

SEOMessage

  • Fixed a bug that caused multipart SEOMessages with binary content to be transmitted in the wrong encoding

SmppSmsService

  • Treat incoming DELIVER_SM PDU’s having the EMSE Manual/User Acknowledgement esm_class bit set as status reports.

SmppStatus

  • The error code contained in a a NETWORK_ERROR_CODE TLV is now available by calling SmppStatus#getErrorCode()

SmppMessage

  • Support for the DATA_SM SMPP operation. To enable DATA_SM, set the property messageType to MSG_TYPE_DATA (SmppMessage#setMessageType())
  • If the message mode is unset (setMessageMode()), jSMS will now use the message mode as configured with the service init property “smpp.message.mode”.
jSMS 1.8.8 Feb 17 2006 Maintenance Release
Changes in this release
GsmSmsService

  • For incoming messages, the SMSC address can now be fetched by calling Message.getProperty(GsmSmsService.SMSC_ADDR_PROPERTY). This will return an object of type GsmAddress or null if not available.

SmppSmsService

  • Treat incoming DELIVER_SM PDU’s having the EMSE Manual/User Acknowledgement esm_class bit set as status reports.

SmppStatus

  • The error code contained in a a NETWORK_ERROR_CODE TLV is now available by calling SmppStatus#getErrorCode()

SmppMessage

  • Support for the DATA_SM SMPP operation. To enable DATA_SM, set the property messageType to MSG_TYPE_DATA (SmppMessage#setMessageType())
  • If the message mode is unset (setMessageMode()), jSMS will now use the message mode as configured with the service init property “smpp.message.mode”.

ems.EMSSound

  • fixed a bug that caused splitMelody() to forget the last iMelody token in each fragment.

SEOMessage

  • Fixed a bug that caused multipart SEOMessages with binary content to be transmitted in the wrong encoding
jSMS 2.1.2 Oct 13 2005 Maintenance Release
Changes in this release
GsmSmsService

  • The getMessages() method now uses the AT+CMGL command (if available) for reading messages from the SIM/Phone memory. This drastically decreases the time it takes for getMessages() to complete.

MultiPartReceiver

  • Fixed a bug where the receiver threw an exception when trying to handle unknown WAP-Push messages

mms.MMSAddress

  • The MMSAddress(String) constructor no longer throws an exception if an address with an unknown format is passed. Instead, the type of address is set to TYPE_CUSTOM for those messages

mms.SMILMessage

  • SMILMessage objects can now be created from a jar file by passing the URL of the jar.

mms.MMSNotification

  • The raw data of the MMS notification can now be fetched by calling getUserData()

mms.MMSMessage

  • “From” encoding/decoding fixed
  • Quoted string decoding fixed

General

  • the jWAP library has been upgraded to jWAP-CVS 08/10/2005. This fixes multiple problems:
    • bugfix for reception of segmented SDUs with a segment count > 127
    • workaround preventing corrupted data if a fragment exceeds 1400 octets
    • various fixes in WAP encoding/decoding
jSMS 1.8.7 Oct 10 2005 Maintenance Release
Changes in this release
GsmAddress

  • When passing an alphanumeric address to the GsmAddress(String) constructor, the Numbering Plan Indicator now is set to “Unknown” (as specified in Gsm 03.40.
  • When passing a numeric address to the GsmAddress(String) constructor, set the Number Plan Indicator to “National” if the address does NOT contain a international prefix (+…).

GsmSmsService

  • Fixed a bug causing “disconnect()” to sometimes block up to 30 seconds

SmppSmsService

  • For incoming messages, extract the Message class from the DEST_ADDR_SUBUNIT TLV (if present)
  • The properties “smpp.addr.ton” and “smpp.addr.npi” will no longer be used when sending a SMS. Those properties are now only used for the SMPP bind operation (SmppSmsService#connect()). Use the class GsmAddress for controlling the TON/NPI of source- and destination addresses. The methods SmsService#setSenderAddress() and SmsService#setRecipientAddress() take a (Gsm)Address as argument.

MultiPartReceiver

  • Fixed a bug that caused incoming WAP PUSH messages to produce a UnsupportedOperationException.
jSMS 2.1.1 Jun 28 2005 Maintenance Release
Changes in this release
OTA ServiceIndication/ServiceLoading

  • Fixed a bug in the XML DOCTYPE that caused the built-in XML Parser in JDK >=1.4 to throw an Exception
jSMS 2.1 Jun 14 2005 ServiceIndication and ServiceLoading
Changes in this release
OTA:

  • Support for sending ServiceIndication (SI) and ServiceLoading (SL) messages.

GsmSmsService:

  • Calling getSenderAddress() on incoming messages now returns a GsmAddress object (previously, a simple “Address” was returned).
  • Win32: Fixed a bug that caused disconnect() to sometimes block for ~ 30 seconds.

GsmAddress:

  • When passing an alphanumeric address to the GsmAddress(String) constructor, the Numbering Plan Indicator now is set to “Unknown” (as specified in GSM 03.40).
  • When passing a numeric address to the GsmAddress(String) constructor, set the Number Plan Indicator to “National” if the address does NOT contain a international prefix (+…).

GsmHelper:

  • A new method (“decodePDU()”) for decoding GSM PDU Strings has been introduced. It can be used to convert PDU strings of type “SMS-SUBMIT” and “SMS-DELIVER” to SmsMessage objects.

MultiPartReceiver:

  • The MultipartReceiver now provides the static method buildMessage(SmsMessage[]) for assembling a multi-part message.

SmppSmsService:

  • For incoming messages, extract the Message class from the DEST_ADDR_SUBUNIT TLV (if present).
  • The properties “smpp.addr.ton” and “smpp.addr.npi” are no longer used when sending a SMS. Those properties are now only used for the SMPP bind operation (SmppSmsService#connect()). Use the class GsmAddress for controlling the TON/NPI of source- and destination addresses. The methods SmsService#setSenderAddress() and SmsService#setRecipientAddress() take a (Gsm)Address as argument.

MM1Protocol:

  • If fetching an MMS fails due to a server error (status code 500), retry fetching N times (where N can be configured using the init property “mm1.retries.on.server.error”).
  • Fixed a bug in fetch() that caused the fetch operation to fail if the MMSC does send a empty “Content-Type” header when responding to a WSP Post.
  • Include the HTTP status code and description in the exception message if sending/receiving an MMS fails.
  • Fixed the encoding of the Content-Location field.
  • Always set the ‘sender-visibility’, ‘delivery-report’ and ‘read-report’ headers since they are required in some cases
  • jSMS now sets the following headers when establishing a WSP session: ‘Accept’, ‘Accept-Language’, ‘Accept-Charset’, ‘User-Agent’.
  • The content-type will now be encoded according to WSP version 1.3. This fixes an issue with some older WAP gateways rejecting a MMS and complaining that the content-type is illegal.
  • Fixed a bug that caused jSMS to throw a “NegativeArraySizeException” if the content-type of an incoming MMS notification was not encoded as a string.

MMSMessage:

  • MMSMessage objects can now be constructed from a byte array or input stream holding a MMS encoded structure (specified in OMA-MMS-ENC v1.1)
  • Encode various MMS headers (e.g. “Subject”) using the UTF-8 charset and use the indicated charset when decoding those strings.

mms.GenericMessagePart:

  • New constructors added for building parts out of a byte array or by reading from a File

General

  • The jWAP library has been upgraded to version 1.2+CVS. As with every jSMS release: Make sure that you replace your existing jWAP.jar with the version shipped with the latest release of jSMS.
jSMS 2.0.1 Apr 21 2005 Maintenance Release
Changes in this release
SmppSmsService

  • Prevent NullPointerException when dealing with DELIVER_SM having no short message and MESSAGE_PAYLOAD.
  • Incoming SmppMessages now return GsmAddress objects when calling getSenderAddress() / getRecipientAddress(). This enables access to the TON/NPI values of those addresses.

GsmSmsService

  • fix possible deadlock happening when we internally call deleteMessage() while a concurrent message event handler calls deleteAllMessages().
  • Improved timeout handling in the GSM reader.
  • Ensure that sendMessage() will broadcast a “MESSAGE_NOT_SENT” event even in case of a timeout
  • Fixed a bug where sendMessage() did not retry to send the Message if the GSM device is temporarily unable to accept outgoing messages
  • check the result of “AT+CMGS=…” for errors before sending the PDU string

Address

  • the Adress class now has its own equals() implementation.

SEOMessage

  • Fixed a NullPointerException if buildParts(…) is called with the type argument being null.

MMSService

  • New method “getName()” returning the name of the service

MM1Protocol

  • If fetching an MMS fails due to a server error (status code 500), retry fetching N times (where N can be configured using the init property “mm1.retries.on.server.error”)
  • Fixed a bug in fetch() that caused the fetch operation to fail if the MMSC does send a empty “Content-Type” header when responding to a WSP Post.

MMS

  • Encoding and decoding of WSP headers is now done according to WSP Header Binary Encoding Version 1.3 (as specified in OMA-WAP-MMS-ENC)
  • Use Content-ID as reference name for a MMS part if the Content-Location header is not present
  • jSMS now uses the “Immediate Retrieval” transaction flow when receiving MMS. To use “Delayed Retrieval”, set the init property “mms.protocol.mm1.delayed.retrieval” to “true”
  • Fixed a bug in delayed MMS retrieval (use DEFERRED instead of FETCHED) as Notification-Response status. Should fix the problem of MMSCs returning a 500 error when trying to retrieve the MMS
  • Win32: Fixed a bug that prevented jSMS from creating a default Dialup connection if no dialup name has been configured
  • Prevent NullPointerExceptions for unset init properties

General

  • Bugfix in GsmValidityPeriod.convertVP()
  • Make sure that keep-alive always sends a DEVICE_NOT_RESPONDING event if the connection to the SMSC is not responding
  • If reading data from the SMSC throws an exception, broadcast a “DEVICE_NOT_RESPONDING” event.
  • Fixed a bug in the GSM reader that caused lines from the modem that are not immediately terminated with CR/LF to be dropped
jSMS 1.8.6 Apr 20 2005 Maintenance Release
Changes in this release
SmppSmsService

  • Incoming SmppMessages now return GsmAddress objects when calling getSenderAddress() / getRecipientAddress(). This enables access to the TON/NPI values of those addresses.

GsmSmsService

  • fix possible deadlock happening when we internally call deleteMessage() while a concurrent message event handler calls deleteAllMessages().
  • Improved timeout handling in the GSM reader.

Address

  • the Adress class now has its own equals() implementation.

SEOMessage

  • Fixed a NullPointerException if buildParts(…) is called with the type argument being null.
jSMS 1.8.5 Dec 02 2004 Maintenance Release
Changes in this release
SmppSmsService:

  • Prevent a NullPointerException when dealing with DELIVER_SM having no short message and MESSAGE_PAYLOAD.

GsmSmsService

  • Ensure that sendMessage() will broadcast a “MESSAGE_NOT_SENT” event even in case of a timeout
  • Fixed a bug where sendMessage() did not retry to send the Message if the GSM device is temporarily unable to accept outgoing messages
  • Fixed a bug in the GSM reader that caused lines from the modem that are not immediately terminated with CR/LF to be dropped
  • check the result of “AT+CMGS=…” for errors before sending the PDU string

General

  • Bugfix in GsmValidityPeriod.convertVP()
  • Make sure that keep-alive always sends a DEVICE_NOT_RESPONDING event if the connection to the SMSC is not responding
  • If reading data from the SMSC throws an exception, broadcast a “DEVICE_NOT_RESPONDING” event.
jSMS 2.0 Oct 01 2004 MMS Multimedia Messages
Changes in this release
MMS:

  • A new package providing Multimedia Messages (MMS) has been introduced. It allows sending and fetching Multimedia Messages form the MMS-Proxy-Relay. The MMS is fetched and sent using the GPRS bearer. For the handling of the WTP/WSP protocol, the jWAP library is used.
  • The MultiPartReceiver recognize now also MMS-Notifications. A MMS-Notification is delivered from the MMS-Proxy-Relay if a incoming MMS is ready to be fetched from the MMSService.

Maintenance

  • SMPP Status Reports are also handled if the message content is null.
  • Bugfix in GsmValidityPeriod.convertVP().
jSMS 1.8.4 Aug 10 2004 Maintenance Release
Changes in this release
GsmSmsService

  • A new init property “sms.gsm.checkonsend” has been introduced. If set to “true”, this results in jSMS checking the connection to the GSM device before sending a SMS. If the check fails, the GsmSmsService will either broadcast a DEVICE_NOT_RESPONDING event to all registered event handlers (if the init property “keepalive.disconnects” is false) or disconnect itself from the device by calling disconnect().

ManualAck

  • The ManualAck interface contains a new acknowledge() method having an additional argument that can be used for passing a protocol-specific acknowledge status.

SmppSmsService

  • Manual ACK: A negative acknowledgement can now be sent by passing a SMPP command_status (using an Integer object) to the acknowledge() method.

UcpSmsService

  • Manual ACK: A negative acknowledgement can now be sent to the SMSC by passing Boolean.FALSE to the acknowledge() method.

Cimd2SmsService

  • Manual ACK: A negative acknowledgement can now be sent by passing a CIMD2 error code (using an Integer object) to the acknowledge() method.
  • Fixed a bug for incoming text messages where special (non-ASCII) characters have been lost (converted to a question-mark).

util.ConcatHeaderElement

  • Fixed a bug in parsing concat-header elements having a 16-bit reference number.

MultipartMessage

  • The Multipart message interface supports a new method that can be used for specifying the type of fragments to build (e.g. Cimd2Message). Have a look at the API-Docs for the Interface MultiPartMessage for more in- formation about this feature.
jSMS 1.8.3 Jun 11 2004 Maintenance Release
Changes in this release
SmppSmsService

  • The SMPP data_coding parameter for outgoing Unicode-Messages (UCS2) is now set correctly
  • Added support for septed-packing/unpacking of Text messages. Set the init property “smpp.gsm.packing” to true to enable it. Packing will only be applied if the charset (smpp.smsc.charset) is set to “GSM”
  • Incoming ‘enquire link’ operations are always aknowledged.
  • Convert incoming text messages according to the configured charset- and septed-packing properties

UcpSmsService

  • Fixed a bug for outgoing UCS2 messages, caused by Message#getType() returning MT_TEXT (since jSMS 1.8.2) for UCS2 messages
  • A new init property ‘ucp.xser.nodcs’ has been introduced. If setting the property to “true”, jSMS will not encode the Data Coding Scheme (DCS) as a XSer field for outgoing short messages.
jSMS 1.8.2 Apr 23 2004 Maintenance Release
Changes in this release
UcpSmsService

  • Support of GsmAddress objects for specifying the sender/recipient

UcpMessage

  • The additional services (XSer field) may be retreived

GsmSmsService:

  • A new method “sendATCommand()” has been introduced that may be used to send AT-commands to the GSM modem
  • Retrieve the size of the preferred message storage even if the user has supplied his own preferred storage. This fixes getMessages() and deleteAllMessages() not accessing the complete message storage
  • Cope with GSM devices (e.g. WAVECOM) that only supply two memory sets (instead of 3 as specified in GSM 07.05) when querying the preferred message storage.

SmsMessage:

  • getType() now returns “MT_TEXT” for UCS2 messages instead of “MT_BINARY”

SmppSmsService:

  • Fixed a data conversion bug where incoming messages with a length greater than 127 were not correctly extracted
  • Extract the UDH for incoming messages if the GSM-UDH flag is present in the SMPP ESM class

SmppMessage:

  • The SMPP Message class now supports optional Parameters (TLV)

SEOMessage:

  • New class providing support for sending Multimedia Content to Siemens phones

MultiPartMessage implementations:

  • Fixed a bug that caused the TON/NPI to be lost for individual parts when using GsmAddress objects for specifying the sender/recipient.

Various Changes:

  • sms.bat / sms.sh now supports using any SmsService implementation for its operation (instead of GSM only)
jSMS 1.8.1 Feb 16 2004 Maintenance release
Changes in this release
General:

  • Several changes for improving the behaviour when the connection to the SMSC/GSM device suddenly dies.
  • Prevent possible race-condition acquiring a lock on the OutputStream. Previously, this could have led to a timeout for outgoing operations while incoming messages had not yet been acknowledged

SmppSmsService

  • fixed a bug in the message ID extraction for incoming status reports when the status is passed using TLVs. In previous releases, this worked only when debug logging was enabled
  • the window-size init-parameter now gets honored
jSMS 1.8.0 Jan 23 2004 OTA – Over The Air configuration
Changes in this release
General

  • A new package providing OTA messages has been introduced. It allows to send Bookmarks and BrowserSettings to mobile phones. Bookmarks are used to simplify browsing on a handheld. BrowserSettings provide handsets with basic settings needed to establish a connection to be used for browsing. The settings are pushed over SMS (wap push). To use OTA, you need a JAXP-compliant SAXParser in your classpath
  • A new package called “com.objectxp.msg.util” has been added that can be used to build customized SMS User Data Headers (UDH)

Cimd2SmsService

  • The CIMD2 version of the SMSC can now be set using the init-property “cimd2.version”. Supported values are currently “4″ or “5″ with “5″ being the default. This property influences the character conversion from/to the SMSC.

MultiPartReceiver

  • fixed a bug in parsing incoming EMSTextFormat elements causing the attributes to be parsed wrongly

ems.EMSTextFormat

  • fixed a bug in setColor() that prevented colors to be set correctly

smart.VCard
smart.VCalendar

  • Fixed a bug that prevented a multi-part VCard/VCalendar to be trans- mittable over a non-GSM service

SmsMessage

  • Fixed a bug in isAlphanumericOriginator() concerning the Guessing of alphanumeric originators

AbstractSmsService

  • Fixed a race-condition in startReceiving() that in (rare cases) caused the loss of the first few incoming messages for large-volume protocols (UCP, CIMD2, SMPP). This could happen when the SMSC imediately starts delivering messages but startReceiving had not yet finished.

smart.OperatorLogo

  • The Image transformer now correctly converts awt.images containing a transparent background to a monochrome picture.
  • The data coding scheme was not set to 8bit data when passing the image as byte[].
jSMS 1.7.3 Jan 09 2004 Maintenance release
Changes in this release
Cimd2SmsService

  • GSM character conversion bugfix concerning the “e/E with acute accent” characters
  • Bugfix: Assign the CIMD2 transaction ID just before the operation goes “over the wire”, this should prevent possible sequence-errors
  • Fixed a bug that prevented jSMS to broadcast a MESSAGE_NOT_SENT event in case of a timeout when Windowing is enabled
  • resetConnection() now works for modem connections

SmppSmsService

  • Bugfix: Use serviceType instead of systemType for outgoing messages
  • Fixed a bug that prevented jSMS to broadcast a MESSAGE_NOT_SENT event in case of a timeout when Windowing is enabled
  • a new init parameter “smpp.dest_addr_subunit” has been introduced that can be used to prevent jSMS from converting the GSM message class to a DEST_ADDR_SUBUNIT SMPP parameter

GsmSmsService

  • Decoding of the Service Center timestamp (SCTS) for incoming messages fixed (use 24H format instead of 12H (AM/PM) format)
  • if Hardware Handshaking is configured but either no Device is attached or the Device does not set the DSR/CTS signal, a MessageException is thrown. In previous releases this caused jSMS to hang.

smart.OperatorLogo

  • Bugfix: setOperatorLogo(byte[]) did not set the alphabet to 8-Bit
jSMS 1.7.2 Nov 20 2003 Maintenance release
Changes in this release
General

  • New license encryption with transparent features. (Dear Customers: please contact sales@objectxp.com for obtaining the new license properties)
  • The use of a trial and development license is limited as follows: Sending and receiving is disabled after 24 hours or when 2000 messages have been sent, a restart of the java-VM will then be necessary.

GsmSmsService

  • If init() fails, the serial port will now be closed
  • The initial verification of the communication with the GSM device doesn’t take longer than the specified timeout. (Previously it took 5 x the timeout when there was no response from the GSM device)

SmppSmsService

  • Evaluate the optional parameter MESSAGE_PAYLOAD for incomming messages.

SmtpService

  • Fixed a bug that prevented addresses to contain “real-names”, e.g. “John Doe” <jdoe@maildomain.org>
  • sent messages now show up as unread in the recipients mailbox
  • fixed a bug where the sender was always replaced by the default sender when sending messages of type com.objectxp.msg.Message
jSMS 1.7.1 Oct 10 2003 Maintenance release
Changes in this release
General

  • Fixed a memory leak occuring with log4j by calling NDC.remove() whenever a thread terminates

GsmSmsService

  • The service now copes with modem replies that contain the origin AT-command (local echo)
  • After opening a serial port, the service now discards pending bytes available from the port before starting to initialize the modem

Multipart (Smart and EMS) messages

  • The request of a status report (notification) results into a status report request for all sent parts
  • All originally received message parts of a multipart message can be retrieved by invoking getParts()
  • All ‘interesting’ informations of received multipart messages (Text, Format, Sound, Image,…) are accessible via the corresponding methods (see API doc)
  • The class EMSUnsuportedElement has been renamed to EMSUnsupportedElement

smart.Ringtone

  • The RTX parser no longer ignores the default loop-value
  • Control commands within the melody are no longer ignored
  • Fixed a bug where incoming Ringtones sometimes where not correctly converted to the corresponding RTX string
jSMS 1.7 Sep 12 2003 New Features: EMS, Receiving of Smart- and EMS messages.
Changes in this release
General

  • A new package providing EMS support has been introduced: com.objectxp.msg.ems. It allows to create EMS messages containing different content elements such as animations, pictures, sounds and formated text
  • Introduction of the new interface MultiPartMessage. This interface is implemented in the EMSMessage and SmartMessage class
  • Changed the sendMesage method in all services so that a MultiPartMessage can be sent as a single message. The services call buildParts with a reference number before sending the individual parts of a MultiPartMessage
  • Multi-part messages such as EMS- and SmartMessage can be received with the new MultiPartReceiver. This class receives the individual parts of a messages and keeps them in an internal cache. When all parts are received the MultiPartReceiver assembles these parts together to form a single message such as an EMSMessage or SmartMessage. An example demonstrating the use of this class can be found in the [install-dir]/examples directory
  • SmsMessage and its subclasses can now be constructed without having to pass a reference to a SmsService implementation

SmartMessage

  • Several methods in SmartMessage have been deprecated. They are replaced by the implementation of the new interface MultiPartMessage

GsmSmsService

  • In case of an unexpected behaviour in the connect method the service now disconnect itself in any cases.
jSMS 1.6.4 Sep 04 2003 Maintenance release
Changes in this release
General

  • Corrected a bug where the sender address of an incomming message was not set correctly.

GsmSmsService

  • added new configuration property “sms.gsm.receive.unreadmsg” to control if unread messages should be read from the GSM device when startReceiving() is called. If you set this to false unread message will not be read.
jSMS 1.6.3 Aug 28 2003 Maintenance release
Changes in this release
GsmSmsService

  • fixed a bug that prevented the main method (called by sms.bat) to work.

UcpSmsService

  • Correctly set the Data Coding Scheme (DCS) for incoming messages

SmsMessage

  • the setAlphabet() method now sets the coding group to DC_GROUP_DATA if the group was set to GROUP_GENERAL and the UCS2 alphabet has been specified
  • If the sender address is of type GsmAddress, the GsmAddress.getTON() will now be considered when determining if the sender is alphanumeric
jSMS 1.6.2 Aug 21 2003 Maintenance release
Changes in this release
General

  • A new class named “GsmAddress” has been introduced for addressing SMS. It allows fine-grained control over the the type-of-number (TON) and numbering-plan-identification (NPI) fields. See changes for SmsMessage

SmsMessage

  • Both sender and recipient can now be specified by passing a GsmAddress object.

UcpSmsService

  • Fixed a bug where the user data header (UDH) of incomming messages was not transformed into a Message object. Now a UcpMessage object is created for incomming messages.

Cimd2SmsService

  • incoming SMSes now have a Message ID in the format “sender:recipient:smsc-timestamp”

SmppSmsService

  • The init properties addr.ton and addr.npi will now also be used for the sender address when submitting short messages unless they are overridden by a sender of type GsmAddress.

smart.Ringtone

  • don’t add concat_sm header for single-part ringtones
  • use incrementing reference nr for multipart ringtones
jSMS 1.6.1 Jul 24 2003 Maintenance release
Changes in this release
GsmSmsService

  • Fixed a bug where extracting the user data header on incoming messages sometimes failed
  • Incoming messages now have a unique ID calculated from sender, service center and timestamp instead of 0.
  • Fixed a bug where incoming messages with class “NO_CLASS” have been interpreted as messages with CLASS_1.

UcpSmsService

  • If parsing timestamps contained in incoming messages fails, try alternative parsing pattern. This fixes the problem of getting a MESSAGE_RECEIVED event with an associated null Message object. The problem occured only with SMSC’s that don’t format timestamps according to the UCP specifications.
jSMS 1.6 Jul 18 2003 SMPP protocol, Windowing for UCP
Changes in this release
General

  • Fixed two possible memory leaks: One occured if you create a SmsService object but never destroy() it, the other leak occured if destroy() ran into a Exception calling disconnect()
  • The input/output stream of the serial communication will no longer be closed when disconnecting, just the serial port is closed.
  • Support for the SMPP Protocol (Short Message Peer to Peer) added. The protocol is implemented by the class SmppSmsMessage.
  • Keep-Alive no longer disconnects the service if it detects that the connection to the SMSC is dead. Instead, it broadcasts a MessageEvent of type ‘DEVICE_NOT_RESPONDING’. Users depending on the old keep-alive behaviour should set add sms.keepalive.disconnects=true to their init properties to get the old behaviour.
  • The deprecated autoconnect() and autoreceive() methods declared by the interface SmsService have been removed. Make sure that you call SmsService#startReceiving() since this is NO LONGER done automatically!
  • Several methods in SmsService that are specific to the GSM implementation have been deprecated. They will continue to exist in GsmSmsService but will be dropped from the SmsService interface.
  • The jSMS distribution now includes a examples/ directory containing various examples on how to use the API

Cimd2SmsService

  • Make sure that the ID of a sent message matches its status report ID by removing trailing ‘+’ characters.
  • The init property “cimd2.window.size” will now be used when initializing the service
  • Use CIMD2 parameter 21 instead of Message.getRecipient() for building the Message ID of sent messages.
  • Fixed a bug that caused some ugly warnings in the log4j logfile if connect() fails somehow (bad password, etc).
  • Don’t complain if the SMSC doesn’t acknowledge a disconnect operation but simply drops the connection.
  • support for setting the tariff class, service description and priority using the new Cimd2Message class
  • A new property “cimd2.statusreport.parameter” has been introduced that can be used to override the type of status reports that will be reported from the SMSC
  • Temporary status reports will no longer be reported by the SMSC unless you override the “cimd2.statusreport.parameter” (see above)
  • Fixed a bug that prevented jSMS to unescape special characters in the message text of incoming messages
  • Correctly handle incoming “Alive” operations
  • Support for relative and absolute deferred delivery and validity period added
  • The service now supports the CIMD2 Cancel operation
  • Connection to the CIMD2 SMSC can now be established using a dialup connection (Modem/ISDN)

UcpSmsService

  • The service now tries to hangup the phone line on disconnect
  • Fixed a bug where “61″-Operations where wrongly constructed
  • Serial Connector: Now sets a timeout before initializing the Modem
  • A custom modem init string can now be specified using the property “ucp.initstring”
  • disconnect() now waits for the termination of the reader thread
  • Make large account messaging possible over modem connections
  • When requesting a status report without specifying the notification address and the service is connected via tcp, the NPID is set to 0539 (PC appl. over TCP/IP)
  • The service sends an UCP operation 31 when the keep-alive interval is greater zero.
  • The UCP Service now supports Windowing for Applications
  • International prefix for the sender: When the sender is numerical and starts with “+”, the OTOA field is set to 1139.

GsmSmsService

  • The Status Report ID for a SmartMessage consisting of multiple parts now matches the ID of the corresponding SmartMessage
  • Fixed a bug where the sendMessage() method used a hardcoded timeout instead of respecting the connector timeout configured in the init- properties
  • The service now records the time it takes for the GSM device to acknowledge an outgoing message. The time is available as message property ACK_TIME.
  • AT+CREG polling interval can now be configured using the init property “gsm.waitfornet.interval” (default: 1000ms)
  • The service now detects RING indications received from the GSM device and broadcasts a INCOMING_CALL Message Event.
  • adding a MessageEventListener no longer starts receiving. Make sure that you call #startReceiving() to turn receiving on.

TapSmsService

  • A custom modem init string can now be specified using the property “tap.initstring”
  • Fixed a bug that prevented successful login for TAP gateways sending the “ID=” parameter without a trailing CR
  • The service now tries to hangup the phone line on disconnect

SmtpService

  • The format of the “Date:” timestamp now follows the specification in RFC2822
  • Introduced two new constructors, one without arguments and the other taking a java.io.File.

Message

  • The Message class and all it’s subclasses are now serializable
  • new method getSenderType()
  • support for “attaching” custom key/value pairs to a message using the new methods setProperty() and getProperty(). Notice that those properties have no influence at all on the way jSMS handles the message but could e.g. be used to attach a customer-specific message ID to a message.

SmsMessage

  • new method isRelativeValidityPeriod()
  • A deferred delivery time can now be set (in either relative or absolute format).

Cimd2Message

  • New class supporting specific CIMD2 features like e.g. tariff class.

MessageEvent

  • Constructors are public now, this make it possible to create your own SmsService implementations
  • New event type ‘DEVICE_NOT_RESPONDING’. Events of this type will be broadcasted if keep-alive detects a dead connection.
  • New Event type: INCOMING_CALL. Used by GsmSmsService to signal a RING indication received from the GSM device
jSMS 1.5.6 Jan 31 2003 Maintenance release
Changes in this release
com.objectxp.msg.Cimd2SmsService

  • The CIMD2 service now supports windowing by implementing the new interface “WindowingService”.
  • The Message ID of messages sent using the CIMD2 service now consists of the Recipient address combined with the SMSC timestamp in the format “recipient:timestamp”
  • Character conversion bugfixes
  • Resolved synchronization issue in disconnect() if the SMSC doesn’t acknowledge the logout operation
  • The CIMD2 Service will now throw a Cimd2Exception when a operation received from the SMSC signals an error
  • Solved a bug in resetSession() where the connector thread was not stopped when reading from the SMSC connection resulted in a IOException
  • stopReceiving() will no longer broadcast a DEVICE_NOT_READY since this is not appropriate

com.objectxp.msg.Cimd2Status

  • New class implementing SmsStatus. Returned by the CIMD2 service for status reports. See the API-Documentation for more information about this class.

com.objectxp.msg.UcpSmsService

  • startReceiving() will not throw an exception when the configuration properties
    ucp.tcp.send.host=[ip-address/hostname]
    ucp.tcp.send.port=[port-number]
    and
    ucp.tcp.receive.host=[ip-address/hostname]
    ucp.tcp.receive.port=[port-number]
    are identical.
  • The message IDs now have the format [SMSC timestamp]:[receiver address] where the SMSC timepstamp is in the format YYMMDDHHMMSS.
  • The UCP Service will now throw a UcpException when an operation received from the SMSC signals an error
  • stopReceiving() will no longer broadcast a DEVICE_NOT_READY since this is not appropriate.
  • Messages buffered at the SMSC can now be inquired (inquiryMessage()) and deleted (deleteMessage())
  • The service now supports sending a SMS to multiple recipients at once (see API docs for class MultipleRecipientMessage for more details).
  • The authentication code (AC field) can be set via the property ‘ucp.authentication.code’
  • Initial (incomming) communication with the modem can be handled with the property ‘ucp.serial.chat’
  • The UCP operations 01, 02, and 30 accept a NULL-value as sender, since the OAdC field is optional for these operations.

com.objectxp.msg.UcpStatus

  • New class implementing SmsStatus. Returned by the UCP service for status reports. See the API-Documentation for more information about this class.

com.objectxp.msg.GsmSmsService

  • The service now copes better with “garbage” characters received from the GSM device
  • An additional sendMessage() method has been introduced that can be used to send messages using a specific SMSC
  • A new method getServiceCentreAddress() has been introduced that can be used to get the current set SMSC number on the device (see AT+CSCA?).
  • fixed a bug that prevented the GSM alphabet conversion to work with trial keys
  • new init property “sms.gsm.cpin.etsi” which can be used to specify the behaviour of the GSM device responding to the “AT+CPIN?” command (see jsms.conf for more information)
  • Prevent a NullPointerException if the connection to the phone drops while polling for incoming messages
  • Device communication improvements (each AT command sent now gets a unique transaction id)
  • Fixed a bug where incoming messages could get out of sync for devices that have a “buggy” AT+CPIN? behaviour (e.g. WAVECOM devices) (see also init property “sms.gsm.cpin.etsi”)
  • init() now checks for PDU support
  • Fixed a bug in the TCP connector that caused an endless loop if the TCP connection was closed by the server side
  • TCP Connector: The Service now checks if the TCP connection could be established and will throw an exception if thats not the case.
  • Fixed a bug in the TCP Connector that prevented jSMS from getting responses from the Terminal-Server
  • A new method (getSubscriberNumber()) has been added that returns the MSISDN’s of the SIM card in use

com.objectxp.msg.GsmException

  • The method getCause() has been renamed to getGsmCause() to prevent conflicts with Java >= 1.4

com.objectxp.msg.SmsMessage

  • Support for the “Reply Path” and “Reject Duplicate” options
  • calling setType() will no longer modify the User Data Header Indicator (UDHI)
  • prevent NullPointerException in getMessage() showing up in log if message is unset.
  • getMessage() now correctly converts the user data to UCS2 before returning it as a String if the alphabet is set to DC_UCS2

com.objectxp.msg.MessageEvent

  • The MessageEvent now may contain a “embedded” exception

Other changes

  • Prevent NullPointerException if SmsMessage.containsUserDataHeader() == true but actual User Data Header is null
  • Log4j interaction: jSMS no longer ignores existing log4j settings
  • Fixed two small memory leaks occuring in connect() and init()
jSMS 1.5.5 Oct 10 2002 Maintenance release
Changes in this release
com.objectxp.msg.GsmSmsService

  • now translates extended GSM error codes (+CMS ERROR:) and returns them as GsmException
  • the communication timeout can be specified in the init properties (see “Other changes” below for more details)
  • Alphanumeric originators will now be decoded correctly
  • isAlive() method fixed

com.objectxp.msg.Cimd2SmsService

  • support for alphanumeric originators
  • correction for incomming status message: sender field is set correctly
  • Fixed a bug where multiple instances of the service shared the same CIMD2 packet sequence number
  • the communication timeout can be specified in the init properties (see “Other changes” below for more details)
  • Introduced new method “resetSession()” to reset a CIMD2 session

com.objectxp.msg.UcpSmsService

  • now correctly sets the the message class
  • RECEIVING_STOPPED event ist broadcasted when disconnecting
  • the communication timeout can be specified in the init properties (see “Other changes” below for more details)
  • UcpMessage allows setting notification address and notification type
  • SocketTimeOut is set to 5000 millis, so that we have no blocking when the socket connection is invalid (closed) (necessary for some operating systems)

com.objectxp.msg.smart.OperatorLogo

  • OperatorLogos are now sent using only one message (instead of two)

com.objectxp.msg.smart.PictureMessage

  • removed limitation of the maximum text length allowed

com.objectxp.msg.Message

  • new method “setSenderType()” for setting/overriding the format of the sender address (alphanumeric, numeric). This setting will only be used by Services supporting alphanumeric originators (UCP, CIMD2)

Other changes

  • Various bugfixes concerning GSM 7-bit alphabet conversion
  • The communication timeout (in milliseconds) can now be set in the init properties using the property name “sms.connector.timeout” (valid for all services) or ” [service-prefix].connector.timeout” for a specific SMS Service (e.g. gsm.connector.timeout, cimd2.connector.timeout).
jSMS 1.5.4 Jun 28 2002 Maintenance release
Changes in this release
com.objectxp.msg.SmsMessage

  • new method for setting/getting the Protocol Identifier (TP-PID)
  • Fixed a bug in getMessage() where some characters in the GSM 7-Bit alphabet (e.g. greek omega) had been wrongly converted

com.objectxp.msg.UcpMessage

  • Support for setting additional extra services (XSer)

com.objectxp.msg.GsmSmsService

  • Broadcast ‘NETWORK_DISCONNECTED’ when network registration has dropped
  • new method getNetworkRegistration() to check if GSM device is registered to the mobile network
jSMS 1.5.3 May 31 2002 Maintenance release
Changes in this release
com.objectxp.msg.ManualAck

  • New Interface for Manual Acknowledgement

com.objectxp.msg.UcpSmsService

  • Support for Manual Acknowledgement
  • Message sender (originator) can be alphanumerical (available for UCP Operation 51)

com.objectxp.msg.Cimd2SmsService

  • Support for manual ack
  • optimized message receiver

Other changes

  • Support for the OS-9 platform
  • Improved Java 1.1 compatibility
jSMS 1.5.2 Apr 12 2002 Maintenance release
Changes in this release
com.objectxp.msg.SmsService

  • new method isAlive() to check if the connection to the GSM device / SMSC is still alive
  • new methods for controlling the keep-alive behaviour: setKeepAliveInterval(), getKeepAliveInterval(), getLastIsAliveTime(), isKeepAliveActive()

com.objectxp.msg.SmsMessage

  • Message class indication can be turned off by setting the message class to SmsMessage.NO_CLASS. This might be necessary for UCS2 messages to be delivered correctly (depends on your GSM network provider)

com.objectxp.msg.UcpSmsService

  • Fixed a bug that prevented the Service to correctly receive binary messages
  • The UCP operation to use for submitting messages to the SMSC can now be configured using init properties (Supported operations are 01, 30 and 51, where 51 is the default).

com.objectxp.msg.GsmSmsService

  • init() now tries to enable the MMS (More Messages to Send) phone property. For devices supporting MMS, this increases send performance about 130%
  • Improved NMI (new message indication) handling
  • init() can be instructed to wait for network registration (init property “sms.gsm.waitfornet=true”). This is necessary for GSM devices where sending messages only works after the device has been registered to the network.
jSMS 1.5.1 Feb 23 2002 Maintenance release
Changes in this release
com.objectxp.msg.GsmSmsService

  • Fixed compatibility issue: when you never called connect in jSMS-1.5 you got an exception. This is now fixed.
  • autoConnect() now works as in earlier releases but stays deprecated.

com.objectxp.msg.UcpSmsService

  • Corrections in init() method

com.objectxp.msg.Cimd2SmsService

  • javadoc corrections

Other changes

  • Correction in sending euro sign in GsmSmsService
  • Performance optimization for GSM
jSMS 1.5 Feb 13 2002 Support for Nokia’s CIMD2 over TCP/IP
Changes in this release
com.objectxp.msg.SmsService

  • All services now implement a startReceiving(), stopReceiving() and isReceiving() method
  • autoReceive() and autoConnect() have been deprecated and will be removed in upcoming releases.
  • additional init() method taking a java.util.File argument

com.objectxp.msg.Cimd2SmsService

  • jSMS 1.5 contains a new SMS Service supporting Nokia’s CIMD2 protocol

com.objectxp.msg.MessageEvent

  • two new Event types have been introduced: RECEIVING_STARTED and RECEIVING_STOPPED.

com.objectxp.msg.GsmSmsService

  • sendMessage() will retry to send the message if the device rejects the message on the first try

com.objectxp.msg.UcpSmsService

  • The service now also supports receiving Status Reports

Other changes

  • Incoming messages will now be buffered for later delivery if receiving has not yet been started. As soon as you start receiving, the buffered messages will be delivered.
  • StatusReportMessage.getStatus() now returns a reference to the interface SmsStatus instead of class GsmStatus
  • For TCP/IP based connections, jSMS now tries to prevent that the target host closes the connection (keep-alive) while jSMS is in connected mode
  • GSM/ISO character conversion now correctly handles the euro symbol
jSMS 1.4.4 Dec 18 2001 Maintenance release
Changes in this release
com.objectxp.msg.GsmSmsService

  • After sending a Message, the service sets the Message ID to the value received by the GSM device. This makes it possible to map incoming Status Reports to the corresponding Message
  • Minor bugfixes in message receiving code
  • Priority of receiving Thread decreased
  • getMessage() no longer throws MessageException if no message is available at given index, but returns null (as mentioned in the APIdocs).
  • cleanup in getting and setting the Prefered storage location and size
  • calling removeMessageEventListener() doesn’t block anymore (synchronization issue)

com.objectxp.msg.UcpSmsService

  • now supports sending StatusReports to mobile devices

com.objectxp.msg.GsmHelper

  • ISO to GSM and GSM to ISO character encoding rewritten from scratch

Fixed compile problems concerning jBuilder and jSMS

jSMS 1.4.3 Nov 16 2001 Maintenance release
Changes in this release
com.objectxp.msg.SmsMessage

  • coding group DC_GROUP_DATA is now set per default (as in jSMS < 1.4). This solves problems for some users that upgraded to jSMS 1.4.x and have a mobile network provider who doesn’t support DC_GROUP_GENERAL.

com.objectxp.msg.GsmSmsService

  • Bugfix: Throw a MessageException if the GSM device rejected the message to send.

com.objectxp.msg.VCard

  • Corrected port addressing, javadoc corrections

com.objectxp.msg.VCalendar

  • Java APIdoc corrections
  • Added missing characters to the GSM codepage translation
  • Fixed a bug where the message alphabet was ignored when using coding group DC_GROUP_DATA
  • Character conversion for Messages with DEFAULT_ALPHABET (incoming/ outgoing) fixed
jSMS 1.4.2 Nov 12 2001 Maintenance release
Changes in this release
src.com.objectxp.msg.SmsMessage

  • Support for setting the Data Coding Group and Message Waiting Indication properties

Replaced all LGPL stuff (getopt, regexp) with own code

com.objectxp.msg.GsmSmsService

  • Bugfix concerning Status Report Receiving using some GSM devices (Siemens TC35, Ericsson R320s)
jSMS 1.4.1 Oct 31 2001 Maintenance release
Changes in this release
jsms.conf: new UCP property for international prefixes: “ucp.intprefix”com.objectxp.msg.UcpSmsService

  • replace international prefix (+) with property ucp.intprefix or “00″.
  • now correctly sets the message’s data coding scheme

com.objectxp.msg.GsmSmsService

  • make sure that getMessage(…) cuts off trailing semicolons received by the device. This fixes a bug where getMessage(…) threw an exception with some GSM devices (e.g. Nokia 7110)
jSMS 1.4 Oct 22 2001 UCP over TCP/IP. High-Volume Messaging with jSMS is now a breeze
Changes in this release

  • Support for SMS Status Reports and Validity Period
  • Full control over the SMS Data coding scheme (DCS): You can now specify the SMS Message class and Character encoding. This will allow you to e.g. send and receive Unicode (UCS2) short messages
  • Provide your own SMS User Data Header: Add SMS port addressing and multi-part messaging to your mobile applications
  • UCP over TCP/IP. High-Volume Messaging with jSMS is now a breeze
jSMS 1.3.1 Aug 17 2001 Picture it!
Changes in this release
jSMS 1.3.1 enhances its SmartMessaging capabilites with support for sending Picture Messages. The following Picture messages may be sent to SmartMessing enabled GSM devices:

  • Calling Line Identification (Caller Groups)
  • Picture Messages
  • Operator Logos
jSMS 1.3 Jul 20 2001 jSMS 1.3 becomes smart…
Changes in this release
The new release of jSMS includes classes for sending Short Messages (SMS) according to Nokias SmartMessaging Specification. The following SmartMessages are supported:

  • vCard (Electronic business card)
  • vCalendar (electronic calendaring and scheduling)
  • Ringtone (includes a RTX parser)

jSMS 1.3 now also supports Wavecomm and Falcom GSM devices.

jSMS 1.2 Apr 30 2001 jSMS now supports the TAP (v1.8) protocol
Changes in this release
TAP allows you to send Short Messages (SMS) using a modem / ISDN adapter (no GSM device needed). The message will be sent through the TAP gateway of your local mobile network operator.jSMS supports the following protocols

  • GSM (send/receive)
  • TAP/IXO (send)
  • UCP (send)
  • SMTP (send)
jSMS 1.1 Feb 26 2001 UCP (Universal Computer Protocol) integration.
Changes in this release

  • UCP allows you to send Short Messages (SMS) using a modem / ISDN adapter (no GSM device needed). The message will be sent through the UCP gateway of your local mobile network operator.
  • Additional Serial port parameters may now be specified in the configuration properties
  • Some minor bug fixes
jSMS 1.0 Jan 20 2001 Initial jSMS version