content: package gov2.nist.javax2.sip.message;
  
  import java.text.ParseException;
  
  import javax2.sip.header.CSeqHeader;
  import javax2.sip.header.CallIdHeader;
  import javax2.sip.header.ContentLengthHeader;
  import javax2.sip.header.ContentTypeHeader;
  import javax2.sip.header.FromHeader;
  import javax2.sip.header.ToHeader;
  import javax2.sip.header.ViaHeader;
  import javax2.sip.message.Message;
  
  /**
   *
   * @author jean.deruelle@gmail.com
   *
   */
  public interface MessageExt extends Message {
  
       /**
       * This method allows applications to associate application context with
       * the message. This specification does not define the format of this
       * data, this the responsibility of the application and is dependent
       * on the application.
       * this application data is un-interpreted by the stack.
       * Beware : when you clone a message, the deepcopy does not apply to the application data
       * (instead, we would just make a copy of the pointer).
       *
       * @param applicationData - un-interpreted application data.
       * @since v2.0
       *
       */
  
      public void setApplicationData (Object applicationData);
  
  
      /**
       * Returns the application data associated with the transaction.This
       * specification does not define the format of this application specific
       * data. This is the responsibility of the application.
       *
       * @return application data associated with the message by the application.
       * @since v2.0
       *
       */
      public Object getApplicationData();
      
      /**
       * Get the multipart mime content from a message. Builds a wrapper around the
       * content and breaks it into multiple sections. Returns these sections as
       * a multipart mime content list. If the content type is not multipart mime
       * then the list will have a single element in it. 
       * 
       * @since v2.0
       * @param Message message
       * @throws ParseException if the content type is multipart mime but the content
       *  is not properly encoded.
       *  
       */
      public MultipartMimeContent getMultipartMimeContent() throws ParseException;
      
      /**
       * Get the topmost Via header.
       * 
       * @since v2.0
       */
      public ViaHeader getTopmostViaHeader();
      
      /**
       * Get the From header or null if none present.
       * 
       * @since v2.0
       */
      public FromHeader getFromHeader();
      
      /**
       * Get the To header or null if none present.
       * 
       * @since v2.0
       */
      public ToHeader getToHeader();
      
      
      /**
       * Get the callId header or null if none present.
       * 
       * @since v2.0
       */
      public CallIdHeader getCallIdHeader();
      
      /**
       * Get the CSeq header or null if none present.
       * 
       * @since v2.0
       */
      public  CSeqHeader getCSeqHeader();
      
      /**
       * Get the content type header or null if none present.
       * 
       * @since v2.0
       */
      public ContentTypeHeader getContentTypeHeader();
      
      /**
       * Get the content length header or null if none present.
       * 
       * @since v2.0
       */
      public ContentLengthHeader getContentLengthHeader();
      
      /**
       * Get the first line of the request or response.
       * 
       * @since v2.0
       */
      public String getFirstLine();
  
  }
  