org.jivesoftware.smackx.jingle
Class JingleSessionState

java.lang.Object
  extended by org.jivesoftware.smackx.jingle.JingleSessionState
Direct Known Subclasses:
JingleSessionStateEnded

public abstract class JingleSessionState
extends java.lang.Object

Implement the Jingle Session state using the State Behavioral pattern. (From the book Design Patterns, AKA GoF.) These classes also employ the Flyweight and Singleton patterns as recommended for the State pattern by GoF. There seems to be three ways to go with the State pattern in Java: interface, abstract class and enums. Most of the accepted models use abstract classes. It wasn't clear to me that any of the three models was superior, so I went with the most common example.

Author:
Jeff Williams

Constructor Summary
JingleSessionState()
           
 
Method Summary
abstract  void enter()
          Called when entering the state.
abstract  void exit()
          Called when exiting the state.
static JingleSessionState getInstance()
          Called when entering the state.
abstract  IQ processJingle(JingleSession session, Jingle jingle, JingleActionEnum action)
          Process an incoming Jingle Packet.
 java.lang.String toString()
          For debugging just emit the short name of the class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JingleSessionState

public JingleSessionState()
Method Detail

getInstance

public static JingleSessionState getInstance()
Called when entering the state.


enter

public abstract void enter()
Called when entering the state.


exit

public abstract void exit()
Called when exiting the state.


processJingle

public abstract IQ processJingle(JingleSession session,
                                 Jingle jingle,
                                 JingleActionEnum action)
Process an incoming Jingle Packet. When you look at the GoF State pattern this method roughly corresponds to example on p310: ProcessOctect().


toString

public java.lang.String toString()
For debugging just emit the short name of the class.

Overrides:
toString in class java.lang.Object