001: /**
002: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
003: * Unpublished - rights reserved under the Copyright Laws of the United States.
004: * Copyright © 2003 Sun Microsystems, Inc. All rights reserved.
005: * Copyright © 2005 BEA Systems, Inc. All rights reserved.
006: *
007: * Use is subject to license terms.
008: *
009: * This distribution may include materials developed by third parties.
010: *
011: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
012: *
013: * Module Name : JSIP Specification
014: * File Name : RequestEvent.java
015: * Author : Phelim O'Doherty
016: *
017: * HISTORY
018: * Version Date Author Comments
019: * 1.1 08/10/2002 Phelim O'Doherty Initial version
020: * 1.2 02/15/2005 M. Ranganathan getDialog get the current
021: * dialog.
022: *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
023: */package javax.sip;
024:
025: import java.util.*;
026: import javax.sip.message.Request;
027:
028: /**
029: * This class represents an Request event that is passed from a SipProvider to
030: * its SipListener. This specification handles the passing of request messages to the
031: * application use the event model. An application (SipListener) will register
032: * with the SIP protocol stack (SipProvider) and listen for Request events
033: * from the SipProvider.
034: * <p>
035: * This specification defines a single Request event object to handle all Request
036: * messages. The Request event encapsulates the Request message that can be
037: * retrieved from {@link RequestEvent#getRequest()}. Therefore the event type
038: * of a Request event can be determined as follows:
039: * <p>
040: * <i>eventType == RequestEvent.getRequest().getMethod();</i>
041: * <p>
042: * A Request event also encapsulates the server transaction which handles the
043: * Request.
044: * <p>
045: * RequestEvent contains the following elements:
046: * <ul>
047: * <li>source - the source of the event i.e. the SipProvider sending the
048: * RequestEvent
049: * <li>serverTransaction - the server transaction this RequestEvent is
050: * associated with.
051: * <li>Request - the Request message received on the SipProvider
052: * that needs passed to the application encapsulated in a RequestEvent.
053: * </ul>
054: *
055: * @author BEA Systems, NIST
056: * @version 1.2
057: */
058: public class RequestEvent extends EventObject {
059:
060: /**
061: * Constructs a RequestEvent encapsulating the Request that has been received
062: * by the underlying SipProvider. This RequestEvent once created is passed to
063: * {@link javax.sip.SipListener#processRequest(RequestEvent)} method of the SipListener
064: * for application processing.
065: *
066: * @param source - the source of ResponseEvent i.e. the SipProvider
067: * @param serverTransaction - server transaction upon which
068: * this Request was sent
069: * @param request - the Request message received by the SipProvider
070: */
071: public RequestEvent(Object source,
072: ServerTransaction serverTransaction, Dialog dialog,
073: Request request) {
074: super (source);
075: m_transaction = serverTransaction;
076: m_request = request;
077: m_dialog = dialog;
078: }
079:
080: /**
081: * Gets the server transaction associated with this RequestEvent
082: *
083: * @return the server transaction associated with this RequestEvent
084: */
085: public ServerTransaction getServerTransaction() {
086: return m_transaction;
087: }
088:
089: /**
090: * Gets the Request message associated with this RequestEvent.
091: *
092: * @return the message associated with this RequestEvent.
093: */
094: public Request getRequest() {
095: return m_request;
096: }
097:
098: /**
099: * Gets the dialog with which this Event is associated.
100: * This method separates transaction support from dialog support. This
101: * enables application developers to access the dialog associated to this event
102: * without having to query the transaction associated to the event.
103: *
104: * @return the dialog with which the RequestEvent is associated or null if
105: * no dialog exists.
106: * @since v1.2
107: */
108: public Dialog getDialog() {
109: return m_dialog;
110: }
111:
112: // internal variables
113: private Request m_request;
114: private ServerTransaction m_transaction;
115: private Dialog m_dialog;
116: }
|