Overview | Package | Class | Tree | Deprecated | Index | Help
| Openfire 3.4.4 Javadoc
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.xmpp.packet
Class JID

    java.lang.Object
      org.xmpp.packet.JID

All Implemented Interfaces:
  Externalizable, Serializable, Comparable<JID>

    public class JID

extends Object
implements Comparable<JID>, Externalizable

An XMPP address (JID). A JID is made up of a node (generally a username), a domain, and a resource. The node and resource are optional; domain is required. In simple ABNF form:

`jid = [ node "@" ] domain [ "/" resource ]`

Some sample JID's:

- `user@example.com`
- `user@example.com/home`
- `example.com`

Each allowable portion of a JID (node, domain, and resource) must not be more than 1023 bytes in length, resulting in a maximum total size (including the '@' and '/' separators) of 3071 bytes.

Author:
  Matt Tucker
See Also:
  Serialized Form

Constructor Summary
`JID()` Constructor added for Externalizable.
`JID(String jid)` Constructs a JID from it's String representation.
`JID(String node, String domain, String resource)` Constructs a JID given a node, domain, and resource.
`JID(String node, String domain, String resource, boolean skipStringprep)` Constructs a JID given a node, domain, and resource being able to specify if stringprep should be applied or not.

Method Summary
`int` | `compareTo(JID jid)`
`boolean` | `equals(Object object)`
`static boolean` | `equals(String jid1, String jid2)` Returns true if two JID's are equivalent.
`static String` | `escapeNode(String node)` Escapes the node portion of a JID according to "JID Escaping" (JEP-0106).
`String` | `getDomain()` Returns the domain.
`String` | `getNode()` Returns the node, or `null` if this JID does not contain node information.
`String` | `getResource()` Returns the resource, or `null` if this JID does not contain resource information.
`int` | `hashCode()`
`void` | `readExternal(ObjectInput in)`
`static String` | `resourceprep(String resource)`
`String` | `toBareJID()` Returns the String representation of the bare JID, which is the JID with resource information removed.
`String` | `toString()` Returns a String representation of the JID.
`static String` | `unescapeNode(String node)` Un-escapes the node portion of a JID according to "JID Escaping" (JEP-0106).
`void` | `writeExternal(ObjectOutput out)`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Constructor Detail

### JID

    public JID()

  Constructor added for Externalizable. Do not use this constructor.

### JID

    public JID(String jid)

  Constructs a JID from it's String representation.

  Parameters:
    `jid` - a valid JID.
  Throws:
    `IllegalArgumentException` - if the JID is not valid.

### JID

    public JID(String node,
               String domain,
               String resource)

  Constructs a JID given a node, domain, and resource.

  Parameters:
    `node` - the node.
    `domain` - the domain, which must not be `null`.
    `resource` - the resource.
  Throws:
    `IllegalArgumentException` - if the JID is not valid.

### JID

    public JID(String node,
               String domain,
               String resource,
               boolean skipStringprep)

  Constructs a JID given a node, domain, and resource being able to specify if stringprep should be applied or not.

  Parameters:
    `node` - the node.
    `domain` - the domain, which must not be `null`.
    `resource` - the resource.
    `skipStringprep` - true if stringprep should not be applied.
  Throws:
    `IllegalArgumentException` - if the JID is not valid.

Method Detail

### escapeNode

    public static String escapeNode(String node)

  Escapes the node portion of a JID according to "JID Escaping" (JEP-0106). Escaping replaces characters prohibited by node-prep with escape sequences, as follows:

  Unescaped Character | Encoded Sequence
  <space> | \20
  " | \22
  & | \26
  ' | \27
  / | \2f
  : | \3a
  < | \3c
  > | \3e
  @ | \40
  \ | \5c

  This process is useful when the node comes from an external source that doesn't conform to nodeprep. For example, a username in LDAP may be "Joe Smith". Because the <space> character isn't a valid part of a node, the username should be escaped to "Joe\20Smith" before being made into a JID (e.g. "joe\20smith@example.com" after case-folding, etc. has been applied).

  All node escaping and un-escaping must be performed manually at the appropriate time; the JID class will not escape or un-escape automatically.

  Parameters:
    `node` - the node.
  Returns:
    the escaped version of the node.

### unescapeNode

    public static String unescapeNode(String node)

  Un-escapes the node portion of a JID according to "JID Escaping" (JEP-0106).

  Escaping replaces characters prohibited by node-prep with escape sequences, as follows:

  Unescaped Character | Encoded Sequence
  <space> | \20
  " | \22
  & | \26
  ' | \27
  / | \2f
  : | \3a
  < | \3c
  > | \3e
  @ | \40
  \ | \5c

  This process is useful when the node comes from an external source that doesn't conform to nodeprep. For example, a username in LDAP may be "Joe Smith". Because the <space> character isn't a valid part of a node, the username should be escaped to "Joe\20Smith" before being made into a JID (e.g. "joe\20smith@example.com" after case-folding, etc. has been applied).

  All node escaping and un-escaping must be performed manually at the appropriate time; the JID class will not escape or un-escape automatically.

  Parameters:
    `node` - the escaped version of the node.
  Returns:
    the un-escaped version of the node.

### resourceprep

    public static String resourceprep(String resource)
                               throws org.jivesoftware.stringprep.StringprepException

  Throws:
    `org.jivesoftware.stringprep.StringprepException`

### getNode

    public String getNode()

  Returns the node, or `null` if this JID does not contain node information.

  Returns:
    the node.

### getDomain

    public String getDomain()

  Returns the domain.

  Returns:
    the domain.

### getResource

    public String getResource()

  Returns the resource, or `null` if this JID does not contain resource information.

  Returns:
    the resource.

### toBareJID

    public String toBareJID()

  Returns the String representation of the bare JID, which is the JID with resource information removed.

  Returns:
    the bare JID.

### toString

    public String toString()

  Returns a String representation of the JID.

  Overrides:
    `toString` in class `Object`
  Returns:
    a String representation of the JID.

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `Object`

### equals

    public boolean equals(Object object)

  Overrides:
    `equals` in class `Object`

### compareTo

    public int compareTo(JID jid)

  Specified by:
    `compareTo` in interface `Comparable<JID>`

### equals

    public static boolean equals(String jid1,
                                 String jid2)

  Returns true if two JID's are equivalent. The JID components are compared using the following rules:
  - Nodes are normalized using nodeprep (case insensitive).
  - Domains are normalized using IDNA and then nameprep (case insensitive).
  - Resources are normalized using resourceprep (case sensitive).
  These normalization rules ensure, for example, that `User@EXAMPLE.com/home` is considered equal to `user@example.com/home`.

  Parameters:
    `jid1` - a JID.
    `jid2` - a JID.
  Returns:
    true if the JIDs are equivalent; false otherwise.
  Throws:
    `IllegalArgumentException` - if either JID is not valid.

### writeExternal

    public void writeExternal(ObjectOutput out)
                       throws IOException

  Specified by:
    `writeExternal` in interface `Externalizable`
  Throws:
    `IOException`

### readExternal

    public void readExternal(ObjectInput in)
                      throws IOException,
                             ClassNotFoundException

  Specified by:
    `readExternal` in interface `Externalizable`
  Throws:
    `IOException`
    `ClassNotFoundException`

Overview | Package | Class | Tree | Deprecated | Index | Help
| Openfire 3.4.4 Javadoc
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2003-2007 Jive Software.