Change-Log for JAIN SIP v1.1
General
- Introduced the javax.sip package structure.
Package javax.sip
- Added Timeout Class defining two types of timeouts, RETRANSMIT and
TRANSACTION.
- Deleted SipEvent and defined granularity into the RequestEvent, ResponseEvent
and TimeoutEvent.
- Mandated single SipListener in the system.
- Added new ObjectInUseException to replace UnableToDeleteProviderException
- Moved Parameters interface to javax.sip.header package.
- Replaced SIPParseException with java.text.ParseException.
- Deleted SipListenerAlreadyRegisteredException, SipListenerNotRegisteredException,
UnableToDeleteProviderException and SipParseException.
- Added Transaction, ClientTransaction and ServerTransaction interfaces.
- The Request that created a Transaction can be retrieved from the Transaction.
- Changed transaction identifier from long to ClientTransaction and
ServerTransaction objects.
- ClientTransaction and ServerTransaction objects are now used to send
out requests.
- Added Dialog object.
- Dialog object can be used to create and send dialog stateful requests.
- ClientTransaction can be used to create a Cancel or Ack for the Transaction.
- Removed incorrect use of IllegalArgumentException.
- Change TransportUnavailableException to TransportNotSupportedException.
- Added Router object that shows configuration of default route and
outbound proxy.
- Defined properties format for static SipStack configuration.
- Added TransactionAlreadyExistsException.
- Added TransactionUnavailableException and changed SipException to TransactionUnavailableException
on SipProvider.getNewClient/ServerTransaction.
ListeningPoint.java
- Supported TLS over TCP and SCTP transport in Listening Point class.
- Deleted the DEFAULT_PORT constant and replaced with the PORT_5060
and PORT_5061 constants.
SipProvider.java
- Added setListeningPoint method to SipProvider class.
- Added TransactionDoesNotExistException on sendRequest and sendResponse
methods.
- Added getNewServerTransaction(Request) and getNewClientTransaction(Request).
- Changed SipException to IdHeaderNotAvailableExcetpion on the getCallIdHeader
method on SipProvider.
- SipListenerAlreadyRegisteredException and SipListenerNotRegisteredException
use on the SipProvider interface now return silently.
- Moved send sendBye(long transactionId, boolean isServerTransaction)
from Provider to Dialogue.
- Deleted extraneous methods on SipProvider, namely:
- public long sendAck(long clientTransactionId, String body, String
bodyType, String bodySubType)
- public long sendAck(long clientTransactionId, byte[] body, String
bodyType, String bodySubType)
- public void sendResponse(long serverTransactionId, int statusCode,
byte[] body, String bodyType, String bodySubType)
- public void sendResponse(long serverTransactionId, int statusCode,
String body, String bodyType, String bodySubType)
- public void sendResponse(long serverTransactionId, int statusCode)
- public Request getTransactionRequest(long transactionId, boolean
isServerTransaction)
- public Response getTransactionResponse(long transactionId, boolean
isServerTransaction)
SipStack.java
- Added create and delete methods for ListeningPoints.
- Replaced UnableToDeleteProviderException with ObjectInUseException
on deleteProvider method.
- Added getIPAddress method.
- Added getRetransmissionFilter utility for User Agents.
- Added getRouter method.
- Deleted setStackName method.
SipFactory.java
- Updated to ensure only one instance of a SipStack per IP Address.
- Updated to ensure only one instance MessageFactory, HeaderFactory
and AddressFactory is ever returned by the SipFactory.
- Added resetFactory method to switch between implementations from
different vendors.
- Removed SipException of createSipStack on the SipFactory as it is
never thrown.
- Added properties argument to createSipStack and defined expected
values of properties object.
SipListener.java
- Deleted processTimeout, processRequest and processResponse with generic
SipEvent argument and replaced with finer grained Event mechanism.
Package javax.sip.address
- Deleted SipURL.
- Added TelURL interface.
- Added SipURI inteface.
- Renamed get/setAddress to get/setURI in NameAddress.
- Removed explicit clone method on NameAddress.
- Deleted removeDisplayName and hasDisplayName on NameAddress.
- Removed SipParseException of setDisplayName method of NameAddress.
- Renamed NameAddress to Address.
- Removed SipParseException of createNameAddress method on AddressFactory.
- Deleted createSipURL(InetAddress host), createSipURL(String host),
createSipURL(String user, InetAddress host), createSipURL(String user, String
host) on the AddressFactory.
- Added createAddress(String address), createTelURL(String phoneNumber)
and createSipURI(String user, String host) on the AddressFactory.
Package javax.sip.header
- Added TooManyHopsException to Header package.
- Changed exception on decrementMaxForwards method in MaxForwardsHeader
to TooManyHopsException.
Added Headers
- Added the following new RFC3261 Headers - AuthenticationInfoHeader,
CallInfoHeader, ContentDispositionHeader, ContentLanguageHeader, ErrorInfoHeader,
InReplyToHeader, MimeVersionHeader, MinExpiresHeader, SupportHeader.
- Added ReasonHeader to support RFC3326.
- Added RAckHeader and RSeqHeader to support RFC3262.
- Added AllowEventsHeader, EventHeader and SubscriptionState to support
RFC3265.
- Added ReferToHeader to support RFC3515.
Deleted Headers
- EncodingHeader
- EncryptionHeader
- EndpointHeader
- HideHeader
- NameAddressHeader
- OptionTagHeader
- ProductHeader
- ResponseKeyHeader
- SecurityHeader.
HeaderFactory.java
- Added create methods for AlertInfo, AuthenticationInfoHeader, CallInfoHeader,
ContentDispositionHeader, ErrorInfoHeader, InReplyTo, MimeVersion, ReplyTo.
- Added create methods for extension RFC's, AllowEventsHeader, EventHeader,
RAckHeader, RSeqHeader, ReasonHeader, ReferToHeader, SubscriptionStateHeader.
- Deleted createDateHeader(String date), createEncryptionHeader(String
scheme), createExpiresHeader(String date), createExpiresHeader(Date date),
createHeader(String name, String value), createHideHeader(String hide),
createResponseKeyHeader(String scheme), createRetryAfterHeader(String date),
createRetryAfterHeader(Date date), createViaHeader(String host, int port,
String transport), createViaHeader(String host), createViaHeader(int port,
String host), createViaHeader(InetAddress host), createViaHeader(int port,
InetAddress host), createViaHeader(URI uri), createViaHeader(String host,
String transport).
New Utility classes
- HeaderAddress
- Encoding
- OptionTag
- Parameters
Deleted methods in Headers
- hasQValue and removeQValue in AcceptHeader.
- hasQValue and removeQValue in AcceptLanguageHeader.
- getMethod and setMethod in Allow Header and replaced with methods
handling an Iterator.
- get/set/has/removeAction, get/set/has/removeComment, getExpiresAsDate,
getExpiresAsDeltaSeconds, setExpires(Date expiryDate), has/removeQValue,
has/removeExpires, set/isWildcard, ACTION_PROXY and ACTION_REDIRECT in ContactHeader.
- setDate(String date), get/setDate(Date date) in DateHeader.
- getEncoding and setEncoding in Encoding Header and replaced with
methods handling an Iterator.
- getValue and setValue in Header.
- getDeltaSeconds, setDeltaSeconds and isDate in ExpiresHeader.
- get/setValue in Header.
- remove/hasDelay in TimestampHeader.
- get/set/has/removeComment and has/removeDuration in RetryAfterHeader.
- get/set/set/has/removeMaddr, get/set/set/has/removeHost, get/set/has/removePort,
get/set/has/removeComment, get/setProtocolVersion, get/setTransport, get/set/has/removeTTL,
has/removeReceived, has/removeBranch, setReceived(InetAddress received),
set/isHidden, UDP and TCP in ViaHeader.
- get/setAgent in WarningHeader.
Added methods in Headers
- Added getAlertInfo and setAlertInfo in AlertInfoHeader.
- Added get/set RetryAfter attribute to RetryAfterHeader.
- Added getAuthenticationInfo and setAuthenticationInfo in AuthenticationInfoHeader.
- Added digest, realm, username and response accessors to AuthorizationHeader.
Exceptions
- Removed SIPParseException of setSequenceNumber in CSeqHeader.
- Throw ParseException on setParameter in ParametersHeader.
- Removed IllegalArgumentException in EncodingHeader.
- Changed SIPParseException to InvalidArgumentException on setContentLength
in ContentLengthHeader.
- Changed SIPParseException to InvalidArgumentException on setMaxForward
in MaxForwardsHeader.
- Changed SIPException to IllegalAccessException on decrementMaxForward
in MaxForwardsHeader.
Inheritance
- ExpiresHeader no longer extends DateHeader, inherets directly from
Header.
- ProxyRequireHeader now extends RequireHeader as opposed to OptionTagHeader.
- RetryAfterHeader no longer extends ExpiresHeader.
Data types
- Changed SequenceNumber from long to int in CSeqHeader.
- Changed duration from long to int in RetryAfterHeader.
- Changed date from Date to Calender in DateHeader.
Package javax.sip.message
Request.java
- Deleted all header accessor methods, use those defined in Message.
- Added INFO method as defined in RFC2976.
- Added PRACK method as defined in RFC3262.
- Added SUBSCRIBE and NOTIFY as defined in RFC3265.
- Added UPDATE method as defined in RFC3311.
- Added MESSAGE method as defined in RFC3428.
- Added REFER method as defined in RFC3515.
Response.java
- Deleted all header accessor methods, use those defined in Message.
- Added 183 Session Progress, 413 Request Entity Too Large, 414 Request
URI Too Long, 416 Unsupported URI Scheme, 421 Extension Required, 423 Interval
Too Brief, 480 Temporarily Unavailable, 481 Call/Transaction Does Not Exist,
487 Request Terminated, 488 Not Acceptable Here, 491 Request Pending, 493
Undecipherable, 500 Server Internal Error, 504 Server Time-out, 505 Version
Not Supported, 513 Message Too Large.
- Deleted 303 See Other, 409 Conflict, 411 Length Rquired, 413 Entity
Too Large, 414 Request URI Too Large, 480 Temporarily Not Available, 481
Call Leg/Transaction Does Not Exist, 500 Internal Server Error, 504 Gateway
Time-out, 505 SIP Version Not Supported.
- Added 202 Accepted and 489 Bad Event as defined in RFC3265.
Message.java
- Deleted set/getEncrytionHeader on Message.
- Deleted createViaHeader(InetAddress host, int port, String transport)
and createViaHeader(InetAddress host, String transport).
- Added createViaHeader(SipURI sipURI).
- Added the mandatory MaxForwardsHeader with the set/get accessor methods.
- Made ViaHeader mandatory, hence deleted hasViaHeaders(), removeViaHeaders()
methods.
- Deleted isRequest(), hasBody(), hasHeaders(), hasHeaders(String headerName),
setHeaders(String headerName, List headers), setHeader(Header header, boolean
first), getHeader(String headerName, boolean first), addHeader(Header header,
boolean top), addHeaders(String headerName, List headers, boolean top),
removeHeaders(String headerName), (String headerName, boolean first), getBodyAsBytes(),
setBody(ContentTypeHeader contentTypeHeader, String body).
- Deleted all optional specific Header accessor methods and replced
with generic mechanism to acces optional headers.
- Added getHeader(String headerName), getHeaders(String headerName),
addHeader(Header header), removeHeader(String headerName), setHeaders(List
headers), getContent, getRawContent, setContent(Object body, ContentTypeHeader
contentTypeHeader), getContentDisposition(), setContentDisposition(ContentDisposition
contentDisposition).
- Changed HeaderIterator to ListIterator
Semantic fixes
Clearer semantics on what part of the message the implementation manages
versus what part the application manages.
- Branch Id responsibility: If a transaction is used to send the request,
then the branch id will be set by the SipProvider; that is the application
should not set this value.
- From and To 'tag' responsibility: Client Side: The From tag needs to
be assigned by the applicaton but the To tag is maintained by the stack dialog
layer. Once the initial From tag is assigned it should not be manupulated
by the application.
- Server Side: The To tag is assigned by the application.
- Route Assignment: Explicit Route assignment (if needed) for the initial
dialog establishment is the applications responsibility but subsequently,
Routes are maintained by the dialog layer and should not be manupulated by
the application, for example the SipProvider queries the dialog for Route
headers and adds these to the outgoing message as needed. The Router may
be used by the application to determine the initial Route of the message.
- Record Route assignment: Proxy servers should attach Record Route headers
to messages explicitly when forwarding them if necessary.