gov.nist.javax.sip.parser
Class StringMsgParser

java.lang.Object
  extended by gov.nist.javax.sip.parser.StringMsgParser
All Implemented Interfaces:
MessageParser

public class StringMsgParser
extends Object
implements MessageParser

Parse SIP message and parts of SIP messages such as URI's etc from memory and return a structure. Intended use: UDP message processing. This class is used when you have an entire SIP message or SIPHeader or SIP URL in memory and you want to generate a parsed structure from it. For SIP messages, the payload can be binary or String. If you have a binary payload, use parseSIPMessage(byte[]) else use parseSIPMessage(String) The payload is accessible from the parsed message using the getContent and getContentBytes methods provided by the SIPMessage class. If SDP parsing is enabled using the parseContent method, then the SDP body is also parsed and can be accessed from the message using the getSDPAnnounce method. Currently only eager parsing of the message is supported (i.e. the entire message is parsed in one feld swoop).

Version:
1.2 $Revision: 1.28 $ $Date: 2010-05-06 14:07:44 $
Author:
M. Ranganathan

Field Summary
protected static boolean computeContentLengthFromMessage
           
 
Constructor Summary
StringMsgParser()
           
 
Method Summary
static void main(String[] args)
          Test code.
 AddressImpl parseAddress(String address)
          Parse an address (nameaddr or address spec) and return and address structure.
 Host parseHost(String host)
          Parse a host name and return a parsed structure.
static SIPHeader parseSIPHeader(String header)
          Parse an individual SIP message header from a string.
 SIPMessage parseSIPMessage(byte[] msgBuffer, boolean readBody, boolean strict, ParseExceptionListener parseExceptionListener)
          Parse a buffer containing a single SIP Message where the body is an array of un-interpreted bytes.
 RequestLine parseSIPRequestLine(String requestLine)
          Parse the SIP Request Line
 StatusLine parseSIPStatusLine(String statusLine)
          Parse the SIP Response message status line
 SipUri parseSIPUrl(String url)
          Parse a SIP url from a string and return a URI structure for it.
 TelephoneNumber parseTelephoneNumber(String telephone_number)
          Parse a telephone number return a parsed structure.
 GenericURI parseUrl(String url)
          Parse a uri from a string and return a URI structure for it.
protected  SIPMessage processFirstLine(String firstLine, ParseExceptionListener parseExceptionListener, byte[] msgBuffer)
           
protected  void processHeader(String header, SIPMessage message, ParseExceptionListener parseExceptionListener, byte[] rawMessage)
           
static void setComputeContentLengthFromMessage(boolean computeContentLengthFromMessage)
           
protected static String trimEndOfLine(String line)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

computeContentLengthFromMessage

protected static boolean computeContentLengthFromMessage
Constructor Detail

StringMsgParser

public StringMsgParser()
Since:
v0.9
Method Detail

parseSIPMessage

public SIPMessage parseSIPMessage(byte[] msgBuffer,
                                  boolean readBody,
                                  boolean strict,
                                  ParseExceptionListener parseExceptionListener)
                           throws ParseException
Parse a buffer containing a single SIP Message where the body is an array of un-interpreted bytes. This is intended for parsing the message from a memory buffer when the buffer. Incorporates a bug fix for a bug that was noted by Will Sullin of Callcast

Specified by:
parseSIPMessage in interface MessageParser
Parameters:
msgBuffer - a byte buffer containing the messages to be parsed. This can consist of multiple SIP Messages concatenated together.
readBody - If the content body should be read or not
parseExceptionListener - Callback if an exception occurs during the parsing to notify back the stack
Returns:
a SIPMessage[] structure (request or response) containing the parsed SIP message.
Throws:
ParseException - is thrown when an illegal message has been encountered (and the rest of the buffer is discarded).
See Also:
ParseExceptionListener

trimEndOfLine

protected static String trimEndOfLine(String line)

processFirstLine

protected SIPMessage processFirstLine(String firstLine,
                                      ParseExceptionListener parseExceptionListener,
                                      byte[] msgBuffer)
                               throws ParseException
Throws:
ParseException

processHeader

protected void processHeader(String header,
                             SIPMessage message,
                             ParseExceptionListener parseExceptionListener,
                             byte[] rawMessage)
                      throws ParseException
Throws:
ParseException

parseAddress

public AddressImpl parseAddress(String address)
                         throws ParseException
Parse an address (nameaddr or address spec) and return and address structure.

Parameters:
address - is a String containing the address to be parsed.
Returns:
a parsed address structure.
Throws:
ParseException - when the address is badly formatted.
Since:
v1.0

parseHost

public Host parseHost(String host)
               throws ParseException
Parse a host name and return a parsed structure.

Parameters:
host - is a String containing the host name to be parsed
Returns:
a parsed address structure.
Throws:
ParseException - a ParseException when the hostname is badly formatted.
Since:
v1.0

parseTelephoneNumber

public TelephoneNumber parseTelephoneNumber(String telephone_number)
                                     throws ParseException
Parse a telephone number return a parsed structure.

Parameters:
telephone_number - is a String containing the telephone # to be parsed
Returns:
a parsed address structure.
Throws:
ParseException - a ParseException when the address is badly formatted.
Since:
v1.0

parseSIPUrl

public SipUri parseSIPUrl(String url)
                   throws ParseException
Parse a SIP url from a string and return a URI structure for it.

Parameters:
url - a String containing the URI structure to be parsed.
Returns:
A parsed URI structure
Throws:
ParseException - if there was an error parsing the message.

parseUrl

public GenericURI parseUrl(String url)
                    throws ParseException
Parse a uri from a string and return a URI structure for it.

Parameters:
url - a String containing the URI structure to be parsed.
Returns:
A parsed URI structure
Throws:
ParseException - if there was an error parsing the message.

parseSIPHeader

public static SIPHeader parseSIPHeader(String header)
                                throws ParseException
Parse an individual SIP message header from a string.

Parameters:
header - String containing the SIP header.
Returns:
a SIPHeader structure.
Throws:
ParseException - if there was an error parsing the message.

parseSIPRequestLine

public RequestLine parseSIPRequestLine(String requestLine)
                                throws ParseException
Parse the SIP Request Line

Parameters:
requestLine - a String containing the request line to be parsed.
Returns:
a RequestLine structure that has the parsed RequestLine
Throws:
ParseException - if there was an error parsing the requestLine.

parseSIPStatusLine

public StatusLine parseSIPStatusLine(String statusLine)
                              throws ParseException
Parse the SIP Response message status line

Parameters:
statusLine - a String containing the Status line to be parsed.
Returns:
StatusLine class corresponding to message
Throws:
ParseException - if there was an error parsing
See Also:
StatusLine

setComputeContentLengthFromMessage

public static void setComputeContentLengthFromMessage(boolean computeContentLengthFromMessage)

main

public static void main(String[] args)
                 throws ParseException
Test code.

Throws:
ParseException


Copyright © 2012. All Rights Reserved.