org.xmpp.packet
Class Message

java.lang.Object
  extended by org.xmpp.packet.Packet
      extended by org.xmpp.packet.Message
Direct Known Subclasses:
Invitation

@NotThreadSafe
public class Message
extends Packet

Message packet.

A message can have one of several Types. For each message type, different message fields are typically used as follows:

 Message type
FieldNormalChatGroup ChatHeadlineError
subject SHOULDSHOULD NOTSHOULD NOTSHOULD NOTSHOULD NOT
thread OPTIONALSHOULDOPTIONALOPTIONALSHOULD NOT
body SHOULDSHOULDSHOULDSHOULDSHOULD NOT
error MUST NOTMUST NOTMUST NOTMUST NOTMUST


Nested Class Summary
static class Message.Type
          Type-safe enumeration for the type of a message.
 
Field Summary
 
Fields inherited from class org.xmpp.packet.Packet
docFactory, element, fromJID, toJID
 
Constructor Summary
Message()
          Constructs a new Message.
Message(org.dom4j.Element element)
          Constructs a new Message using an existing Element.
Message(org.dom4j.Element element, boolean skipValidation)
          Constructs a new Message using an existing Element.
 
Method Summary
 org.dom4j.Element addChildElement(java.lang.String name, java.lang.String namespace)
          Adds a new child element to this packet with the given name and namespace.
 Message createCopy()
          Returns a deep copy of this Message.
 java.lang.String getBody()
          Returns the body of this message or null if there is no body.
 org.dom4j.Element getChildElement(java.lang.String name, java.lang.String namespace)
          Returns the first child element of this packet that matches the given name and namespace.
 java.lang.String getSubject()
          Returns the subject of this message or null if there is no subject..
 java.lang.String getThread()
          Returns the thread value of this message, an identifier that is used for tracking a conversation thread ("instant messaging session") between two entities.
 Message.Type getType()
          Returns the type of this message
 void setBody(java.lang.String body)
          Sets the body of this message.
 void setSubject(java.lang.String subject)
          Sets the subject of this message.
 void setThread(java.lang.String thread)
          Sets the thread value of this message, an identifier that is used for tracking a conversation thread ("instant messaging session") between two entities.
 void setType(Message.Type type)
          Sets the type of this message.
 
Methods inherited from class org.xmpp.packet.Packet
addExtension, deleteExtension, getElement, getError, getExtension, getFrom, getID, getTo, setError, setError, setFrom, setFrom, setID, setTo, setTo, toString, toXML
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Message

public Message()
Constructs a new Message.


Message

public Message(org.dom4j.Element element)
Constructs a new Message using an existing Element. This is useful for parsing incoming message Elements into Message objects.

Parameters:
element - the message Element.

Message

public Message(org.dom4j.Element element,
               boolean skipValidation)
Constructs a new Message using an existing Element. This is useful for parsing incoming message Elements into Message objects. Stringprep validation on the TO address can be disabled. The FROM address will not be validated since the server is the one that sets that value.

Parameters:
element - the message Element.
skipValidation - true if stringprep should not be applied to the TO address.
Method Detail

getType

public Message.Type getType()
Returns the type of this message

Returns:
the message type.
See Also:
Message.Type

setType

public void setType(Message.Type type)
Sets the type of this message.

Parameters:
type - the message type.
See Also:
Message.Type

getSubject

public java.lang.String getSubject()
Returns the subject of this message or null if there is no subject..

Returns:
the subject.

setSubject

public void setSubject(java.lang.String subject)
Sets the subject of this message.

Parameters:
subject - the subject.

getBody

public java.lang.String getBody()
Returns the body of this message or null if there is no body.

Returns:
the body.

setBody

public void setBody(java.lang.String body)
Sets the body of this message.

Parameters:
body - the body.

getThread

public java.lang.String getThread()
Returns the thread value of this message, an identifier that is used for tracking a conversation thread ("instant messaging session") between two entities. If the thread is not set, null will be returned.

Returns:
the thread value.

setThread

public void setThread(java.lang.String thread)
Sets the thread value of this message, an identifier that is used for tracking a conversation thread ("instant messaging session") between two entities.

Parameters:
thread - thread value.

getChildElement

public org.dom4j.Element getChildElement(java.lang.String name,
                                         java.lang.String namespace)
Returns the first child element of this packet that matches the given name and namespace. If no matching element is found, null will be returned. This is a convenience method to avoid manipulating this underlying packet's Element instance directly.

Child elements in extended namespaces are used to extend the features of XMPP. Examples include a "user is typing" indicator and invitations to group chat rooms. Although any valid XML can be included in a child element in an extended namespace, many common features have been standardized as Jabber Enhancement Proposals (JEPs).

Parameters:
name - the element name.
namespace - the element namespace.
Returns:
the first matching child element, or null if there is no matching child element.

addChildElement

public org.dom4j.Element addChildElement(java.lang.String name,
                                         java.lang.String namespace)
Adds a new child element to this packet with the given name and namespace. The newly created Element is returned. This is a convenience method to avoid manipulating this underlying packet's Element instance directly.

Child elements in extended namespaces are used to extend the features of XMPP. Examples include a "user is typing" indicator and invitations to group chat rooms. Although any valid XML can be included in a child element in an extended namespace, many common features have been standardized as Jabber Enhancement Proposals (JEPs).

Parameters:
name - the element name.
namespace - the element namespace.
Returns:
the newly created child element.

createCopy

public Message createCopy()
Returns a deep copy of this Message.

Specified by:
createCopy in class Packet
Returns:
a deep copy of this Message.