1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2024-11-25 13:32:07 +01:00

Merge branch '4.2'

This commit is contained in:
Florian Schmaus 2017-12-25 14:09:51 +01:00
commit 3c4225d167
72 changed files with 203 additions and 223 deletions

View file

@ -178,8 +178,7 @@ allprojects {
// since the one paramater addStringOption doesn't seem to // since the one paramater addStringOption doesn't seem to
// work, we extra add '-quiet', which is added anyway by // work, we extra add '-quiet', which is added anyway by
// gradle. // gradle.
// TODO enable all doclints, see SMACK-650 options.addStringOption('Xdoclint:all', '-quiet')
options.addStringOption('Xdoclint:all,-html', '-quiet')
} }
} }
tasks.withType(Javadoc) { tasks.withType(Javadoc) {
@ -193,6 +192,10 @@ allprojects {
configurations.errorprone { configurations.errorprone {
resolutionStrategy.force 'com.google.errorprone:error_prone_core:2.0.18' resolutionStrategy.force 'com.google.errorprone:error_prone_core:2.0.18'
} }
// Make all project's 'test' target depend on javadoc, so that
// javadoc is also linted.
test { dependsOn javadoc }
} }
gradle.taskGraph.whenReady { taskGraph -> gradle.taskGraph.whenReady { taskGraph ->

View file

@ -50,6 +50,7 @@ import android.os.SystemClock;
* counted towards the scheduled delay time</li> * counted towards the scheduled delay time</li>
* <li>the scheduled Runnable is not run while the system is in deep sleep.</li> * <li>the scheduled Runnable is not run while the system is in deep sleep.</li>
* </ul> * </ul>
* <p>
* That is the reason Android comes with an API to schedule those tasks: AlarmManager. Which this * That is the reason Android comes with an API to schedule those tasks: AlarmManager. Which this
* class uses to determine every 30 minutes if a server ping is necessary. The interval of 30 * class uses to determine every 30 minutes if a server ping is necessary. The interval of 30
* minutes is the ideal trade-off between reliability and low resource (battery) consumption. * minutes is the ideal trade-off between reliability and low resource (battery) consumption.

View file

@ -68,7 +68,6 @@ public final class SmackConfiguration {
* <li> Server Traffic -- raw XML traffic sent by the server to the client. * <li> Server Traffic -- raw XML traffic sent by the server to the client.
* <li> Interpreted Packets -- shows XML packets from the server as parsed by Smack. * <li> Interpreted Packets -- shows XML packets from the server as parsed by Smack.
* </ul> * </ul>
* <p/>
* Debugging can be enabled by setting this field to true, or by setting the Java system * Debugging can be enabled by setting this field to true, or by setting the Java system
* property <tt>smack.debugEnabled</tt> to true. The system property can be set on the * property <tt>smack.debugEnabled</tt> to true. The system property can be set on the
* command line such as "java SomeApp -Dsmack.debugEnabled=true". * command line such as "java SomeApp -Dsmack.debugEnabled=true".

View file

@ -34,7 +34,6 @@ import org.jxmpp.jid.EntityFullJid;
* implements shared methods which are used by the different types of connections (e.g. * implements shared methods which are used by the different types of connections (e.g.
* <code>XMPPTCPConnection</code> or <code>XMPPBOSHConnection</code>). To create a connection to an XMPP server * <code>XMPPTCPConnection</code> or <code>XMPPBOSHConnection</code>). To create a connection to an XMPP server
* a simple usage of this API might look like the following: * a simple usage of this API might look like the following:
* <p>
* *
* <pre> * <pre>
* // Create a connection to the igniterealtime.org XMPP server. * // Create a connection to the igniterealtime.org XMPP server.
@ -54,7 +53,6 @@ import org.jxmpp.jid.EntityFullJid;
* // Disconnect from the server * // Disconnect from the server
* con.disconnect(); * con.disconnect();
* </pre> * </pre>
* </p>
* <p> * <p>
* Note that the XMPPConnection interface does intentionally not declare any methods that manipulate * Note that the XMPPConnection interface does intentionally not declare any methods that manipulate
* the connection state, e.g. <code>connect()</code>, <code>disconnect()</code>. You should use the * the connection state, e.g. <code>connect()</code>, <code>disconnect()</code>. You should use the

View file

@ -34,8 +34,8 @@ import java.util.zip.InflaterInputStream;
* <p> * <p>
* See also: * See also:
* <ul> * <ul>
* <li><a href="http://docs.oracle.com/javase/7/docs/api/java/util/zip/Deflater.html#deflate(byte[], int, int, int)">The required deflate() method (Java7)</a> * <li><a href="http://docs.oracle.com/javase/7/docs/api/java/util/zip/Deflater.html#deflate(byte[],%20int,%20int,%20int)">The required deflate() method (Java7)</a>
* <li><a href="http://developer.android.com/reference/java/util/zip/Deflater.html#deflate(byte[], int, int, int)">The required deflate() method (Android)</a> * <li><a href="http://developer.android.com/reference/java/util/zip/Deflater.html#deflate(byte[],%20int,%20int,%20int)">The required deflate() method (Android)</a>
* </ul> * </ul>
* *
* @author Florian Schmaus * @author Florian Schmaus

View file

@ -26,11 +26,12 @@ import org.jivesoftware.smack.XMPPConnection;
/** /**
* Very simple debugger that prints to the console (stdout) the sent and received stanzas. Use * Very simple debugger that prints to the console (stdout) the sent and received stanzas. Use
* this debugger with caution since printing to the console is an expensive operation that may * this debugger with caution since printing to the console is an expensive operation that may
* even block the thread since only one thread may print at a time.<p> * even block the thread since only one thread may print at a time.
* <p/> * <p>
* It is possible to not only print the raw sent and received stanzas but also the interpreted * It is possible to not only print the raw sent and received stanzas but also the interpreted
* packets by Smack. By default interpreted packets won't be printed. To enable this feature * packets by Smack. By default interpreted packets won't be printed. To enable this feature
* just change the <tt>printInterpreted</tt> static variable to <tt>true</tt>. * just change the <tt>printInterpreted</tt> static variable to <tt>true</tt>.
* </p>
* *
* @author Gaston Dombiak * @author Gaston Dombiak
*/ */

View file

@ -24,11 +24,12 @@ import org.jivesoftware.smack.XMPPConnection;
/** /**
* Very simple debugger that prints to the console (stdout) the sent and received stanzas. Use * Very simple debugger that prints to the console (stdout) the sent and received stanzas. Use
* this debugger with caution since printing to the console is an expensive operation that may * this debugger with caution since printing to the console is an expensive operation that may
* even block the thread since only one thread may print at a time.<p> * even block the thread since only one thread may print at a time.
* <p/> * <p>
* It is possible to not only print the raw sent and received stanzas but also the interpreted * It is possible to not only print the raw sent and received stanzas but also the interpreted
* packets by Smack. By default interpreted packets won't be printed. To enable this feature * packets by Smack. By default interpreted packets won't be printed. To enable this feature
* just change the <tt>printInterpreted</tt> static variable to <tt>true</tt>. * just change the <tt>printInterpreted</tt> static variable to <tt>true</tt>.
* </p>
* *
* @author Gaston Dombiak * @author Gaston Dombiak
*/ */

View file

@ -25,7 +25,7 @@ public class ErrorIQ extends SimpleIQ {
/** /**
* Constructs a new error IQ. * Constructs a new error IQ.
* <p> * <p>
* According to RFC 6120 § 8.3.1 "4. An error stanza MUST contain an <error/> child element.", so the xmppError argument is mandatory. * According to RFC 6120 § 8.3.1 "4. An error stanza MUST contain an &lt;error/&gt; child element.", so the xmppError argument is mandatory.
* </p> * </p>
* @param xmppErrorBuilder the XMPPError builder (required). * @param xmppErrorBuilder the XMPPError builder (required).
*/ */

View file

@ -135,7 +135,7 @@ public interface Packet extends TopLevelStreamElement {
List<ExtensionElement> getExtensions(); List<ExtensionElement> getExtensions();
/** /**
* Return a set of all extensions with the given element name <emph>and</emph> namespace. * Return a set of all extensions with the given element name <i>and</i> namespace.
* <p> * <p>
* Changes to the returned set will update the stanza(/packet) extensions, if the returned set is not the empty set. * Changes to the returned set will update the stanza(/packet) extensions, if the returned set is not the empty set.
* </p> * </p>

View file

@ -70,7 +70,7 @@ public abstract class Stanza implements TopLevelStreamElement {
* Such an attribute is defined for all stanza types. For IQ, see for * Such an attribute is defined for all stanza types. For IQ, see for
* example XEP-50 3.7: * example XEP-50 3.7:
* "The requester SHOULD provide its locale information using the "xml:lang * "The requester SHOULD provide its locale information using the "xml:lang
* " attribute on either the <iq/> (RECOMMENDED) or <command/> element." * " attribute on either the &lt;iq/&gt; (RECOMMENDED) or &lt;command/&gt; element."
* </p> * </p>
*/ */
protected String language; protected String language;

View file

@ -33,7 +33,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
* *
* <table border=1> * <table border=1>
* <caption>XMPP Errors</caption> * <caption>XMPP Errors</caption>
* <hr><td><b>XMPP Error Condition</b></td><td><b>Type</b></td><td><b>RFC 6120 Section</b></td></hr> * <tr><th>XMPP Error Condition</th><th>Type</th><th>RFC 6120 Section</th></tr>
* <tr><td>bad-request</td><td>MODIFY</td><td>8.3.3.1</td></tr> * <tr><td>bad-request</td><td>MODIFY</td><td>8.3.3.1</td></tr>
* <tr><td>conflict</td><td>CANCEL</td><td>8.3.3.2</td></tr> * <tr><td>conflict</td><td>CANCEL</td><td>8.3.3.2</td></tr>
* <tr><td>feature-not-implemented</td><td>CANCEL</td><td>8.3.3.3</td></tr> * <tr><td>feature-not-implemented</td><td>CANCEL</td><td>8.3.3.3</td></tr>

View file

@ -35,6 +35,7 @@ import org.jxmpp.jid.EntityBareJid;
/** /**
* Base class for SASL mechanisms. * Base class for SASL mechanisms.
* Subclasses will likely want to implement their own versions of these methods: * Subclasses will likely want to implement their own versions of these methods:
* <ul>
* <li>{@link #authenticate(String, String, DomainBareJid, String, EntityBareJid, SSLSession)} -- Initiate authentication stanza using the * <li>{@link #authenticate(String, String, DomainBareJid, String, EntityBareJid, SSLSession)} -- Initiate authentication stanza using the
* deprecated method.</li> * deprecated method.</li>
* <li>{@link #authenticate(String, DomainBareJid, CallbackHandler, EntityBareJid, SSLSession)} -- Initiate authentication stanza * <li>{@link #authenticate(String, DomainBareJid, CallbackHandler, EntityBareJid, SSLSession)} -- Initiate authentication stanza

View file

@ -86,10 +86,11 @@ import org.jxmpp.jid.Jid;
/** /**
* The EnhancedDebugger is a debugger that allows to debug sent, received and interpreted messages * The EnhancedDebugger is a debugger that allows to debug sent, received and interpreted messages
* but also provides the ability to send ad-hoc messages composed by the user.<p> * but also provides the ability to send ad-hoc messages composed by the user.
* <p/> * <p>
* A new EnhancedDebugger will be created for each connection to debug. All the EnhancedDebuggers * A new EnhancedDebugger will be created for each connection to debug. All the EnhancedDebuggers
* will be shown in the same debug window provided by the class EnhancedDebuggerWindow. * will be shown in the same debug window provided by the class EnhancedDebuggerWindow.
* </p>
* *
* @author Gaston Dombiak * @author Gaston Dombiak
*/ */

View file

@ -49,10 +49,11 @@ import org.jivesoftware.smack.provider.ProviderManager;
/** /**
* The EnhancedDebuggerWindow is the main debug window that will show all the EnhancedDebuggers. * The EnhancedDebuggerWindow is the main debug window that will show all the EnhancedDebuggers.
* For each connection to debug there will be an EnhancedDebugger that will be shown in the * For each connection to debug there will be an EnhancedDebugger that will be shown in the
* EnhancedDebuggerWindow.<p> * EnhancedDebuggerWindow.
* <p/> * <p>
* This class also provides information about Smack like for example the Smack version and the * This class also provides information about Smack like for example the Smack version and the
* installed providers. * installed providers.
* </p>
* *
* @author Gaston Dombiak * @author Gaston Dombiak
*/ */

View file

@ -418,7 +418,7 @@ public final class MamManager extends Manager {
/** /**
* Obtain page before the first message saved (specific chat). * Obtain page before the first message saved (specific chat).
* <p> * <p>
* Note that the messageUid is the XEP-0313 UID and <b>not</> the stanza ID of the message. * Note that the messageUid is the XEP-0313 UID and <b>not</b> the stanza ID of the message.
* </p> * </p>
* *
* @param chatJid * @param chatJid
@ -442,7 +442,7 @@ public final class MamManager extends Manager {
/** /**
* Obtain page after the last message saved (specific chat). * Obtain page after the last message saved (specific chat).
* <p> * <p>
* Note that the messageUid is the XEP-0313 UID and <b>not</> the stanza ID of the message. * Note that the messageUid is the XEP-0313 UID and <b>not</b> the stanza ID of the message.
* </p> * </p>
* *
* @param chatJid * @param chatJid

View file

@ -238,9 +238,9 @@ public class AMPExtension implements ExtensionElement {
**/ **/
public enum Action { public enum Action {
/** /**
* The "alert" action triggers a reply <message/> stanza to the sending entity. * The "alert" action triggers a reply &lt;message/&gt; stanza to the sending entity.
* This <message/> stanza MUST contain the element <amp status='alert'/>, * This &lt;message/&gt; stanza MUST contain the element &lt;amp status='alert'/&gt;,
* which itself contains the <rule/> that triggered this action. In all other respects, * which itself contains the &lt;rule/&gt; that triggered this action. In all other respects,
* this action behaves as "drop". * this action behaves as "drop".
*/ */
alert, alert,
@ -251,16 +251,16 @@ public class AMPExtension implements ExtensionElement {
*/ */
drop, drop,
/** /**
* The "error" action triggers a reply <message/> stanza of type "error" to the sending entity. * The "error" action triggers a reply &lt;message/&gt; stanza of type "error" to the sending entity.
* The <message/> stanza's <error/> child MUST contain a * The &lt;message/&gt; stanza's &lt;error/&gt; child MUST contain a
* <failed-rules xmlns='http://jabber.org/protocol/amp#errors'/> error condition, * &lt;failed-rules xmlns='http://jabber.org/protocol/amp#errors'/&gt; error condition,
* which itself contains the rules that triggered this action. * which itself contains the rules that triggered this action.
*/ */
error, error,
/** /**
* The "notify" action triggers a reply <message/> stanza to the sending entity. * The "notify" action triggers a reply &lt;message/&gt; stanza to the sending entity.
* This <message/> stanza MUST contain the element <amp status='notify'/>, which itself * This &lt;message/&gt; stanza MUST contain the element &lt;amp status='notify'/&gt;, which itself
* contains the <rule/> that triggered this action. Unlike the other actions, * contains the &lt;rule/&gt; that triggered this action. Unlike the other actions,
* this action does not override the default behavior for a server. * this action does not override the default behavior for a server.
* Instead, the server then executes its default behavior after sending the notify. * Instead, the server then executes its default behavior after sending the notify.
*/ */

View file

@ -37,7 +37,7 @@ import org.jxmpp.jid.parts.Resourcepart;
/** /**
* Provides methods to manage bookmarks in accordance with XEP-0048. Methods for managing URLs and * Provides methods to manage bookmarks in accordance with XEP-0048. Methods for managing URLs and
* Conferences are provided. * Conferences are provided.
* </p> *
* It should be noted that some extensions have been made to the XEP. There is an attribute on URLs * It should be noted that some extensions have been made to the XEP. There is an attribute on URLs
* that marks a url as a news feed and also a sub-element can be added to either a URL or conference * that marks a url as a news feed and also a sub-element can be added to either a URL or conference
* indicated that it is shared amongst all users on a server. * indicated that it is shared amongst all users on a server.

View file

@ -36,12 +36,10 @@ import org.xmlpull.v1.XmlPullParserException;
* Bookmark Storage (XEP-0048) defined a protocol for the storage of bookmarks to conference rooms and other entities * Bookmark Storage (XEP-0048) defined a protocol for the storage of bookmarks to conference rooms and other entities
* in a Jabber user's account. * in a Jabber user's account.
* See the following code sample for saving Bookmarks: * See the following code sample for saving Bookmarks:
* <p/>
* <pre> * <pre>
* XMPPConnection con = new XMPPTCPConnection("jabber.org"); * XMPPConnection con = new XMPPTCPConnection("jabber.org");
* con.login("john", "doe"); * con.login("john", "doe");
* Bookmarks bookmarks = new Bookmarks(); * Bookmarks bookmarks = new Bookmarks();
* <p/>
* // Bookmark a URL * // Bookmark a URL
* BookmarkedURL url = new BookmarkedURL(); * BookmarkedURL url = new BookmarkedURL();
* url.setName("Google"); * url.setName("Google");
@ -56,8 +54,6 @@ import org.xmlpull.v1.XmlPullParserException;
* // Save Bookmarks using PrivateDataManager. * // Save Bookmarks using PrivateDataManager.
* PrivateDataManager manager = new PrivateDataManager(con); * PrivateDataManager manager = new PrivateDataManager(con);
* manager.setPrivateData(bookmarks); * manager.setPrivateData(bookmarks);
* <p/>
* <p/>
* LastActivity activity = LastActivity.getLastActivity(con, "xray@jabber.org"); * LastActivity activity = LastActivity.getLastActivity(con, "xray@jabber.org");
* </pre> * </pre>
* *

View file

@ -73,7 +73,7 @@ public interface BytestreamSession {
* read() call on the input stream associated with this session will block for only this amount * read() call on the input stream associated with this session will block for only this amount
* of time. If the timeout expires, a java.net.SocketTimeoutException is raised, though the * of time. If the timeout expires, a java.net.SocketTimeoutException is raised, though the
* session is still valid. The option must be enabled prior to entering the blocking operation * session is still valid. The option must be enabled prior to entering the blocking operation
* to have effect. The timeout must be > 0. A timeout of zero is interpreted as an infinite * to have effect. The timeout must be &gt; 0. A timeout of zero is interpreted as an infinite
* timeout. Default is 0. * timeout. Default is 0.
* *
* @param timeout the specified timeout, in milliseconds * @param timeout the specified timeout, in milliseconds

View file

@ -61,10 +61,10 @@ public class CapsExtension implements ExtensionElement {
* {@inheritDoc}. * {@inheritDoc}.
* *
* <pre> * <pre>
* <c xmlns='http://jabber.org/protocol/caps' * &lt;c xmlns='http://jabber.org/protocol/caps'
* hash='sha-1' * hash='sha-1'
* node='http://code.google.com/p/exodus' * node='http://code.google.com/p/exodus'
* ver='QgayPKawpkPSDYmwT/WM94uAlu0='/> * ver='QgayPKawpkPSDYmwT/WM94uAlu0='/&gt;
* </pre> * </pre>
* *
*/ */

View file

@ -38,6 +38,7 @@ import org.jxmpp.jid.Jid;
* <code>getForm</code> method retrieves a form with all the users. * <code>getForm</code> method retrieves a form with all the users.
* <p> * <p>
* Each command has a <tt>node</tt> that should be unique within a given JID. * Each command has a <tt>node</tt> that should be unique within a given JID.
* </p>
* <p> * <p>
* Commands may have zero or more stages. Each stage is usually used for * Commands may have zero or more stages. Each stage is usually used for
* gathering information required for the command execution. Users are able to * gathering information required for the command execution. Users are able to
@ -49,21 +50,22 @@ import org.jxmpp.jid.Jid;
* have to provide the data forms the user must complete in each stage and the * have to provide the data forms the user must complete in each stage and the
* allowed actions the user might perform during each stage (e.g. go to the * allowed actions the user might perform during each stage (e.g. go to the
* previous stage or go to the next stage). * previous stage or go to the next stage).
* <p> * </p>
* All the actions may throw an XMPPException if there is a problem executing * All the actions may throw an XMPPException if there is a problem executing
* them. The <code>XMPPError</code> of that exception may have some specific * them. The <code>XMPPError</code> of that exception may have some specific
* information about the problem. The possible extensions are: * information about the problem. The possible extensions are:
* * <ul>
* <li><i>malformed-action</i>. Extension of a <i>bad-request</i> error.</li> * <li><i>malformed-action</i>. Extension of a <i>bad-request</i> error.</li>
* <li><i>bad-action</i>. Extension of a <i>bad-request</i> error.</li> * <li><i>bad-action</i>. Extension of a <i>bad-request</i> error.</li>
* <li><i>bad-locale</i>. Extension of a <i>bad-request</i> error.</li> * <li><i>bad-locale</i>. Extension of a <i>bad-request</i> error.</li>
* <li><i>bad-payload</i>. Extension of a <i>bad-request</i> error.</li> * <li><i>bad-payload</i>. Extension of a <i>bad-request</i> error.</li>
* <li><i>bad-sessionid</i>. Extension of a <i>bad-request</i> error.</li> * <li><i>bad-sessionid</i>. Extension of a <i>bad-request</i> error.</li>
* <li><i>session-expired</i>. Extension of a <i>not-allowed</i> error.</li> * <li><i>session-expired</i>. Extension of a <i>not-allowed</i> error.</li>
* </ul>
* <p> * <p>
* See the <code>SpecificErrorCondition</code> class for detailed description * See the <code>SpecificErrorCondition</code> class for detailed description
* of each one. * of each one.
* <p> * </p>
* Use the <code>getSpecificErrorConditionFrom</code> to obtain the specific * Use the <code>getSpecificErrorConditionFrom</code> to obtain the specific
* information from an <code>XMPPError</code>. * information from an <code>XMPPError</code>.
* *

View file

@ -31,7 +31,7 @@ import org.jxmpp.jid.Jid;
* <li>Current Stage</li> * <li>Current Stage</li>
* <li>Available actions</li> * <li>Available actions</li>
* <li>Default action</li> * <li>Default action</li>
* </ul><p/> * </ul>
* To implement a new command extend this class and implement all the abstract * To implement a new command extend this class and implement all the abstract
* methods. When implementing the actions remember that they could be invoked * methods. When implementing the actions remember that they could be invoked
* several times, and that you must use the current stage number to know what to * several times, and that you must use the current stage number to know what to

View file

@ -269,7 +269,7 @@ public final class FileTransferNegotiator extends Manager {
* Send a request to another user to send them a file. The other user has * Send a request to another user to send them a file. The other user has
* the option of, accepting, rejecting, or not responding to a received file * the option of, accepting, rejecting, or not responding to a received file
* transfer request. * transfer request.
* <p/> * <p>
* If they accept, the stanza(/packet) will contain the other user's chosen stream * If they accept, the stanza(/packet) will contain the other user's chosen stream
* type to send the file across. The two choices this implementation * type to send the file across. The two choices this implementation
* provides to the other user for file transfer are <a * provides to the other user for file transfer are <a
@ -277,11 +277,12 @@ public final class FileTransferNegotiator extends Manager {
* which is the preferred method of transfer, and <a * which is the preferred method of transfer, and <a
* href="http://www.xmpp.org/extensions/jep-0047.html">In-Band Bytestreams</a>, * href="http://www.xmpp.org/extensions/jep-0047.html">In-Band Bytestreams</a>,
* which is the fallback mechanism. * which is the fallback mechanism.
* <p/> * </p>
* <p>
* The other user may choose to decline the file request if they do not * The other user may choose to decline the file request if they do not
* desire the file, their client does not support XEP-0096, or if there are * desire the file, their client does not support XEP-0096, or if there are
* no acceptable means to transfer the file. * no acceptable means to transfer the file.
* <p/> * </p>
* Finally, if the other user does not respond this method will return null * Finally, if the other user does not respond this method will return null
* after the specified timeout. * after the specified timeout.
* *

View file

@ -122,7 +122,7 @@ public class FileTransferRequest {
/** /**
* Accepts this file transfer and creates the incoming file transfer. * Accepts this file transfer and creates the incoming file transfer.
* *
* @return Returns the <b><i>IncomingFileTransfer</b></i> on which the * @return Returns the IncomingFileTransfer on which the
* file transfer can be carried out. * file transfer can be carried out.
*/ */
public IncomingFileTransfer accept() { public IncomingFileTransfer accept() {

View file

@ -42,12 +42,12 @@ import org.jivesoftware.smack.XMPPException.XMPPErrorException;
* user on the jabber network. There are two stages of the file transfer to be * user on the jabber network. There are two stages of the file transfer to be
* concerned with and they can be handled in different ways depending upon the * concerned with and they can be handled in different ways depending upon the
* method that is invoked on this class. * method that is invoked on this class.
* <p/> *
* The first way that a file is received is by calling the * The first way that a file is received is by calling the
* {@link #receiveFile()} method. This method, negotiates the appropriate stream * {@link #receiveFile()} method. This method, negotiates the appropriate stream
* method and then returns the <b><i>InputStream</b></i> to read the file * method and then returns the InputStream to read the file
* data from. * data from.
* <p/> *
* The second way that a file can be received through this class is by invoking * The second way that a file can be received through this class is by invoking
* the {@link #receiveFile(File)} method. This method returns immediately and * the {@link #receiveFile(File)} method. This method returns immediately and
* takes as its parameter a file on the local file system where the file * takes as its parameter a file on the local file system where the file
@ -98,14 +98,14 @@ public class IncomingFileTransfer extends FileTransfer {
/** /**
* This method negotiates the stream and then transfer's the file over the negotiated stream. * This method negotiates the stream and then transfer's the file over the negotiated stream.
* The transferred file will be saved at the provided location. * The transferred file will be saved at the provided location.
* <p/> *
* This method will return immediately, file transfer progress can be monitored through several * This method will return immediately, file transfer progress can be monitored through several
* methods: * methods:
* <p/> *
* <UL> * <UL>
* <LI>{@link FileTransfer#getStatus()} * <LI>{@link FileTransfer#getStatus()}</LI>
* <LI>{@link FileTransfer#getProgress()} * <LI>{@link FileTransfer#getProgress()}</LI>
* <LI>{@link FileTransfer#isDone()} * <LI>{@link FileTransfer#isDone()}</LI>
* </UL> * </UL>
* *
* @param file The location to save the file. * @param file The location to save the file.

View file

@ -23,7 +23,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jivesoftware.smackx.delay.packet.DelayInformation; import org.jivesoftware.smackx.delay.packet.DelayInformation;
/** /**
* Stanza(/Packet) extension for >XEP-0297: Stanza Forwarding. * Stanza extension for XEP-0297: Stanza Forwarding.
* *
* @author Georg Lukas * @author Georg Lukas
* @see <a href="http://xmpp.org/extensions/xep-0297.html">XEP-0297: Stanza Forwarding</a> * @see <a href="http://xmpp.org/extensions/xep-0297.html">XEP-0297: Stanza Forwarding</a>

View file

@ -48,7 +48,6 @@ import org.jxmpp.jid.Jid;
* associated with a Jabber ID. A manager handles incoming LastActivity requests * associated with a Jabber ID. A manager handles incoming LastActivity requests
* of existing Connections. It also allows to request last activity information * of existing Connections. It also allows to request last activity information
* of other users. * of other users.
* <p>
* *
* LastActivity (XEP-0012) based on the sending JID's type allows for retrieval * LastActivity (XEP-0012) based on the sending JID's type allows for retrieval
* of: * of:
@ -58,11 +57,9 @@ import org.jxmpp.jid.Jid;
* specified when doing so. * specified when doing so.
* <li>How long a host has been up. * <li>How long a host has been up.
* </ol> * </ol>
* <p/>
* *
* For example to get the idle time of a user logged in a resource, simple send * For example to get the idle time of a user logged in a resource, simple send
* the LastActivity stanza(/packet) to them, as in the following code: * the LastActivity stanza(/packet) to them, as in the following code:
* <p>
* *
* <pre> * <pre>
* XMPPConnection con = new XMPPTCPConnection(&quot;jabber.org&quot;); * XMPPConnection con = new XMPPTCPConnection(&quot;jabber.org&quot;);

View file

@ -105,7 +105,7 @@ public final class Jingle extends IQ {
/** /**
* Returns the session ID related to the session. The session ID is a unique identifier generated by the initiator. * Returns the session ID related to the session. The session ID is a unique identifier generated by the initiator.
* This should match the XML Nmtoken production so that XML character escaping is not needed for characters such as * This should match the XML Nmtoken production so that XML character escaping is not needed for characters such as
* &. * &amp;.
* *
* @return Returns the session ID related to the session. * @return Returns the session ID related to the session.
*/ */

View file

@ -34,9 +34,10 @@ public class JivePropertiesManager {
* you are sure that you understand the potential security implications it can cause. * you are sure that you understand the potential security implications it can cause.
* <p> * <p>
* See also: * See also:
* </p>
* <ul> * <ul>
* <li> <a href="http://stackoverflow.com/questions/19054460/">"What is the security impact of deserializing untrusted data in Java?" on Stackoverflow<a> * <li> <a href="http://stackoverflow.com/questions/19054460/">"What is the security impact of deserializing untrusted data in Java?" on Stackoverflow</a>
* <ul> * </ul>
* @param enabled true to enable Java object deserialization * @param enabled true to enable Java object deserialization
*/ */
public static void setJavaObjectEnabled(boolean enabled) { public static void setJavaObjectEnabled(boolean enabled) {

View file

@ -28,8 +28,8 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
* the XEP for more implementation guidelines. * the XEP for more implementation guidelines.
* *
* @author Fernando Ramirez, f.e.ramirez94@gmail.com * @author Fernando Ramirez, f.e.ramirez94@gmail.com
* @see <a href="http://xmpp.org/extensions/xep-0308.html">XEP-0308:&nbsp;Last& * @see <a href="http://xmpp.org/extensions/xep-0308.html">XEP-0308:&nbsp;Last
* nbsp;Message&nbsp;Correction</a> * &nbsp;Message&nbsp;Correction</a>
*/ */
public class MessageCorrectExtension implements ExtensionElement { public class MessageCorrectExtension implements ExtensionElement {

View file

@ -28,11 +28,11 @@ import org.jivesoftware.smackx.muc.packet.MUCInitialPresence;
* *
* You can use some or all of these variable to control the amount of history to receive: * You can use some or all of these variable to control the amount of history to receive:
* <ul> * <ul>
* <li>maxchars -> total number of characters to receive in the history. * <li>maxchars -&gt; total number of characters to receive in the history.
* <li>maxstanzas -> total number of messages to receive in the history. * <li>maxstanzas -&gt; total number of messages to receive in the history.
* <li>seconds -> only the messages received in the last "X" seconds will be included in the * <li>seconds -&gt; only the messages received in the last "X" seconds will be included in the
* history. * history.
* <li>since -> only the messages received since the datetime specified will be included in * <li>since -&gt; only the messages received since the datetime specified will be included in
* the history. * the history.
* </ul> * </ul>
* *

View file

@ -130,7 +130,7 @@ public class MUCItem implements NamedElement {
} }
/** /**
* Returns the <room@service/nick> by which an occupant is identified within the context of a * Returns the &lt;room@service/nick&gt; by which an occupant is identified within the context of a
* room. If the room is non-anonymous, the JID will be included in the item. * room. If the room is non-anonymous, the JID will be included in the item.
* *
* @return the room JID by which an occupant is identified within the room. * @return the room JID by which an occupant is identified within the room.

View file

@ -29,7 +29,7 @@ import org.jivesoftware.smack.packet.IQ;
* and {@link org.jivesoftware.smackx.privacy.provider.PrivacyProvider} to allow and block * and {@link org.jivesoftware.smackx.privacy.provider.PrivacyProvider} to allow and block
* communications from other users. It contains the appropriate structure to suit * communications from other users. It contains the appropriate structure to suit
* user-defined privacy lists. Different configured Privacy packages are used in the * user-defined privacy lists. Different configured Privacy packages are used in the
* server & manager communication in order to: * server and manager communication in order to:
* <ul> * <ul>
* <li>Retrieving one's privacy lists. * <li>Retrieving one's privacy lists.
* <li>Adding, removing, and editing one's privacy lists. * <li>Adding, removing, and editing one's privacy lists.

View file

@ -37,7 +37,7 @@ import org.xmlpull.v1.XmlPullParser;
* has been used mainly to search for people who have registered with user directories (e.g., the "Jabber User Directory" hosted at users.jabber.org). * has been used mainly to search for people who have registered with user directories (e.g., the "Jabber User Directory" hosted at users.jabber.org).
* However, the jabber:iq:search protocol is not limited to user directories, and could be used to search other Jabber information repositories * However, the jabber:iq:search protocol is not limited to user directories, and could be used to search other Jabber information repositories
* (such as chatroom directories) or even to provide a Jabber interface to conventional search engines. * (such as chatroom directories) or even to provide a Jabber interface to conventional search engines.
* <p/> *
* The basic functionality is to query an information repository regarding the possible search fields, to send a search query, and to receive search results. * The basic functionality is to query an information repository regarding the possible search fields, to send a search query, and to receive search results.
* *
* @author Derek DeMoro * @author Derek DeMoro

View file

@ -51,7 +51,7 @@ public class StreamInitiation extends IQ {
/** /**
* The "id" attribute is an opaque identifier. This attribute MUST be * The "id" attribute is an opaque identifier. This attribute MUST be
* present on type='set', and MUST be a valid string. This SHOULD NOT be * present on type='set', and MUST be a valid string. This SHOULD NOT be
* sent back on type='result', since the <iq/> "id" attribute provides the * sent back on type='result', since the &lt;iq/&gt; "id" attribute provides the
* only context needed. This value is generated by the Sender, and the same * only context needed. This value is generated by the Sender, and the same
* value MUST be used throughout a session when talking to the Receiver. * value MUST be used throughout a session when talking to the Receiver.
* *
@ -75,7 +75,7 @@ public class StreamInitiation extends IQ {
* The "mime-type" attribute identifies the MIME-type for the data across * The "mime-type" attribute identifies the MIME-type for the data across
* the stream. This attribute MUST be a valid MIME-type as registered with * the stream. This attribute MUST be a valid MIME-type as registered with
* the Internet Assigned Numbers Authority (IANA) [3] (specifically, as * the Internet Assigned Numbers Authority (IANA) [3] (specifically, as
* listed at <http://www.iana.org/assignments/media-types>). During * listed at &lt;http://www.iana.org/assignments/media-types&gt;). During
* negotiation, this attribute SHOULD be present, and is otherwise not * negotiation, this attribute SHOULD be present, and is otherwise not
* required. If not included during negotiation, its value is assumed to be * required. If not included during negotiation, its value is assumed to be
* "binary/octet-stream". * "binary/octet-stream".
@ -168,26 +168,23 @@ public class StreamInitiation extends IQ {
* using the DateTime profile as described in Jabber Date and Time Profiles.</li> * using the DateTime profile as described in Jabber Date and Time Profiles.</li>
* <li>hash: The MD5 sum of the file contents.</li> * <li>hash: The MD5 sum of the file contents.</li>
* </ul> * </ul>
* <p/> * <p>
* <p/>
* &lt;desc&gt; is used to provide a sender-generated description of the * &lt;desc&gt; is used to provide a sender-generated description of the
* file so the receiver can better understand what is being sent. It MUST * file so the receiver can better understand what is being sent. It MUST
* NOT be sent in the result. * NOT be sent in the result.
* <p/> * </p>
* <p/> * <p>
* When &lt;range&gt; is sent in the offer, it should have no attributes. * When &lt;range&gt; is sent in the offer, it should have no attributes.
* This signifies that the sender can do ranged transfers. When a Stream * This signifies that the sender can do ranged transfers. When a Stream
* Initiation result is sent with the <range> element, it uses these * Initiation result is sent with the &lt;range&gt; element, it uses these
* attributes: * attributes:
* <p/> * </p>
* <ul> * <ul>
* <li>offset: Specifies the position, in bytes, to start transferring the * <li>offset: Specifies the position, in bytes, to start transferring the
* file data from. This defaults to zero (0) if not specified.</li> * file data from. This defaults to zero (0) if not specified.</li>
* <li>length - Specifies the number of bytes to retrieve starting at * <li>length - Specifies the number of bytes to retrieve starting at
* offset. This defaults to the length of the file from offset to the end.</li> * offset. This defaults to the length of the file from offset to the end.</li>
* </ul> * </ul>
* <p/>
* <p/>
* Both attributes are OPTIONAL on the &lt;range&gt; element. Sending no * Both attributes are OPTIONAL on the &lt;range&gt; element. Sending no
* attributes is synonymous with not sending the &lt;range&gt; element. When * attributes is synonymous with not sending the &lt;range&gt; element. When
* no &lt;range&gt; element is sent in the Stream Initiation result, the * no &lt;range&gt; element is sent in the Stream Initiation result, the

View file

@ -47,19 +47,19 @@ import org.jxmpp.jid.EntityBareJid;
/** /**
* A VCard class for use with the * A VCard class for use with the
* <a href="http://www.jivesoftware.org/smack/" target="_blank">SMACK jabber library</a>.<p> * <a href="http://www.jivesoftware.org/smack/" target="_blank">SMACK jabber library</a>.<p>
* <p/> *
* You should refer to the * You should refer to the
* <a href="http://www.xmpp.org/extensions/jep-0054.html" target="_blank">XEP-54 documentation</a>.<p> * <a href="http://www.xmpp.org/extensions/jep-0054.html" target="_blank">XEP-54 documentation</a>.<p>
* <p/> *
* Please note that this class is incomplete but it does provide the most commonly found * Please note that this class is incomplete but it does provide the most commonly found
* information in vCards. Also remember that VCard transfer is not a standard, and the protocol * information in vCards. Also remember that VCard transfer is not a standard, and the protocol
* may change or be replaced.<p> * may change or be replaced.<p>
* <p/> *
* <b>Usage:</b> * <b>Usage:</b>
* <pre> * <pre>
* <p/> *
* // To save VCard: * // To save VCard:
* <p/> *
* VCard vCard = new VCard(); * VCard vCard = new VCard();
* vCard.setFirstName("kir"); * vCard.setFirstName("kir");
* vCard.setLastName("max"); * vCard.setLastName("max");
@ -67,16 +67,16 @@ import org.jxmpp.jid.EntityBareJid;
* vCard.setJabberId("jabber@id.org"); * vCard.setJabberId("jabber@id.org");
* vCard.setOrganization("Jetbrains, s.r.o"); * vCard.setOrganization("Jetbrains, s.r.o");
* vCard.setNickName("KIR"); * vCard.setNickName("KIR");
* <p/> *
* vCard.setField("TITLE", "Mr"); * vCard.setField("TITLE", "Mr");
* vCard.setAddressFieldHome("STREET", "Some street"); * vCard.setAddressFieldHome("STREET", "Some street");
* vCard.setAddressFieldWork("CTRY", "US"); * vCard.setAddressFieldWork("CTRY", "US");
* vCard.setPhoneWork("FAX", "3443233"); * vCard.setPhoneWork("FAX", "3443233");
* <p/> *
* vCard.save(connection); * vCard.save(connection);
* <p/> *
* // To load VCard: * // To load VCard:
* <p/> *
* VCard vCard = new VCard(); * VCard vCard = new VCard();
* vCard.load(conn); // load own VCard * vCard.load(conn); // load own VCard
* vCard.load(conn, "joe@foo.bar"); // load someone's VCard * vCard.load(conn, "joe@foo.bar"); // load someone's VCard
@ -441,10 +441,10 @@ public class VCard extends IQ {
* <pre> * <pre>
* // Load Avatar from VCard * // Load Avatar from VCard
* byte[] avatarBytes = vCard.getAvatar(); * byte[] avatarBytes = vCard.getAvatar();
* <p/> *
* // To create an ImageIcon for Swing applications * // To create an ImageIcon for Swing applications
* ImageIcon icon = new ImageIcon(avatar); * ImageIcon icon = new ImageIcon(avatar);
* <p/> *
* // To create just an image object from the bytes * // To create just an image object from the bytes
* ByteArrayInputStream bais = new ByteArrayInputStream(avatar); * ByteArrayInputStream bais = new ByteArrayInputStream(avatar);
* try { * try {

View file

@ -93,7 +93,7 @@ public class DataForm implements ExtensionElement {
/** /**
* Returns the description of the data. It is similar to the title on a web page or an X * Returns the description of the data. It is similar to the title on a web page or an X
* window. You can put a <title/> on either a form to fill out, or a set of data results. * window. You can put a &lt;title/&gt; on either a form to fill out, or a set of data results.
* *
* @return description of the data. * @return description of the data.
*/ */
@ -184,7 +184,7 @@ public class DataForm implements ExtensionElement {
/** /**
* Sets the description of the data. It is similar to the title on a web page or an X window. * Sets the description of the data. It is similar to the title on a web page or an X window.
* You can put a <title/> on either a form to fill out, or a set of data results. * You can put a &lt;title/&gt; on either a form to fill out, or a set of data results.
* *
* @param title description of the data. * @param title description of the data.
*/ */

View file

@ -380,7 +380,7 @@ public abstract class ValidateElement implements ExtensionElement {
} }
/** /**
* The <list-range/> element SHOULD be included only when the <field/> is of type "list-multi" and SHOULD be ignored * The &gt;list-range/&lt; element SHOULD be included only when the &lt;field/&gt; is of type "list-multi" and SHOULD be ignored
* otherwise. * otherwise.
* *
* @param formField * @param formField

View file

@ -79,14 +79,13 @@ import org.jxmpp.util.cache.LruCache;
/** /**
* Represents a user's roster, which is the collection of users a person receives * Represents a user's roster, which is the collection of users a person receives
* presence updates for. Roster items are categorized into groups for easier management. * presence updates for. Roster items are categorized into groups for easier management.
* <p> *
* Others users may attempt to subscribe to this user using a subscription request. Three * Others users may attempt to subscribe to this user using a subscription request. Three
* modes are supported for handling these requests: <ul> * modes are supported for handling these requests: <ul>
* <li>{@link SubscriptionMode#accept_all accept_all} -- accept all subscription requests.</li> * <li>{@link SubscriptionMode#accept_all accept_all} -- accept all subscription requests.</li>
* <li>{@link SubscriptionMode#reject_all reject_all} -- reject all subscription requests.</li> * <li>{@link SubscriptionMode#reject_all reject_all} -- reject all subscription requests.</li>
* <li>{@link SubscriptionMode#manual manual} -- manually process all subscription requests.</li> * <li>{@link SubscriptionMode#manual manual} -- manually process all subscription requests.</li>
* </ul> * </ul>
* </p>
* *
* @author Matt Tucker * @author Matt Tucker
* @see #getInstanceFor(XMPPConnection) * @see #getInstanceFor(XMPPConnection)

View file

@ -23,7 +23,7 @@ import org.jivesoftware.smackx.jingleold.packet.JingleError;
/** /**
* A Jingle exception. * A Jingle exception.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public class JingleException extends XMPPException { public class JingleException extends XMPPException {
private static final long serialVersionUID = -1521230401958103382L; private static final long serialVersionUID = -1521230401958103382L;

View file

@ -56,34 +56,41 @@ import org.jxmpp.jid.Jid;
* Jingle is a session establishment protocol defined in (XEP-0166). * Jingle is a session establishment protocol defined in (XEP-0166).
* It defines a framework for negotiating and managing out-of-band ( data that is send and receive through other connection than XMPP connection) data sessions over XMPP. * It defines a framework for negotiating and managing out-of-band ( data that is send and receive through other connection than XMPP connection) data sessions over XMPP.
* With this protocol you can setup VOIP Calls, Video Streaming, File transfers and whatever out-of-band session based transmission. * With this protocol you can setup VOIP Calls, Video Streaming, File transfers and whatever out-of-band session based transmission.
* <p/> * <p>
* To create a Jingle Session you need a Transport method and a Payload type. * To create a Jingle Session you need a Transport method and a Payload type.
* <p/> * </p>
* <p>
* A transport method is how it will transmit and receive network packets. Transport MUST have one or more candidates. * A transport method is how it will transmit and receive network packets. Transport MUST have one or more candidates.
* A transport candidate is an IP Address with a defined port, that other party must send data to. * A transport candidate is an IP Address with a defined port, that other party must send data to.
* <p/> * </p>
* <p>
* A supported payload type, is the data encoding format that the jmf will be transmitted. * A supported payload type, is the data encoding format that the jmf will be transmitted.
* For instance an Audio Payload "GSM". * For instance an Audio Payload "GSM".
* <p/> * </p>
* <p>
* A Jingle session negotiates a payload type and a pair of transport candidates. * A Jingle session negotiates a payload type and a pair of transport candidates.
* Which means that when a Jingle Session is established you will have two defined transport candidates with addresses * Which means that when a Jingle Session is established you will have two defined transport candidates with addresses
* and a defined Payload type. * and a defined Payload type.
* In other words, you will have two IP address with their respective ports, and a Codec type defined. * In other words, you will have two IP address with their respective ports, and a Codec type defined.
* <p/> * </p>
* <p>
* The JingleManager is a facade built upon Jabber Jingle (XEP-166) to allow the * The JingleManager is a facade built upon Jabber Jingle (XEP-166) to allow the
* use of Jingle. This implementation allows the user to simply * use of Jingle. This implementation allows the user to simply
* use this class for setting the Jingle parameters, create and receive Jingle Sessions. * use this class for setting the Jingle parameters, create and receive Jingle Sessions.
* <p/> * </p>
* <p>
* In order to use the Jingle, the user must provide a * In order to use the Jingle, the user must provide a
* TransportManager that will handle the resolution of potential IP addresses that can be used to transport the streaming (jmf). * TransportManager that will handle the resolution of potential IP addresses that can be used to transport the streaming (jmf).
* This TransportManager can be initialized with several default resolvers, * This TransportManager can be initialized with several default resolvers,
* including a fixed solver that can be used when the address and port are know * including a fixed solver that can be used when the address and port are know
* in advance. * in advance.
* This API have ready to use Transport Managers, for instance: BasicTransportManager, STUNTransportManager, BridgedTransportManager. * This API have ready to use Transport Managers, for instance: BasicTransportManager, STUNTransportManager, BridgedTransportManager.
* <p/> * </p>
* <p>
* You should also specify a JingleMediaManager if you want that JingleManager assume Media control * You should also specify a JingleMediaManager if you want that JingleManager assume Media control
* Using a JingleMediaManager implementation is the easier way to implement a Jingle Application. * Using a JingleMediaManager implementation is the easier way to implement a Jingle Application.
* <p/> * </p>
* <p>
* Otherwise before creating an outgoing connection, the user must create jingle session * Otherwise before creating an outgoing connection, the user must create jingle session
* listeners that will be called when different events happen. The most * listeners that will be called when different events happen. The most
* important event is <i>sessionEstablished()</i>, that will be called when all * important event is <i>sessionEstablished()</i>, that will be called when all
@ -91,85 +98,60 @@ import org.jxmpp.jid.Jid;
* transmission as well as the remote and local addresses and ports for the * transmission as well as the remote and local addresses and ports for the
* communication. See JingleSessionListener for a complete list of events that can be * communication. See JingleSessionListener for a complete list of events that can be
* observed. * observed.
* <p/> * </p>
* This is an example of how to use the JingleManager: * This is an example of how to use the JingleManager:
* <i>This example implements a Jingle VOIP Call between two users.</i> * <i>This example implements a Jingle VOIP Call between two users.</i>
* <p/>
* <pre> * <pre>
* <p/>
* To wait for an Incoming Jingle Session: * To wait for an Incoming Jingle Session:
* <p/>
* try { * try {
* <p/>
* // Connect to an XMPP Server * // Connect to an XMPP Server
* XMPPConnection x1 = new XMPPTCPConnection("xmpp.com"); * XMPPConnection x1 = new XMPPTCPConnection("xmpp.com");
* x1.connect(); * x1.connect();
* x1.login("juliet", "juliet"); * x1.login("juliet", "juliet");
* <p/>
* // Create a JingleManager using a BasicResolver * // Create a JingleManager using a BasicResolver
* final JingleManager jm1 = new JingleManager( * final JingleManager jm1 = new JingleManager(
* x1, new BasicTransportManager()); * x1, new BasicTransportManager());
* <p/>
* // Create a JingleMediaManager. In this case using Jingle Audio Media API * // Create a JingleMediaManager. In this case using Jingle Audio Media API
* JingleMediaManager jingleMediaManager = new AudioMediaManager(); * JingleMediaManager jingleMediaManager = new AudioMediaManager();
* <p/>
* // Set the JingleMediaManager * // Set the JingleMediaManager
* jm1.setMediaManager(jingleMediaManager); * jm1.setMediaManager(jingleMediaManager);
* <p/>
* // Listen for incoming calls * // Listen for incoming calls
* jm1.addJingleSessionRequestListener(new JingleSessionRequestListener() { * jm1.addJingleSessionRequestListener(new JingleSessionRequestListener() {
* public void sessionRequested(JingleSessionRequest request) { * public void sessionRequested(JingleSessionRequest request) {
* <p/>
* try { * try {
* // Accept the call * // Accept the call
* IncomingJingleSession session = request.accept(); * IncomingJingleSession session = request.accept();
* <p/>
* <p/>
* // Start the call * // Start the call
* session.start(); * session.start();
* } catch (XMPPException e) { * } catch (XMPPException e) {
* LOGGER.log(Level.WARNING, "exception", e); * LOGGER.log(Level.WARNING, "exception", e);
* } * }
* <p/>
* } * }
* }); * });
* <p/>
* Thread.sleep(15000); * Thread.sleep(15000);
* <p/>
* } catch (Exception e) { * } catch (Exception e) {
* LOGGER.log(Level.WARNING, "exception", e); * LOGGER.log(Level.WARNING, "exception", e);
* } * }
* <p/>
* To create an Outgoing Jingle Session: * To create an Outgoing Jingle Session:
* <p/>
* try { * try {
* <p/>
* // Connect to an XMPP Server * // Connect to an XMPP Server
* XMPPConnection x0 = new XMPPTCPConnection("xmpp.com"); * XMPPConnection x0 = new XMPPTCPConnection("xmpp.com");
* x0.connect(); * x0.connect();
* x0.login("romeo", "romeo"); * x0.login("romeo", "romeo");
* <p/>
* // Create a JingleManager using a BasicResolver * // Create a JingleManager using a BasicResolver
* final JingleManager jm0 = new JingleManager( * final JingleManager jm0 = new JingleManager(
* x0, new BasicTransportManager()); * x0, new BasicTransportManager());
* <p/>
* // Create a JingleMediaManager. In this case using Jingle Audio Media API * // Create a JingleMediaManager. In this case using Jingle Audio Media API
* JingleMediaManager jingleMediaManager = new AudioMediaManager(); // Using Jingle Media API * JingleMediaManager jingleMediaManager = new AudioMediaManager(); // Using Jingle Media API
* <p/>
* // Set the JingleMediaManager * // Set the JingleMediaManager
* jm0.setMediaManager(jingleMediaManager); * jm0.setMediaManager(jingleMediaManager);
* <p/>
* // Create a new Jingle Call with a full JID * // Create a new Jingle Call with a full JID
* OutgoingJingleSession js0 = jm0.createOutgoingJingleSession("juliet@xmpp.com/Smack"); * OutgoingJingleSession js0 = jm0.createOutgoingJingleSession("juliet@xmpp.com/Smack");
* <p/>
* // Start the call * // Start the call
* js0.start(); * js0.start();
* <p/>
* Thread.sleep(10000); * Thread.sleep(10000);
* js0.terminate(); * js0.terminate();
* <p/>
* Thread.sleep(3000); * Thread.sleep(3000);
* <p/>
* } catch (Exception e) { * } catch (Exception e) {
* LOGGER.log(Level.WARNING, "exception", e); * LOGGER.log(Level.WARNING, "exception", e);
* } * }
@ -279,11 +261,11 @@ public class JingleManager implements JingleSessionListener {
/** /**
* Enables or disables the Jingle support on a given connection. * Enables or disables the Jingle support on a given connection.
* <p/> * <p>
* <p/>
* Before starting any Jingle jmf session, check that the user can handle * Before starting any Jingle jmf session, check that the user can handle
* it. Enable the Jingle support to indicate that this client handles Jingle * it. Enable the Jingle support to indicate that this client handles Jingle
* messages. * messages.
* </p>
* *
* @param connection the connection where the service will be enabled or * @param connection the connection where the service will be enabled or
* disabled * disabled

View file

@ -29,13 +29,10 @@ import org.jivesoftware.smackx.jingleold.listeners.JingleListener;
/** /**
* Basic Jingle negotiator. * Basic Jingle negotiator.
* <p/> * <p>
* </p>
* <p/>
* JingleNegotiator implements some basic behavior for every Jingle negotiation. * JingleNegotiator implements some basic behavior for every Jingle negotiation.
* It implements a "state" pattern: each stage should process Jingle packets and * It implements a "state" pattern: each stage should process Jingle packets and
* act depending on the current state in the negotiation... * act depending on the current state in the negotiation...
* <p/>
* </p> * </p>
* *
* @author Alvaro Saurin * @author Alvaro Saurin
@ -215,18 +212,18 @@ public abstract class JingleNegotiator {
* Media Negotiator * Media Negotiator
* Transport Negotiator * Transport Negotiator
* *
* <jingle> * &lt;jingle&gt;
* <content> * &lt;content&gt;
* <description> * &lt;description&gt;
* <transport> * &lt;transport&gt;
* <content> * &lt;content&gt;
* <description> * &lt;description&gt;
* <transport> * &lt;transport&gt;
* *
* This way, each segment of a Jingle stanza(/packet) has a corresponding negotiator that know how to deal with that * This way, each segment of a Jingle stanza(/packet) has a corresponding negotiator that know how to deal with that
* part of the Jingle packet. It also allows us to support Jingle packets of arbitraty complexity. * part of the Jingle packet. It also allows us to support Jingle packets of arbitraty complexity.
* *
* Each parent calls dispatchIncomingPacket for each of its children. The children then pass back a List<> of * Each parent calls dispatchIncomingPacket for each of its children. The children then pass back a List of
* results that will get sent when we reach the top level negotiator (JingleSession). * results that will get sent when we reach the top level negotiator (JingleSession).
* *
* @param iq the stanza(/packet) received * @param iq the stanza(/packet) received

View file

@ -55,7 +55,7 @@ import org.jivesoftware.smackx.jingleold.packet.JingleError;
import org.jxmpp.jid.Jid; import org.jxmpp.jid.Jid;
/** /**
* An abstract Jingle session. <p/> This class contains some basic properties of * An abstract Jingle session. This class contains some basic properties of
* every Jingle session. However, the concrete implementation can be found in * every Jingle session. However, the concrete implementation can be found in
* subclasses. * subclasses.
* *
@ -270,7 +270,7 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
/** /**
* Process and respond to an incoming packet. <p/> This method is called * Process and respond to an incoming packet. This method is called
* from the stanza(/packet) listener dispatcher when a new stanza(/packet) has arrived. The * from the stanza(/packet) listener dispatcher when a new stanza(/packet) has arrived. The
* method is responsible for recognizing the stanza(/packet) type and, depending on * method is responsible for recognizing the stanza(/packet) type and, depending on
* the current state, delivering it to the right event handler and wait for * the current state, delivering it to the right event handler and wait for
@ -394,7 +394,7 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList
} }
/** /**
* Add a new content negotiator on behalf of a <content> section received. * Add a new content negotiator on behalf of a &lt;content/&gt; section received.
*/ */
public void addContentNegotiator(ContentNegotiator inContentNegotiator) { public void addContentNegotiator(ContentNegotiator inContentNegotiator) {
contentNegotiators.add(inContentNegotiator); contentNegotiators.add(inContentNegotiator);

View file

@ -28,7 +28,7 @@ import org.jxmpp.jid.Jid;
/** /**
* A Jingle session request. * A Jingle session request.
* <p/> *
* This class is a facade of a received Jingle request. The user can have direct * This class is a facade of a received Jingle request. The user can have direct
* access to the Jingle stanza(/packet) (<i>JingleSessionRequest.getJingle() </i>) of * access to the Jingle stanza(/packet) (<i>JingleSessionRequest.getJingle() </i>) of
* the request or can use the convenience methods provided by this class. * the request or can use the convenience methods provided by this class.
@ -107,7 +107,7 @@ public class JingleSessionRequest {
/** /**
* Accepts this request and creates the incoming Jingle session. * Accepts this request and creates the incoming Jingle session.
* *
* @return Returns the <b><i>IncomingJingleSession</b></i> on which the * @return Returns the IncomingJingleSession on which the
* negotiation can be carried out. * negotiation can be carried out.
* @throws SmackException * @throws SmackException
* @throws InterruptedException * @throws InterruptedException

View file

@ -22,14 +22,14 @@ import java.util.Locale;
* Content info. Content info messages are complementary messages that can be * Content info. Content info messages are complementary messages that can be
* transmitted for informing of events like "busy", "ringtone", etc. * transmitted for informing of events like "busy", "ringtone", etc.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public abstract class ContentInfo { public abstract class ContentInfo {
/** /**
* Audio content info messages. * Audio content info messages.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public static class Audio extends ContentInfo { public static class Audio extends ContentInfo {

View file

@ -25,10 +25,11 @@ import org.jivesoftware.smackx.jingleold.nat.TransportCandidate;
/** /**
* This class provides necessary Jingle Session jmf methods and behavior. * This class provides necessary Jingle Session jmf methods and behavior.
* <p/> * <p>
* The goal of this class is to provide a flexible way to make JingleManager control jmf streaming APIs without implement them. * The goal of this class is to provide a flexible way to make JingleManager control jmf streaming APIs without implement them.
* For instance you can implement a file transfer using java sockets or a VOIP Media Manager using JMF. * For instance you can implement a file transfer using java sockets or a VOIP Media Manager using JMF.
* You can implement many JingleMediaManager according to you necessity. * You can implement many JingleMediaManager according to you necessity.
* </p>
* *
* @author Thiago Camargo * @author Thiago Camargo
*/ */

View file

@ -24,11 +24,11 @@ import org.jivesoftware.smackx.jingleold.nat.TransportCandidate;
/** /**
* Public Abstract Class provides a clear interface between Media Session and Jingle API. * Public Abstract Class provides a clear interface between Media Session and Jingle API.
* <p/> * <p>
* When a Jingle Session is fully stablished, we will have a Payload Type and two transport candidates defined for it. * When a Jingle Session is fully stablished, we will have a Payload Type and two transport candidates defined for it.
* Smack Jingle API don't implement Media Transmit and Receive methods. * Smack Jingle API don't implement Media Transmit and Receive methods.
* But provides an interface to let the user implements it using another API. For instance: JMF. * But provides an interface to let the user implements it using another API. For instance: JMF.
* <p/> * </p>
* <i>The Class that implements this one, must have the support to transmit and receive the jmf.</i> * <i>The Class that implements this one, must have the support to transmit and receive the jmf.</i>
* <i>This interface let the user choose his own jmf API.</i> * <i>This interface let the user choose his own jmf API.</i>
* *

View file

@ -38,7 +38,7 @@ import org.jivesoftware.smackx.jingleold.packet.JingleDescription;
import org.jivesoftware.smackx.jingleold.packet.JingleError; import org.jivesoftware.smackx.jingleold.packet.JingleError;
/** /**
* Manager for jmf descriptor negotiation. <p/> <p/> This class is responsible * Manager for jmf descriptor negotiation. This class is responsible
* for managing the descriptor negotiation process, handling all the xmpp * for managing the descriptor negotiation process, handling all the xmpp
* packets interchange and the stage control. handling all the xmpp packets * packets interchange and the stage control. handling all the xmpp packets
* interchange and the stage control. * interchange and the stage control.

View file

@ -54,15 +54,17 @@ import org.jivesoftware.smackx.jingleold.media.JingleMediaSession;
* It sends and receives jmf for and from desired IPs and ports. * It sends and receives jmf for and from desired IPs and ports.
* Also has a rport Symetric behavior for better NAT Traversal. * Also has a rport Symetric behavior for better NAT Traversal.
* It send data from a defined port and receive data in the same port, making NAT binds easier. * It send data from a defined port and receive data in the same port, making NAT binds easier.
* <p/> * <p>
* Send from portA to portB and receive from portB in portA. * Send from portA to portB and receive from portB in portA.
* <p/> * </p>
* <p>
* Sending * Sending
* portA ---> portB * portA ---&gt; portB
* <p/> * </p>
* <p>
* Receiving * Receiving
* portB ---> portA * portB ---&gt; portA
* <p/> * </p>
* <i>Transmit and Receive are interdependence. To receive you MUST transmit. </i> * <i>Transmit and Receive are interdependence. To receive you MUST transmit. </i>
* *
* @author Thiago Camargo * @author Thiago Camargo

View file

@ -45,7 +45,7 @@ public class BasicResolver extends TransportResolver {
/** /**
* Resolve the IP address. * Resolve the IP address.
* <p/> *
* The BasicResolver takes the IP addresses of the interfaces and uses the * The BasicResolver takes the IP addresses of the interfaces and uses the
* first non-loopback, non-linklocal and non-sitelocal address. * first non-loopback, non-linklocal and non-sitelocal address.
* @throws NotConnectedException * @throws NotConnectedException

View file

@ -36,7 +36,7 @@ import org.jivesoftware.smackx.jingleold.JingleSession;
/** /**
* Bridged Resolver use a RTPBridge Service to add a relayed candidate. * Bridged Resolver use a RTPBridge Service to add a relayed candidate.
* A very reliable solution for NAT Traversal. * A very reliable solution for NAT Traversal.
* <p/> *
* The resolver verify is the XMPP Server that the client is connected offer this service. * The resolver verify is the XMPP Server that the client is connected offer this service.
* If the server supports, a candidate is requested from the service. * If the server supports, a candidate is requested from the service.
* The resolver adds this candidate * The resolver adds this candidate
@ -61,7 +61,7 @@ public class BridgedResolver extends TransportResolver {
/**1 /**1
* Resolve Bridged Candidate. * Resolve Bridged Candidate.
* <p/> *
* The BridgedResolver takes the IP address and ports of a jmf proxy service. * The BridgedResolver takes the IP address and ports of a jmf proxy service.
* @throws NotConnectedException * @throws NotConnectedException
* @throws InterruptedException * @throws InterruptedException

View file

@ -26,7 +26,7 @@ import org.jivesoftware.smackx.jingleold.JingleSession;
* the external address and port are previously known when the object is * the external address and port are previously known when the object is
* initialized. * initialized.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public class FixedResolver extends TransportResolver { public class FixedResolver extends TransportResolver {

View file

@ -24,7 +24,7 @@ import java.util.logging.Logger;
/** /**
* ICE Transport candidate. * ICE Transport candidate.
* <p/> *
* A candidate represents the possible transport for data interchange between * A candidate represents the possible transport for data interchange between
* the two endpoints. * the two endpoints.
* *
@ -216,7 +216,7 @@ public class ICECandidate extends TransportCandidate implements Comparable<ICECa
* Check if a transport candidate is usable. The transport resolver should * Check if a transport candidate is usable. The transport resolver should
* check if the transport candidate the other endpoint has provided is * check if the transport candidate the other endpoint has provided is
* usable. * usable.
* <p/> *
* ICE Candidate can check connectivity using UDP echo Test. * ICE Candidate can check connectivity using UDP echo Test.
*/ */
@Override @Override

View file

@ -45,9 +45,9 @@ import org.xmlpull.v1.XmlPullParserException;
* RTPBridge IQ Stanza(/Packet) used to request and retrieve a RTPBridge Candidates that can be used for a Jingle Media Transmission between two parties that are behind NAT. * RTPBridge IQ Stanza(/Packet) used to request and retrieve a RTPBridge Candidates that can be used for a Jingle Media Transmission between two parties that are behind NAT.
* This Jingle Bridge has all the needed information to establish a full UDP Channel (Send and Receive) between two parties. * This Jingle Bridge has all the needed information to establish a full UDP Channel (Send and Receive) between two parties.
* <i>This transport method should be used only if other transport methods are not allowed. Or if you want a more reliable transport.</i> * <i>This transport method should be used only if other transport methods are not allowed. Or if you want a more reliable transport.</i>
* <p/> *
* High Level Usage Example: * High Level Usage Example:
* <p/> *
* RTPBridge rtpBridge = RTPBridge.getRTPBridge(connection, sessionID); * RTPBridge rtpBridge = RTPBridge.getRTPBridge(connection, sessionID);
* *
* @author Thiago Camargo * @author Thiago Camargo

View file

@ -39,9 +39,9 @@ import org.xmlpull.v1.XmlPullParserException;
/** /**
* STUN IQ Stanza(/Packet) used to request and retrieve a STUN server and port to make p2p connections easier. STUN is usually used by Jingle Media Transmission between two parties that are behind NAT. * STUN IQ Stanza(/Packet) used to request and retrieve a STUN server and port to make p2p connections easier. STUN is usually used by Jingle Media Transmission between two parties that are behind NAT.
* <p/> *
* High Level Usage Example: * High Level Usage Example:
* <p/> *
* STUN stun = STUN.getSTUNServer(connection); * STUN stun = STUN.getSTUNServer(connection);
* *
* @author Thiago Camargo * @author Thiago Camargo

View file

@ -199,7 +199,7 @@ public class STUNResolver extends TransportResolver {
/** /**
* Load a list of services: STUN servers and ports. Some public STUN servers * Load a list of services: STUN servers and ports. Some public STUN servers
* are: * are:
* <p/> *
* <pre> * <pre>
* iphone-stun.freenet.de:3478 * iphone-stun.freenet.de:3478
* larry.gloo.net:3478 * larry.gloo.net:3478
@ -212,7 +212,7 @@ public class STUNResolver extends TransportResolver {
* stun.voxgratia.org (no DNS SRV record) * stun.voxgratia.org (no DNS SRV record)
* stun.noc.ams-ix.net * stun.noc.ams-ix.net
* </pre> * </pre>
* <p/> *
* This list should be contained in a file in the "META-INF" directory * This list should be contained in a file in the "META-INF" directory
* *
* @return a list of services * @return a list of services
@ -494,7 +494,7 @@ public class STUNResolver extends TransportResolver {
/** /**
* Check a binding with the STUN currentServer. * Check a binding with the STUN currentServer.
* <p/> *
* Note: this function blocks for some time, waiting for a response. * Note: this function blocks for some time, waiting for a response.
* *
* @return true if the currentServer is usable. * @return true if the currentServer is usable.

View file

@ -37,7 +37,7 @@ import org.jxmpp.jid.Jid;
/** /**
* Transport candidate. * Transport candidate.
* <p/> *
* A candidate represents the possible transport for data interchange between * A candidate represents the possible transport for data interchange between
* the two endpoints. * the two endpoints.
* *
@ -346,7 +346,7 @@ public abstract class TransportCandidate {
* Check if a transport candidate is usable. The transport resolver should * Check if a transport candidate is usable. The transport resolver should
* check if the transport candidate the other endpoint has provided is * check if the transport candidate the other endpoint has provided is
* usable. * usable.
* <p/> *
* Subclasses should provide better methods if they can... * Subclasses should provide better methods if they can...
*/ */
public void check(final List<TransportCandidate> localCandidates) { public void check(final List<TransportCandidate> localCandidates) {

View file

@ -45,12 +45,11 @@ import org.jivesoftware.smackx.jingleold.packet.JingleTransport.JingleTransportC
/** /**
* Transport negotiator. * Transport negotiator.
* <p/> *
* <p/>
* This class is responsible for managing the transport negotiation process, * This class is responsible for managing the transport negotiation process,
* handling all the stanza(/packet) interchange and the stage control. * handling all the stanza(/packet) interchange and the stage control.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public abstract class TransportNegotiator extends JingleNegotiator { public abstract class TransportNegotiator extends JingleNegotiator {
@ -829,7 +828,7 @@ public abstract class TransportNegotiator extends JingleNegotiator {
/** /**
* Raw-UDP transport negotiator. * Raw-UDP transport negotiator.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public static final class RawUdp extends TransportNegotiator { public static final class RawUdp extends TransportNegotiator {
@ -884,7 +883,7 @@ public abstract class TransportNegotiator extends JingleNegotiator {
/** /**
* Ice transport negotiator. * Ice transport negotiator.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public static final class Ice extends TransportNegotiator { public static final class Ice extends TransportNegotiator {

View file

@ -37,7 +37,7 @@ import org.jivesoftware.smackx.jingleold.JingleSession;
* It is called candidate, because it can be elected or not. * It is called candidate, because it can be elected or not.
* *
* @author Thiago Camargo * @author Thiago Camargo
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public abstract class TransportResolver { public abstract class TransportResolver {

View file

@ -30,11 +30,11 @@ import org.jxmpp.jid.Jid;
/** /**
* An Jingle sub-packet, which is used by XMPP clients to exchange info like * An Jingle sub-packet, which is used by XMPP clients to exchange info like
* descriptions and transports. <p/> The following link summarizes the * descriptions and transports. The following link summarizes the
* requirements of Jingle IM: <a * requirements of Jingle IM: <a
* href="http://www.xmpp.org/extensions/jep-0166.html">Valid tags</a>. * href="http://www.xmpp.org/extensions/jep-0166.html">Valid tags</a>.
* <p/> *
* <p/> Warning: this is an non-standard protocol documented by <a * Warning: this is an non-standard protocol documented by <a
* href="http://www.xmpp.org/extensions/jep-0166.html">XEP-166</a>. Because this is * href="http://www.xmpp.org/extensions/jep-0166.html">XEP-166</a>. Because this is
* a non-standard protocol, it is subject to change. * a non-standard protocol, it is subject to change.
* *
@ -156,7 +156,7 @@ public class Jingle extends IQ {
* Set the session ID related to this session. The session ID is a unique * Set the session ID related to this session. The session ID is a unique
* identifier generated by the initiator. This should match the XML Nmtoken * identifier generated by the initiator. This should match the XML Nmtoken
* production so that XML character escaping is not needed for characters * production so that XML character escaping is not needed for characters
* such as &. * such as &amp;.
* *
* @param sid the session ID * @param sid the session ID
*/ */
@ -168,7 +168,7 @@ public class Jingle extends IQ {
* Returns the session ID related to the session. The session ID is a unique * Returns the session ID related to the session. The session ID is a unique
* identifier generated by the initiator. This should match the XML Nmtoken * identifier generated by the initiator. This should match the XML Nmtoken
* production so that XML character escaping is not needed for characters * production so that XML character escaping is not needed for characters
* such as &. * such as &amp;.
* *
* @return Returns the session ID related to the session. * @return Returns the session ID related to the session.
* @see #setSid(String) * @see #setSid(String)

View file

@ -28,7 +28,7 @@ import org.jivesoftware.smackx.jingleold.media.PayloadType;
/** /**
* Jingle content description. * Jingle content description.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public abstract class JingleContentDescription implements ExtensionElement { public abstract class JingleContentDescription implements ExtensionElement {

View file

@ -23,7 +23,7 @@ import org.jivesoftware.smackx.jingleold.media.ContentInfo;
/** /**
* Jingle content info. * Jingle content info.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public class JingleContentInfo implements ExtensionElement { public class JingleContentInfo implements ExtensionElement {

View file

@ -29,7 +29,7 @@ import org.jivesoftware.smackx.jingleold.media.PayloadType;
/** /**
* Jingle content description. * Jingle content description.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public abstract class JingleDescription implements ExtensionElement { public abstract class JingleDescription implements ExtensionElement {

View file

@ -29,7 +29,7 @@ import org.jivesoftware.smackx.jingleold.nat.TransportCandidate;
/** /**
* A jingle transport extension. * A jingle transport extension.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public class JingleTransport implements ExtensionElement { public class JingleTransport implements ExtensionElement {

View file

@ -31,7 +31,7 @@ import org.xmlpull.v1.XmlPullParserException;
/** /**
* Parser for a Jingle description. * Parser for a Jingle description.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public abstract class JingleContentDescriptionProvider extends ExtensionElementProvider<JingleContentDescription> { public abstract class JingleContentDescriptionProvider extends ExtensionElementProvider<JingleContentDescription> {

View file

@ -23,7 +23,7 @@ import org.jivesoftware.smackx.jingleold.packet.JingleContent;
import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParser;
/** /**
* Jingle <content> provider. * Jingle &lt;content&gt; provider.
* *
* @author Jeff Williams * @author Jeff Williams
*/ */

View file

@ -30,7 +30,7 @@ import org.xmlpull.v1.XmlPullParserException;
/** /**
* Parser for a Jingle description. * Parser for a Jingle description.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public abstract class JingleDescriptionProvider extends ExtensionElementProvider<JingleDescription> { public abstract class JingleDescriptionProvider extends ExtensionElementProvider<JingleDescription> {

View file

@ -32,7 +32,7 @@ import org.xmlpull.v1.XmlPullParserException;
/** /**
* Provider for a Jingle transport element. * Provider for a Jingle transport element.
* *
* @author Alvaro Saurin <alvaro.saurin@gmail.com> * @author Alvaro Saurin
*/ */
public abstract class JingleTransportProvider extends ExtensionElementProvider<JingleTransport> { public abstract class JingleTransportProvider extends ExtensionElementProvider<JingleTransport> {

View file

@ -363,14 +363,14 @@ public class AgentSession {
* Sets the agent's current status with the workgroup. The presence mode affects * Sets the agent's current status with the workgroup. The presence mode affects
* how offers are routed to the agent. The possible presence modes with their * how offers are routed to the agent. The possible presence modes with their
* meanings are as follows:<ul> * meanings are as follows:<ul>
* <p/> *
* <li>Presence.Mode.AVAILABLE -- (Default) the agent is available for more chats * <li>Presence.Mode.AVAILABLE -- (Default) the agent is available for more chats
* (equivalent to Presence.Mode.CHAT). * (equivalent to Presence.Mode.CHAT).
* <li>Presence.Mode.DO_NOT_DISTURB -- the agent is busy and should not be disturbed. * <li>Presence.Mode.DO_NOT_DISTURB -- the agent is busy and should not be disturbed.
* However, special case, or extreme urgency chats may still be offered to the agent. * However, special case, or extreme urgency chats may still be offered to the agent.
* <li>Presence.Mode.AWAY -- the agent is not available and should not * <li>Presence.Mode.AWAY -- the agent is not available and should not
* have a chat routed to them (equivalent to Presence.Mode.EXTENDED_AWAY).</ul> * have a chat routed to them (equivalent to Presence.Mode.EXTENDED_AWAY).</ul>
* <p/> *
* The max chats value is the maximum number of chats the agent is willing to have * The max chats value is the maximum number of chats the agent is willing to have
* routed to them at once. Some servers may be configured to only accept max chat * routed to them at once. Some servers may be configured to only accept max chat
* values in a certain range; for example, between two and five. In that case, the * values in a certain range; for example, between two and five. In that case, the
@ -391,14 +391,14 @@ public class AgentSession {
/** /**
* Sets the agent's current status with the workgroup. The presence mode affects how offers * Sets the agent's current status with the workgroup. The presence mode affects how offers
* are routed to the agent. The possible presence modes with their meanings are as follows:<ul> * are routed to the agent. The possible presence modes with their meanings are as follows:<ul>
* <p/> *
* <li>Presence.Mode.AVAILABLE -- (Default) the agent is available for more chats * <li>Presence.Mode.AVAILABLE -- (Default) the agent is available for more chats
* (equivalent to Presence.Mode.CHAT). * (equivalent to Presence.Mode.CHAT).
* <li>Presence.Mode.DO_NOT_DISTURB -- the agent is busy and should not be disturbed. * <li>Presence.Mode.DO_NOT_DISTURB -- the agent is busy and should not be disturbed.
* However, special case, or extreme urgency chats may still be offered to the agent. * However, special case, or extreme urgency chats may still be offered to the agent.
* <li>Presence.Mode.AWAY -- the agent is not available and should not * <li>Presence.Mode.AWAY -- the agent is not available and should not
* have a chat routed to them (equivalent to Presence.Mode.EXTENDED_AWAY).</ul> * have a chat routed to them (equivalent to Presence.Mode.EXTENDED_AWAY).</ul>
* <p/> *
* The max chats value is the maximum number of chats the agent is willing to have routed to * The max chats value is the maximum number of chats the agent is willing to have routed to
* them at once. Some servers may be configured to only accept max chat values in a certain * them at once. Some servers may be configured to only accept max chat values in a certain
* range; for example, between two and five. In that case, the maxChats value the agent sends * range; for example, between two and five. In that case, the maxChats value the agent sends
@ -450,7 +450,7 @@ public class AgentSession {
/** /**
* Sets the agent's current status with the workgroup. The presence mode affects how offers * Sets the agent's current status with the workgroup. The presence mode affects how offers
* are routed to the agent. The possible presence modes with their meanings are as follows:<ul> * are routed to the agent. The possible presence modes with their meanings are as follows:<ul>
* <p/> *
* <li>Presence.Mode.AVAILABLE -- (Default) the agent is available for more chats * <li>Presence.Mode.AVAILABLE -- (Default) the agent is available for more chats
* (equivalent to Presence.Mode.CHAT). * (equivalent to Presence.Mode.CHAT).
* <li>Presence.Mode.DO_NOT_DISTURB -- the agent is busy and should not be disturbed. * <li>Presence.Mode.DO_NOT_DISTURB -- the agent is busy and should not be disturbed.
@ -493,7 +493,7 @@ public class AgentSession {
/** /**
* Removes a user from the workgroup queue. This is an administrative action that the * Removes a user from the workgroup queue. This is an administrative action that the
* <p/> *
* The agent is not guaranteed of having privileges to perform this action; an exception * The agent is not guaranteed of having privileges to perform this action; an exception
* denying the request may be thrown. * denying the request may be thrown.
* *

View file

@ -68,7 +68,7 @@ import org.jxmpp.jid.Jid;
* Provides workgroup services for users. Users can join the workgroup queue, depart the * Provides workgroup services for users. Users can join the workgroup queue, depart the
* queue, find status information about their placement in the queue, and register to * queue, find status information about their placement in the queue, and register to
* be notified when they are routed to an agent.<p> * be notified when they are routed to an agent.<p>
* <p/> *
* This class only provides a users perspective into a workgroup and is not intended * This class only provides a users perspective into a workgroup and is not intended
* for use by agents. * for use by agents.
* *
@ -232,20 +232,20 @@ public class Workgroup {
* the queue, queue status events will be sent to indicate the user's position and * the queue, queue status events will be sent to indicate the user's position and
* estimated time left in the queue. Once joining the queue, there are three ways * estimated time left in the queue. Once joining the queue, there are three ways
* the user can leave the queue: <ul> * the user can leave the queue: <ul>
* <p/> *
* <li>The user is routed to an agent, which triggers a GroupChat invitation. * <li>The user is routed to an agent, which triggers a GroupChat invitation.
* <li>The user asks to leave the queue by calling the {@link #departQueue} method. * <li>The user asks to leave the queue by calling the {@link #departQueue} method.
* <li>A server error occurs, or an administrator explicitly removes the user * <li>A server error occurs, or an administrator explicitly removes the user
* from the queue. * from the queue.
* </ul> * </ul>
* <p/> *
* A user cannot request to join the queue again if already in the queue. Therefore, * A user cannot request to join the queue again if already in the queue. Therefore,
* this method will throw an IllegalStateException if the user is already in the queue.<p> * this method will throw an IllegalStateException if the user is already in the queue.<p>
* <p/> *
* Some servers may be configured to require certain meta-data in order to * Some servers may be configured to require certain meta-data in order to
* join the queue. In that case, the {@link #joinQueue(Form)} method should be * join the queue. In that case, the {@link #joinQueue(Form)} method should be
* used instead of this method so that meta-data may be passed in.<p> * used instead of this method so that meta-data may be passed in.<p>
* <p/> *
* The server tracks the conversations that a user has with agents over time. By * The server tracks the conversations that a user has with agents over time. By
* default, that tracking is done using the user's JID. However, this is not always * default, that tracking is done using the user's JID. However, this is not always
* possible. For example, when the user is logged in anonymously using a web client. * possible. For example, when the user is logged in anonymously using a web client.
@ -271,19 +271,19 @@ public class Workgroup {
* the queue, queue status events will be sent to indicate the user's position and * the queue, queue status events will be sent to indicate the user's position and
* estimated time left in the queue. Once joining the queue, there are three ways * estimated time left in the queue. Once joining the queue, there are three ways
* the user can leave the queue: <ul> * the user can leave the queue: <ul>
* <p/> *
* <li>The user is routed to an agent, which triggers a GroupChat invitation. * <li>The user is routed to an agent, which triggers a GroupChat invitation.
* <li>The user asks to leave the queue by calling the {@link #departQueue} method. * <li>The user asks to leave the queue by calling the {@link #departQueue} method.
* <li>A server error occurs, or an administrator explicitly removes the user * <li>A server error occurs, or an administrator explicitly removes the user
* from the queue. * from the queue.
* </ul> * </ul>
* <p/> *
* A user cannot request to join the queue again if already in the queue. Therefore, * A user cannot request to join the queue again if already in the queue. Therefore,
* this method will throw an IllegalStateException if the user is already in the queue.<p> * this method will throw an IllegalStateException if the user is already in the queue.<p>
* <p/> *
* Some servers may be configured to require certain meta-data in order to * Some servers may be configured to require certain meta-data in order to
* join the queue.<p> * join the queue.<p>
* <p/> *
* The server tracks the conversations that a user has with agents over time. By * The server tracks the conversations that a user has with agents over time. By
* default, that tracking is done using the user's JID. However, this is not always * default, that tracking is done using the user's JID. However, this is not always
* possible. For example, when the user is logged in anonymously using a web client. * possible. For example, when the user is logged in anonymously using a web client.
@ -310,19 +310,19 @@ public class Workgroup {
* the queue, queue status events will be sent to indicate the user's position and * the queue, queue status events will be sent to indicate the user's position and
* estimated time left in the queue. Once joining the queue, there are three ways * estimated time left in the queue. Once joining the queue, there are three ways
* the user can leave the queue: <ul> * the user can leave the queue: <ul>
* <p/> *
* <li>The user is routed to an agent, which triggers a GroupChat invitation. * <li>The user is routed to an agent, which triggers a GroupChat invitation.
* <li>The user asks to leave the queue by calling the {@link #departQueue} method. * <li>The user asks to leave the queue by calling the {@link #departQueue} method.
* <li>A server error occurs, or an administrator explicitly removes the user * <li>A server error occurs, or an administrator explicitly removes the user
* from the queue. * from the queue.
* </ul> * </ul>
* <p/> *
* A user cannot request to join the queue again if already in the queue. Therefore, * A user cannot request to join the queue again if already in the queue. Therefore,
* this method will throw an IllegalStateException if the user is already in the queue.<p> * this method will throw an IllegalStateException if the user is already in the queue.<p>
* <p/> *
* Some servers may be configured to require certain meta-data in order to * Some servers may be configured to require certain meta-data in order to
* join the queue.<p> * join the queue.<p>
* <p/> *
* The server tracks the conversations that a user has with agents over time. By * The server tracks the conversations that a user has with agents over time. By
* default, that tracking is done using the user's JID. However, this is not always * default, that tracking is done using the user's JID. However, this is not always
* possible. For example, when the user is logged in anonymously using a web client. * possible. For example, when the user is logged in anonymously using a web client.
@ -359,19 +359,19 @@ public class Workgroup {
* the queue, queue status events will be sent to indicate the user's position and * the queue, queue status events will be sent to indicate the user's position and
* estimated time left in the queue. Once joining the queue, there are three ways * estimated time left in the queue. Once joining the queue, there are three ways
* the user can leave the queue: <ul> * the user can leave the queue: <ul>
* <p/> *
* <li>The user is routed to an agent, which triggers a GroupChat invitation. * <li>The user is routed to an agent, which triggers a GroupChat invitation.
* <li>The user asks to leave the queue by calling the {@link #departQueue} method. * <li>The user asks to leave the queue by calling the {@link #departQueue} method.
* <li>A server error occurs, or an administrator explicitly removes the user * <li>A server error occurs, or an administrator explicitly removes the user
* from the queue. * from the queue.
* </ul> * </ul>
* <p/> *
* A user cannot request to join the queue again if already in the queue. Therefore, * A user cannot request to join the queue again if already in the queue. Therefore,
* this method will throw an IllegalStateException if the user is already in the queue.<p> * this method will throw an IllegalStateException if the user is already in the queue.<p>
* <p/> *
* Some servers may be configured to require certain meta-data in order to * Some servers may be configured to require certain meta-data in order to
* join the queue.<p> * join the queue.<p>
* <p/> *
* The server tracks the conversations that a user has with agents over time. By * The server tracks the conversations that a user has with agents over time. By
* default, that tracking is done using the user's JID. However, this is not always * default, that tracking is done using the user's JID. However, this is not always
* possible. For example, when the user is logged in anonymously using a web client. * possible. For example, when the user is logged in anonymously using a web client.
@ -413,7 +413,7 @@ public class Workgroup {
/** /**
* Departs the workgroup queue. If the user is not currently in the queue, this * Departs the workgroup queue. If the user is not currently in the queue, this
* method will do nothing.<p> * method will do nothing.<p>
* <p/> *
* Normally, the user would not manually leave the queue. However, they may wish to * Normally, the user would not manually leave the queue. However, they may wish to
* under certain circumstances -- for example, if they no longer wish to be routed * under certain circumstances -- for example, if they no longer wish to be routed
* to an agent because they've been waiting too long. * to an agent because they've been waiting too long.

View file

@ -84,7 +84,7 @@ public class MetaDataUtils {
/** /**
* Serializes a Map of String name/value pairs into the meta-data XML format. * Serializes a Map of String name/value pairs into the meta-data XML format.
* *
* @param metaData the Map of meta-data as Map&lt;String,List&lt;String>> * @param metaData the Map of meta-data as Map&lt;String,List&lt;String&gt;&gt;
* @return the meta-data values in XML form. * @return the meta-data values in XML form.
*/ */
public static String serializeMetaData(Map<String, List<String>> metaData) { public static String serializeMetaData(Map<String, List<String>> metaData) {

View file

@ -1662,8 +1662,8 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
* Send a unconditional Stream Management acknowledgment to the server. * Send a unconditional Stream Management acknowledgment to the server.
* <p> * <p>
* See <a href="http://xmpp.org/extensions/xep-0198.html#acking">XEP-198: Stream Management § 4. Acks</a>: * See <a href="http://xmpp.org/extensions/xep-0198.html#acking">XEP-198: Stream Management § 4. Acks</a>:
* "Either party MAY send an <a/> element at any time (e.g., after it has received a certain number of stanzas, * "Either party MAY send an &lt;a/&gt; element at any time (e.g., after it has received a certain number of stanzas,
* or after a certain period of time), even if it has not received an <r/> element from the other party." * or after a certain period of time), even if it has not received an &lt;r/&gt; element from the other party."
* </p> * </p>
* *
* @throws StreamManagementNotEnabledException if Stream Management is not enabled. * @throws StreamManagementNotEnabledException if Stream Management is not enabled.