Enable javadoc 'html' doclint

Also make all 'test' tasks depend on the 'javadoc' task.

Fixes SMACK-650.
This commit is contained in:
Florian Schmaus 2017-12-25 12:51:41 +01:00
parent 89c97bb46c
commit 34373e8710
71 changed files with 200 additions and 220 deletions

View File

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

View File

@ -50,6 +50,7 @@ import android.os.SystemClock;
* counted towards the scheduled delay time</li>
* <li>the scheduled Runnable is not run while the system is in deep sleep.</li>
* </ul>
* <p>
* 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
* minutes is the ideal trade-off between reliability and low resource (battery) consumption.

View File

@ -73,7 +73,6 @@ public final class SmackConfiguration {
* <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.
* </ul>
* <p/>
* 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
* 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.
* <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:
* <p>
*
* <pre>
* // Create a connection to the igniterealtime.org XMPP server.
@ -54,7 +53,6 @@ import org.jxmpp.jid.EntityFullJid;
* // Disconnect from the server
* con.disconnect();
* </pre>
* </p>
* <p>
* 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

View File

@ -34,8 +34,8 @@ import java.util.zip.InflaterInputStream;
* <p>
* See also:
* <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://developer.android.com/reference/java/util/zip/Deflater.html#deflate(byte[], int, int, int)">The required deflate() method (Android)</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[],%20int,%20int,%20int)">The required deflate() method (Android)</a>
* </ul>
*
* @author Florian Schmaus

View File

@ -28,11 +28,12 @@ import org.jivesoftware.smack.XMPPConnection;
/**
* 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
* even block the thread since only one thread may print at a time.<p>
* <p/>
* even block the thread since only one thread may print at a time.
* <p>
* 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
* just change the <tt>printInterpreted</tt> static variable to <tt>true</tt>.
* </p>
*
* @author Gaston Dombiak
*/

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
* 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>
* <p/>
* even block the thread since only one thread may print at a time.
* <p>
* 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
* just change the <tt>printInterpreted</tt> static variable to <tt>true</tt>.
* </p>
*
* @author Gaston Dombiak
*/

View File

@ -25,7 +25,7 @@ public class ErrorIQ extends SimpleIQ {
/**
* Constructs a new error IQ.
* <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>
* @param xmppErrorBuilder the XMPPError builder (required).
*/

View File

@ -135,7 +135,7 @@ public interface Packet extends TopLevelStreamElement {
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>
* Changes to the returned set will update the stanza(/packet) extensions, if the returned set is not the empty set.
* </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
* example XEP-50 3.7:
* "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>
*/
protected String language;

View File

@ -34,7 +34,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
*
* <table border=1>
* <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>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>

View File

@ -35,6 +35,7 @@ import org.jxmpp.jid.EntityBareJid;
/**
* Base class for SASL mechanisms.
* 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
* deprecated method.</li>
* <li>{@link #authenticate(String, DomainBareJid, CallbackHandler, EntityBareJid, SSLSession)} -- Initiate authentication stanza

View File

@ -93,10 +93,11 @@ import org.jxmpp.jid.Jid;
/**
* 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>
* <p/>
* but also provides the ability to send ad-hoc messages composed by the user.
* <p>
* 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.
* </p>
*
* @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.
* For each connection to debug there will be an EnhancedDebugger that will be shown in the
* EnhancedDebuggerWindow.<p>
* <p/>
* EnhancedDebuggerWindow.
* <p>
* This class also provides information about Smack like for example the Smack version and the
* installed providers.
* </p>
*
* @author Gaston Dombiak
*/

View File

@ -418,7 +418,7 @@ public final class MamManager extends Manager {
/**
* Obtain page before the first message saved (specific chat).
* <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>
*
* @param chatJid
@ -442,7 +442,7 @@ public final class MamManager extends Manager {
/**
* Obtain page after the last message saved (specific chat).
* <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>
*
* @param chatJid
@ -615,7 +615,7 @@ public final class MamManager extends Manager {
* @throws XMPPErrorException
* @throws NoResponseException
* @throws InterruptedException
* @depreacted use {@link #isSupported()} instead.
* @deprecated use {@link #isSupported()} instead.
*/
@Deprecated
// TODO Remove in Smack 4.3

View File

@ -238,9 +238,9 @@ public class AMPExtension implements ExtensionElement {
**/
public enum Action {
/**
* The "alert" action triggers a reply <message/> stanza to the sending entity.
* This <message/> stanza MUST contain the element <amp status='alert'/>,
* which itself contains the <rule/> that triggered this action. In all other respects,
* The "alert" action triggers a reply &lt;message/&gt; stanza to the sending entity.
* This &lt;message/&gt; stanza MUST contain the element &lt;amp status='alert'/&gt;,
* which itself contains the &lt;rule/&gt; that triggered this action. In all other respects,
* this action behaves as "drop".
*/
alert,
@ -251,16 +251,16 @@ public class AMPExtension implements ExtensionElement {
*/
drop,
/**
* The "error" action triggers a reply <message/> stanza of type "error" to the sending entity.
* The <message/> stanza's <error/> child MUST contain a
* <failed-rules xmlns='http://jabber.org/protocol/amp#errors'/> error condition,
* The "error" action triggers a reply &lt;message/&gt; stanza of type "error" to the sending entity.
* The &lt;message/&gt; stanza's &lt;error/&gt; child MUST contain a
* &lt;failed-rules xmlns='http://jabber.org/protocol/amp#errors'/&gt; error condition,
* which itself contains the rules that triggered this action.
*/
error,
/**
* The "notify" action triggers a reply <message/> stanza to the sending entity.
* This <message/> stanza MUST contain the element <amp status='notify'/>, which itself
* contains the <rule/> that triggered this action. Unlike the other actions,
* The "notify" action triggers a reply &lt;message/&gt; stanza to the sending entity.
* This &lt;message/&gt; stanza MUST contain the element &lt;amp status='notify'/&gt;, which itself
* contains the &lt;rule/&gt; that triggered this action. Unlike the other actions,
* this action does not override the default behavior for a server.
* 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
* Conferences are provided.
* </p>
*
* 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
* 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
* in a Jabber user's account.
* See the following code sample for saving Bookmarks:
* <p/>
* <pre>
* XMPPConnection con = new XMPPTCPConnection("jabber.org");
* con.login("john", "doe");
* Bookmarks bookmarks = new Bookmarks();
* <p/>
* // Bookmark a URL
* BookmarkedURL url = new BookmarkedURL();
* url.setName("Google");
@ -56,8 +54,6 @@ import org.xmlpull.v1.XmlPullParserException;
* // Save Bookmarks using PrivateDataManager.
* PrivateDataManager manager = new PrivateDataManager(con);
* manager.setPrivateData(bookmarks);
* <p/>
* <p/>
* LastActivity activity = LastActivity.getLastActivity(con, "xray@jabber.org");
* </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
* 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
* 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.
*
* @param timeout the specified timeout, in milliseconds

View File

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

View File

@ -38,6 +38,7 @@ import org.jxmpp.jid.Jid;
* <code>getForm</code> method retrieves a form with all the users.
* <p>
* Each command has a <tt>node</tt> that should be unique within a given JID.
* </p>
* <p>
* Commands may have zero or more stages. Each stage is usually used for
* 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
* allowed actions the user might perform during each stage (e.g. go to the
* previous stage or go to the next stage).
* <p>
* </p>
* 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
* 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>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-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>session-expired</i>. Extension of a <i>not-allowed</i> error.</li>
* </ul>
* <p>
* See the <code>SpecificErrorCondition</code> class for detailed description
* of each one.
* <p>
* </p>
* Use the <code>getSpecificErrorConditionFrom</code> to obtain the specific
* information from an <code>XMPPError</code>.
*

View File

@ -31,7 +31,7 @@ import org.jxmpp.jid.Jid;
* <li>Current Stage</li>
* <li>Available actions</li>
* <li>Default action</li>
* </ul><p/>
* </ul>
* To implement a new command extend this class and implement all the abstract
* 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

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
* the option of, accepting, rejecting, or not responding to a received file
* transfer request.
* <p/>
* <p>
* 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
* 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
* href="http://www.xmpp.org/extensions/jep-0047.html">In-Band Bytestreams</a>,
* which is the fallback mechanism.
* <p/>
* </p>
* <p>
* 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
* no acceptable means to transfer the file.
* <p/>
* </p>
* Finally, if the other user does not respond this method will return null
* after the specified timeout.
*

View File

@ -122,7 +122,7 @@ public class FileTransferRequest {
/**
* 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.
*/
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
* concerned with and they can be handled in different ways depending upon the
* method that is invoked on this class.
* <p/>
*
* The first way that a file is recieved is by calling the
* {@link #recieveFile()} 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.
* <p/>
*
* The second way that a file can be recieved through this class is by invoking
* the {@link #recieveFile(File)} method. This method returns immediatly and
* takes as its parameter a file on the local file system where the file
@ -98,10 +98,10 @@ public class IncomingFileTransfer extends FileTransfer {
/**
* This method negotitates the stream and then transfer's the file over the negotiated stream.
* The transfered file will be saved at the provided location.
* <p/>
*
* This method will return immedialtly, file transfer progress can be monitored through several
* methods:
* <p/>
*
* <UL>
* <LI>{@link FileTransfer#getStatus()}
* <LI>{@link FileTransfer#getProgress()}

View File

@ -23,7 +23,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
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
* @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
* of existing Connections. It also allows to request last activity information
* of other users.
* <p>
*
* LastActivity (XEP-0012) based on the sending JID's type allows for retrieval
* of:
@ -58,11 +57,9 @@ import org.jxmpp.jid.Jid;
* specified when doing so.
* <li>How long a host has been up.
* </ol>
* <p/>
*
* 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:
* <p>
*
* <pre>
* XMPPConnection con = new XMPPTCPConnection(&quot;jabber.org&quot;);

View File

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

View File

@ -28,8 +28,8 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
* the XEP for more implementation guidelines.
*
* @author Fernando Ramirez, f.e.ramirez94@gmail.com
* @see <a href="http://xmpp.org/extensions/xep-0308.html">XEP-0308:&nbsp;Last&
* nbsp;Message&nbsp;Correction</a>
* @see <a href="http://xmpp.org/extensions/xep-0308.html">XEP-0308:&nbsp;Last
* &nbsp;Message&nbsp;Correction</a>
*/
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:
* <ul>
* <li>maxchars -> total number of characters to receive in the history.
* <li>maxstanzas -> 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>maxchars -&gt; total number of characters to receive in the history.
* <li>maxstanzas -&gt; total number of messages to receive in the history.
* <li>seconds -&gt; only the messages received in the last "X" seconds will be included in the
* 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.
* </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.
*
* @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
* communications from other users. It contains the appropriate structure to suit
* 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>
* <li>Retrieving 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).
* 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.
* <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.
*
* @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
* 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
* 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 stream. This attribute MUST be a valid MIME-type as registered with
* 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
* required. If not included during negotiation, its value is assumed to be
* "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>
* <li>hash: The MD5 sum of the file contents.</li>
* </ul>
* <p/>
* <p/>
* <p>
* &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
* NOT be sent in the result.
* <p/>
* <p/>
* </p>
* <p>
* 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
* 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:
* <p/>
* </p>
* <ul>
* <li>offset: Specifies the position, in bytes, to start transferring the
* file data from. This defaults to zero (0) if not specified.</li>
* <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>
* </ul>
* <p/>
* <p/>
* Both attributes are OPTIONAL on the &lt;range&gt; element. Sending no
* 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

View File

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

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.
*
* @param formField

View File

@ -77,14 +77,13 @@ import org.jxmpp.util.cache.LruCache;
/**
* 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.
* <p>
*
* Others users may attempt to subscribe to this user using a subscription request. Three
* modes are supported for handling these requests: <ul>
* <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#manual manual} -- manually process all subscription requests.</li>
* </ul>
* </p>
*
* @author Matt Tucker
* @see #getInstanceFor(XMPPConnection)

View File

@ -23,7 +23,7 @@ import org.jivesoftware.smackx.jingleold.packet.JingleError;
/**
* A Jingle exception.
*
* @author Alvaro Saurin <alvaro.saurin@gmail.com>
* @author Alvaro Saurin
*/
public class JingleException extends XMPPException {
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).
* 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.
* <p/>
* <p>
* 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 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.
* For instance an Audio Payload "GSM".
* <p/>
* </p>
* <p>
* 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
* and a defined Payload type.
* 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
* use of Jingle. This implementation allows the user to simply
* 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
* 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,
* including a fixed solver that can be used when the address and port are know
* in advance.
* 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
* 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
* listeners that will be called when different events happen. The most
* 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
* communication. See JingleSessionListener for a complete list of events that can be
* observed.
* <p/>
* </p>
* This is an example of how to use the JingleManager:
* <i>This example implements a Jingle VOIP Call between two users.</i>
* <p/>
* <pre>
* <p/>
* To wait for an Incoming Jingle Session:
* <p/>
* try {
* <p/>
* // Connect to an XMPP Server
* XMPPConnection x1 = new XMPPTCPConnection("xmpp.com");
* x1.connect();
* x1.login("juliet", "juliet");
* <p/>
* // Create a JingleManager using a BasicResolver
* final JingleManager jm1 = new JingleManager(
* x1, new BasicTransportManager());
* <p/>
* // Create a JingleMediaManager. In this case using Jingle Audio Media API
* JingleMediaManager jingleMediaManager = new AudioMediaManager();
* <p/>
* // Set the JingleMediaManager
* jm1.setMediaManager(jingleMediaManager);
* <p/>
* // Listen for incoming calls
* jm1.addJingleSessionRequestListener(new JingleSessionRequestListener() {
* public void sessionRequested(JingleSessionRequest request) {
* <p/>
* try {
* // Accept the call
* IncomingJingleSession session = request.accept();
* <p/>
* <p/>
* // Start the call
* session.start();
* } catch (XMPPException e) {
* LOGGER.log(Level.WARNING, "exception", e);
* }
* <p/>
* }
* });
* <p/>
* Thread.sleep(15000);
* <p/>
* } catch (Exception e) {
* LOGGER.log(Level.WARNING, "exception", e);
* }
* <p/>
* To create an Outgoing Jingle Session:
* <p/>
* try {
* <p/>
* // Connect to an XMPP Server
* XMPPConnection x0 = new XMPPTCPConnection("xmpp.com");
* x0.connect();
* x0.login("romeo", "romeo");
* <p/>
* // Create a JingleManager using a BasicResolver
* final JingleManager jm0 = new JingleManager(
* x0, new BasicTransportManager());
* <p/>
* // Create a JingleMediaManager. In this case using Jingle Audio Media API
* JingleMediaManager jingleMediaManager = new AudioMediaManager(); // Using Jingle Media API
* <p/>
* // Set the JingleMediaManager
* jm0.setMediaManager(jingleMediaManager);
* <p/>
* // Create a new Jingle Call with a full JID
* OutgoingJingleSession js0 = jm0.createOutgoingJingleSession("juliet@xmpp.com/Smack");
* <p/>
* // Start the call
* js0.start();
* <p/>
* Thread.sleep(10000);
* js0.terminate();
* <p/>
* Thread.sleep(3000);
* <p/>
* } catch (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.
* <p/>
* <p/>
* <p>
* Before starting any Jingle jmf session, check that the user can handle
* it. Enable the Jingle support to indicate that this client handles Jingle
* messages.
* </p>
*
* @param connection the connection where the service will be enabled or
* disabled

View File

@ -29,13 +29,10 @@ import org.jivesoftware.smackx.jingleold.listeners.JingleListener;
/**
* Basic Jingle negotiator.
* <p/>
* </p>
* <p/>
* <p>
* JingleNegotiator implements some basic behavior for every Jingle negotiation.
* It implements a "state" pattern: each stage should process Jingle packets and
* act depending on the current state in the negotiation...
* <p/>
* </p>
*
* @author Alvaro Saurin
@ -215,18 +212,18 @@ public abstract class JingleNegotiator {
* Media Negotiator
* Transport Negotiator
*
* <jingle>
* <content>
* <description>
* <transport>
* <content>
* <description>
* <transport>
* &lt;jingle&gt;
* &lt;content&gt;
* &lt;description&gt;
* &lt;transport&gt;
* &lt;content&gt;
* &lt;description&gt;
* &lt;transport&gt;
*
* 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.
*
* 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).
*
* @param iq the stanza(/packet) received

View File

@ -55,7 +55,7 @@ import org.jivesoftware.smackx.jingleold.packet.JingleError;
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
* 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
* 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
@ -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) {
contentNegotiators.add(inContentNegotiator);

View File

@ -28,7 +28,7 @@ import org.jxmpp.jid.Jid;
/**
* A Jingle session request.
* <p/>
*
* 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
* 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.
*
* @return Returns the <b><i>IncomingJingleSession</b></i> on which the
* @return Returns the IncomingJingleSession on which the
* negotiation can be carried out.
* @throws SmackException
* @throws InterruptedException

View File

@ -22,14 +22,14 @@ import java.util.Locale;
* Content info. Content info messages are complementary messages that can be
* transmitted for informing of events like "busy", "ringtone", etc.
*
* @author Alvaro Saurin <alvaro.saurin@gmail.com>
* @author Alvaro Saurin
*/
public abstract class ContentInfo {
/**
* Audio content info messages.
*
* @author Alvaro Saurin <alvaro.saurin@gmail.com>
* @author Alvaro Saurin
*/
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.
* <p/>
* <p>
* 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.
* You can implement many JingleMediaManager according to you necessity.
* </p>
*
* @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.
* <p/>
* <p>
* 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.
* 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>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;
/**
* 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
* packets interchange and the stage control. handling all the xmpp packets
* 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.
* 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.
* <p/>
* <p>
* Send from portA to portB and receive from portB in portA.
* <p/>
* </p>
* <p>
* Sending
* portA ---> portB
* <p/>
* portA ---&gt; portB
* </p>
* <p>
* Receiving
* portB ---> portA
* <p/>
* portB ---&gt; portA
* </p>
* <i>Transmit and Receive are interdependence. To receive you MUST transmit. </i>
*
* @author Thiago Camargo

View File

@ -45,7 +45,7 @@ public class BasicResolver extends TransportResolver {
/**
* Resolve the IP address.
* <p/>
*
* The BasicResolver takes the IP addresses of the interfaces and uses the
* first non-loopback, non-linklocal and non-sitelocal address.
* @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.
* A very reliable solution for NAT Traversal.
* <p/>
*
* 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.
* The resolver adds this candidate
@ -61,7 +61,7 @@ public class BridgedResolver extends TransportResolver {
/**1
* Resolve Bridged Candidate.
* <p/>
*
* The BridgedResolver takes the IP address and ports of a jmf proxy service.
* @throws NotConnectedException
* @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
* initialized.
*
* @author Alvaro Saurin <alvaro.saurin@gmail.com>
* @author Alvaro Saurin
*/
public class FixedResolver extends TransportResolver {

View File

@ -24,7 +24,7 @@ import java.util.logging.Logger;
/**
* ICE Transport candidate.
* <p/>
*
* A candidate represents the possible transport for data interchange between
* 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 the transport candidate the other endpoint has provided is
* usable.
* <p/>
*
* ICE Candidate can check connectivity using UDP echo Test.
*/
@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.
* 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>
* <p/>
*
* High Level Usage Example:
* <p/>
*
* RTPBridge rtpBridge = RTPBridge.getRTPBridge(connection, sessionID);
*
* @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.
* <p/>
*
* High Level Usage Example:
* <p/>
*
* STUN stun = STUN.getSTUNServer(connection);
*
* @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
* are:
* <p/>
*
* <pre>
* iphone-stun.freenet.de:3478
* larry.gloo.net:3478
@ -212,7 +212,7 @@ public class STUNResolver extends TransportResolver {
* stun.voxgratia.org (no DNS SRV record)
* stun.noc.ams-ix.net
* </pre>
* <p/>
*
* This list should be contained in a file in the "META-INF" directory
*
* @return a list of services
@ -494,7 +494,7 @@ public class STUNResolver extends TransportResolver {
/**
* Check a binding with the STUN currentServer.
* <p/>
*
* Note: this function blocks for some time, waiting for a response.
*
* @return true if the currentServer is usable.

View File

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

View File

@ -45,12 +45,11 @@ import org.jivesoftware.smackx.jingleold.packet.JingleTransport.JingleTransportC
/**
* Transport negotiator.
* <p/>
* <p/>
*
* This class is responsible for managing the transport negotiation process,
* 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 {
@ -829,7 +828,7 @@ public abstract class TransportNegotiator extends JingleNegotiator {
/**
* Raw-UDP transport negotiator.
*
* @author Alvaro Saurin <alvaro.saurin@gmail.com>
* @author Alvaro Saurin
*/
public static final class RawUdp extends TransportNegotiator {
@ -884,7 +883,7 @@ public abstract class TransportNegotiator extends JingleNegotiator {
/**
* Ice transport negotiator.
*
* @author Alvaro Saurin <alvaro.saurin@gmail.com>
* @author Alvaro Saurin
*/
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.
*
* @author Thiago Camargo
* @author Alvaro Saurin <alvaro.saurin@gmail.com>
* @author Alvaro Saurin
*/
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
* descriptions and transports. <p/> The following link summarizes the
* descriptions and transports. The following link summarizes the
* requirements of Jingle IM: <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
* 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
* identifier generated by the initiator. This should match the XML Nmtoken
* production so that XML character escaping is not needed for characters
* such as &.
* such as &amp;.
*
* @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
* identifier generated by the initiator. This should match the XML Nmtoken
* 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.
* @see #setSid(String)

View File

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

View File

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

View File

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

View File

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

View File

@ -31,7 +31,7 @@ import org.xmlpull.v1.XmlPullParserException;
/**
* Parser for a Jingle description.
*
* @author Alvaro Saurin <alvaro.saurin@gmail.com>
* @author Alvaro Saurin
*/
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;
/**
* Jingle <content> provider.
* Jingle &lt;content&gt; provider.
*
* @author Jeff Williams
*/

View File

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

View File

@ -32,7 +32,7 @@ import org.xmlpull.v1.XmlPullParserException;
/**
* Provider for a Jingle transport element.
*
* @author Alvaro Saurin <alvaro.saurin@gmail.com>
* @author Alvaro Saurin
*/
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
* how offers 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
* (equivalent to Presence.Mode.CHAT).
* <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.
* <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>
* <p/>
*
* 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 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
* 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
* (equivalent to Presence.Mode.CHAT).
* <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.
* <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>
* <p/>
*
* 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
* 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
* 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
* (equivalent to Presence.Mode.CHAT).
* <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
* <p/>
*
* The agent is not guaranteed of having privileges to perform this action; an exception
* 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
* queue, find status information about their placement in the queue, and register to
* 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
* 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
* estimated time left in the queue. Once joining the queue, there are three ways
* the user can leave the queue: <ul>
* <p/>
*
* <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>A server error occurs, or an administrator explicitly removes the user
* from the queue.
* </ul>
* <p/>
*
* 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>
* <p/>
*
* 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
* 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
* 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.
@ -271,19 +271,19 @@ public class Workgroup {
* 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
* the user can leave the queue: <ul>
* <p/>
*
* <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>A server error occurs, or an administrator explicitly removes the user
* from the queue.
* </ul>
* <p/>
*
* 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>
* <p/>
*
* Some servers may be configured to require certain meta-data in order to
* join the queue.<p>
* <p/>
*
* 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
* 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
* estimated time left in the queue. Once joining the queue, there are three ways
* the user can leave the queue: <ul>
* <p/>
*
* <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>A server error occurs, or an administrator explicitly removes the user
* from the queue.
* </ul>
* <p/>
*
* 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>
* <p/>
*
* Some servers may be configured to require certain meta-data in order to
* join the queue.<p>
* <p/>
*
* 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
* 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
* estimated time left in the queue. Once joining the queue, there are three ways
* the user can leave the queue: <ul>
* <p/>
*
* <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>A server error occurs, or an administrator explicitly removes the user
* from the queue.
* </ul>
* <p/>
*
* 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>
* <p/>
*
* Some servers may be configured to require certain meta-data in order to
* join the queue.<p>
* <p/>
*
* 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
* 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
* method will do nothing.<p>
* <p/>
*
* 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
* 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.
*
* @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.
*/
public static String serializeMetaData(Map<String, List<String>> metaData) {

View File

@ -1670,8 +1670,8 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
* Send a unconditional Stream Management acknowledgment to the server.
* <p>
* 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,
* or after a certain period of time), even if it has not received an <r/> element from the other party."
* "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 &lt;r/&gt; element from the other party."
* </p>
*
* @throws StreamManagementNotEnabledException if Stream Management is not enabled.