mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-22 12:02:05 +01:00
Merge branch '4.1'
Conflicts: smack-core/src/main/java/org/jivesoftware/smack/StanzaListener.java smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java version.gradle
This commit is contained in:
commit
83b84c5bd3
168 changed files with 780 additions and 687 deletions
|
@ -275,7 +275,7 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
|
||||||
* Closes the connection by setting presence to unavailable and closing the
|
* Closes the connection by setting presence to unavailable and closing the
|
||||||
* HTTP client. The shutdown logic will be used during a planned disconnection or when
|
* HTTP client. The shutdown logic will be used during a planned disconnection or when
|
||||||
* dealing with an unexpected disconnection. Unlike {@link #disconnect()} the connection's
|
* dealing with an unexpected disconnection. Unlike {@link #disconnect()} the connection's
|
||||||
* BOSH packet reader will not be removed; thus connection's state is kept.
|
* BOSH stanza(/packet) reader will not be removed; thus connection's state is kept.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -473,7 +473,7 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listens for XML traffic from the BOSH connection manager and parses it into
|
* Listens for XML traffic from the BOSH connection manager and parses it into
|
||||||
* packet objects.
|
* stanza(/packet) objects.
|
||||||
*
|
*
|
||||||
* @author Guenther Niess
|
* @author Guenther Niess
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class IQTest extends SmackTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check that the server responds a 503 error code when the client sends an IQ packet with an
|
* Check that the server responds a 503 error code when the client sends an IQ stanza(/packet) with an
|
||||||
* invalid namespace.
|
* invalid namespace.
|
||||||
*/
|
*/
|
||||||
public void testInvalidNamespace() {
|
public void testInvalidNamespace() {
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class PacketIDFilterTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wraps the MockPacket class to always give an expected packet ID field.
|
* Wraps the MockPacket class to always give an expected stanza(/packet) ID field.
|
||||||
*/
|
*/
|
||||||
private class MockIDPacket extends MockPacket {
|
private class MockIDPacket extends MockPacket {
|
||||||
private String id;
|
private String id;
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
package org.jivesoftware.smack.packet;
|
package org.jivesoftware.smack.packet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A mock implementation of the Packet abstract class. Implements toXML() by returning null.
|
* A mock implementation of the Stanza(/Packet) abstract class. Implements toXML() by returning null.
|
||||||
*/
|
*/
|
||||||
public class MockPacket extends Packet {
|
public class MockPacket extends Packet {
|
||||||
|
|
||||||
|
|
|
@ -123,24 +123,24 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
private final Collection<PacketCollector> collectors = new ConcurrentLinkedQueue<PacketCollector>();
|
private final Collection<PacketCollector> collectors = new ConcurrentLinkedQueue<PacketCollector>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of PacketListeners that will be notified synchronously when a new packet was received.
|
* List of PacketListeners that will be notified synchronously when a new stanza(/packet) was received.
|
||||||
*/
|
*/
|
||||||
private final Map<StanzaListener, ListenerWrapper> syncRecvListeners = new LinkedHashMap<>();
|
private final Map<StanzaListener, ListenerWrapper> syncRecvListeners = new LinkedHashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of PacketListeners that will be notified asynchronously when a new packet was received.
|
* List of PacketListeners that will be notified asynchronously when a new stanza(/packet) was received.
|
||||||
*/
|
*/
|
||||||
private final Map<StanzaListener, ListenerWrapper> asyncRecvListeners = new LinkedHashMap<>();
|
private final Map<StanzaListener, ListenerWrapper> asyncRecvListeners = new LinkedHashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of PacketListeners that will be notified when a new packet was sent.
|
* List of PacketListeners that will be notified when a new stanza(/packet) was sent.
|
||||||
*/
|
*/
|
||||||
private final Map<StanzaListener, ListenerWrapper> sendListeners =
|
private final Map<StanzaListener, ListenerWrapper> sendListeners =
|
||||||
new HashMap<StanzaListener, ListenerWrapper>();
|
new HashMap<StanzaListener, ListenerWrapper>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of PacketListeners that will be notified when a new packet is about to be
|
* List of PacketListeners that will be notified when a new stanza(/packet) is about to be
|
||||||
* sent to the server. These interceptors may modify the packet before it is being
|
* sent to the server. These interceptors may modify the stanza(/packet) before it is being
|
||||||
* actually sent to the server.
|
* actually sent to the server.
|
||||||
*/
|
*/
|
||||||
private final Map<StanzaListener, InterceptorWrapper> interceptors =
|
private final Map<StanzaListener, InterceptorWrapper> interceptors =
|
||||||
|
@ -255,7 +255,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A executor service used to invoke the callbacks of synchronous packet listeners. We use a executor service to
|
* A executor service used to invoke the callbacks of synchronous stanza(/packet) listeners. We use a executor service to
|
||||||
* decouple incoming stanza processing from callback invocation. It is important that order of callback invocation
|
* decouple incoming stanza processing from callback invocation. It is important that order of callback invocation
|
||||||
* is the same as the order of the incoming stanzas. Therefore we use a <i>single</i> threaded executor service.
|
* is the same as the order of the incoming stanzas. Therefore we use a <i>single</i> threaded executor service.
|
||||||
*/
|
*/
|
||||||
|
@ -377,7 +377,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logs in to the server using the strongest SASL mechanism supported by
|
* Logs in to the server using the strongest SASL mechanism supported by
|
||||||
* the server. If more than the connection's default packet timeout elapses in each step of the
|
* the server. If more than the connection's default stanza(/packet) timeout elapses in each step of the
|
||||||
* authentication process without a response from the server, a
|
* authentication process without a response from the server, a
|
||||||
* {@link SmackException.NoResponseException} will be thrown.
|
* {@link SmackException.NoResponseException} will be thrown.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -660,10 +660,10 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
* by closing the stream. The XMPPConnection can still be used for connecting to the server
|
* by closing the stream. The XMPPConnection can still be used for connecting to the server
|
||||||
* again. A custom unavailable presence is useful for communicating offline presence
|
* again. A custom unavailable presence is useful for communicating offline presence
|
||||||
* information such as "On vacation". Typically, just the status text of the presence
|
* information such as "On vacation". Typically, just the status text of the presence
|
||||||
* packet is set with online information, but most XMPP servers will deliver the full
|
* stanza(/packet) is set with online information, but most XMPP servers will deliver the full
|
||||||
* presence packet with whatever data is set.
|
* presence stanza(/packet) with whatever data is set.
|
||||||
*
|
*
|
||||||
* @param unavailablePresence the presence packet to send during shutdown.
|
* @param unavailablePresence the presence stanza(/packet) to send during shutdown.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
*/
|
*/
|
||||||
public synchronized void disconnect(Presence unavailablePresence) throws NotConnectedException {
|
public synchronized void disconnect(Presence unavailablePresence) throws NotConnectedException {
|
||||||
|
@ -805,12 +805,12 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process all packet listeners for sending packets.
|
* Process all stanza(/packet) listeners for sending packets.
|
||||||
* <p>
|
* <p>
|
||||||
* Compared to {@link #firePacketInterceptors(Stanza)}, the listeners will be invoked in a new thread.
|
* Compared to {@link #firePacketInterceptors(Stanza)}, the listeners will be invoked in a new thread.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param packet the packet to process.
|
* @param packet the stanza(/packet) to process.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
protected void firePacketSendingListeners(final Stanza packet) {
|
protected void firePacketSendingListeners(final Stanza packet) {
|
||||||
|
@ -861,12 +861,12 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process interceptors. Interceptors may modify the packet that is about to be sent.
|
* Process interceptors. Interceptors may modify the stanza(/packet) that is about to be sent.
|
||||||
* Since the thread that requested to send the packet will invoke all interceptors, it
|
* Since the thread that requested to send the stanza(/packet) will invoke all interceptors, it
|
||||||
* is important that interceptors perform their work as soon as possible so that the
|
* is important that interceptors perform their work as soon as possible so that the
|
||||||
* thread does not remain blocked for a long period.
|
* thread does not remain blocked for a long period.
|
||||||
*
|
*
|
||||||
* @param packet the packet that is going to be sent to the server
|
* @param packet the stanza(/packet) that is going to be sent to the server
|
||||||
*/
|
*/
|
||||||
private void firePacketInterceptors(Stanza packet) {
|
private void firePacketInterceptors(Stanza packet) {
|
||||||
List<StanzaListener> interceptorsToInvoke = new LinkedList<StanzaListener>();
|
List<StanzaListener> interceptorsToInvoke = new LinkedList<StanzaListener>();
|
||||||
|
@ -976,11 +976,11 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes a packet after it's been fully parsed by looping through the installed
|
* Processes a stanza(/packet) after it's been fully parsed by looping through the installed
|
||||||
* packet collectors and listeners and letting them examine the packet to see if
|
* stanza(/packet) collectors and listeners and letting them examine the stanza(/packet) to see if
|
||||||
* they are a match with the filter.
|
* they are a match with the filter.
|
||||||
*
|
*
|
||||||
* @param packet the packet to process.
|
* @param packet the stanza(/packet) to process.
|
||||||
*/
|
*/
|
||||||
protected void processPacket(Stanza packet) {
|
protected void processPacket(Stanza packet) {
|
||||||
assert(packet != null);
|
assert(packet != null);
|
||||||
|
@ -990,7 +990,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A runnable to notify all listeners and packet collectors of a packet.
|
* A runnable to notify all listeners and stanza(/packet) collectors of a packet.
|
||||||
*/
|
*/
|
||||||
private class ListenerNotification implements Runnable {
|
private class ListenerNotification implements Runnable {
|
||||||
|
|
||||||
|
@ -1007,9 +1007,9 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Invoke {@link PacketCollector#processPacket(Stanza)} for every
|
* Invoke {@link PacketCollector#processPacket(Stanza)} for every
|
||||||
* PacketCollector with the given packet. Also notify the receive listeners with a matching packet filter about the packet.
|
* PacketCollector with the given packet. Also notify the receive listeners with a matching stanza(/packet) filter about the packet.
|
||||||
*
|
*
|
||||||
* @param packet the packet to notify the PacketCollectors and receive listeners about.
|
* @param packet the stanza(/packet) to notify the PacketCollectors and receive listeners about.
|
||||||
*/
|
*/
|
||||||
protected void invokePacketCollectorsAndNotifyRecvListeners(final Stanza packet) {
|
protected void invokePacketCollectorsAndNotifyRecvListeners(final Stanza packet) {
|
||||||
if (packet instanceof IQ) {
|
if (packet instanceof IQ) {
|
||||||
|
@ -1237,7 +1237,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A wrapper class to associate a packet filter with a listener.
|
* A wrapper class to associate a stanza(/packet) filter with a listener.
|
||||||
*/
|
*/
|
||||||
protected static class ListenerWrapper {
|
protected static class ListenerWrapper {
|
||||||
|
|
||||||
|
@ -1245,9 +1245,9 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
private final StanzaFilter packetFilter;
|
private final StanzaFilter packetFilter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a class which associates a packet filter with a listener.
|
* Create a class which associates a stanza(/packet) filter with a listener.
|
||||||
*
|
*
|
||||||
* @param packetListener the packet listener.
|
* @param packetListener the stanza(/packet) listener.
|
||||||
* @param packetFilter the associated filter or null if it listen for all packets.
|
* @param packetFilter the associated filter or null if it listen for all packets.
|
||||||
*/
|
*/
|
||||||
public ListenerWrapper(StanzaListener packetListener, StanzaFilter packetFilter) {
|
public ListenerWrapper(StanzaListener packetListener, StanzaFilter packetFilter) {
|
||||||
|
@ -1265,7 +1265,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A wrapper class to associate a packet filter with an interceptor.
|
* A wrapper class to associate a stanza(/packet) filter with an interceptor.
|
||||||
*/
|
*/
|
||||||
protected static class InterceptorWrapper {
|
protected static class InterceptorWrapper {
|
||||||
|
|
||||||
|
@ -1273,7 +1273,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
private final StanzaFilter packetFilter;
|
private final StanzaFilter packetFilter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a class which associates a packet filter with an interceptor.
|
* Create a class which associates a stanza(/packet) filter with an interceptor.
|
||||||
*
|
*
|
||||||
* @param packetInterceptor the interceptor.
|
* @param packetInterceptor the interceptor.
|
||||||
* @param packetFilter the associated filter or null if it intercepts all packets.
|
* @param packetFilter the associated filter or null if it intercepts all packets.
|
||||||
|
|
|
@ -32,7 +32,7 @@ import org.jivesoftware.smack.packet.Stanza;
|
||||||
* use than a {@link StanzaListener} when you need to wait for a specific
|
* use than a {@link StanzaListener} when you need to wait for a specific
|
||||||
* result.<p>
|
* result.<p>
|
||||||
*
|
*
|
||||||
* Each packet collector will queue up a configured number of packets for processing before
|
* Each stanza(/packet) collector will queue up a configured number of packets for processing before
|
||||||
* older packets are automatically dropped. The default number is retrieved by
|
* older packets are automatically dropped. The default number is retrieved by
|
||||||
* {@link SmackConfiguration#getPacketCollectorSize()}.
|
* {@link SmackConfiguration#getPacketCollectorSize()}.
|
||||||
*
|
*
|
||||||
|
@ -46,7 +46,7 @@ public class PacketCollector {
|
||||||
private final ArrayBlockingQueue<Stanza> resultQueue;
|
private final ArrayBlockingQueue<Stanza> resultQueue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The packet collector which timeout for the next result will get reset once this collector collects a stanza.
|
* The stanza(/packet) collector which timeout for the next result will get reset once this collector collects a stanza.
|
||||||
*/
|
*/
|
||||||
private final PacketCollector collectorToReset;
|
private final PacketCollector collectorToReset;
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ public class PacketCollector {
|
||||||
private boolean cancelled = false;
|
private boolean cancelled = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet collector. If the packet filter is <tt>null</tt>, then
|
* Creates a new stanza(/packet) collector. If the stanza(/packet) filter is <tt>null</tt>, then
|
||||||
* all packets will match this collector.
|
* all packets will match this collector.
|
||||||
*
|
*
|
||||||
* @param connection the connection the collector is tied to.
|
* @param connection the connection the collector is tied to.
|
||||||
|
@ -69,9 +69,9 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Explicitly cancels the packet collector so that no more results are
|
* Explicitly cancels the stanza(/packet) collector so that no more results are
|
||||||
* queued up. Once a packet collector has been cancelled, it cannot be
|
* queued up. Once a stanza(/packet) collector has been cancelled, it cannot be
|
||||||
* re-enabled. Instead, a new packet collector must be created.
|
* re-enabled. Instead, a new stanza(/packet) collector must be created.
|
||||||
*/
|
*/
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
// If the packet collector has already been cancelled, do nothing.
|
// If the packet collector has already been cancelled, do nothing.
|
||||||
|
@ -82,10 +82,10 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the packet filter associated with this packet collector. The packet
|
* Returns the stanza(/packet) filter associated with this stanza(/packet) collector. The packet
|
||||||
* filter is used to determine what packets are queued as results.
|
* filter is used to determine what packets are queued as results.
|
||||||
*
|
*
|
||||||
* @return the packet filter.
|
* @return the stanza(/packet) filter.
|
||||||
* @deprecated use {@link #getStanzaFilter()} instead.
|
* @deprecated use {@link #getStanzaFilter()} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
@ -104,11 +104,11 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Polls to see if a packet is currently available and returns it, or
|
* Polls to see if a stanza(/packet) is currently available and returns it, or
|
||||||
* immediately returns <tt>null</tt> if no packets are currently in the
|
* immediately returns <tt>null</tt> if no packets are currently in the
|
||||||
* result queue.
|
* result queue.
|
||||||
*
|
*
|
||||||
* @return the next packet result, or <tt>null</tt> if there are no more
|
* @return the next stanza(/packet) result, or <tt>null</tt> if there are no more
|
||||||
* results.
|
* results.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@ -117,7 +117,7 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Polls to see if a packet is currently available and returns it, or
|
* Polls to see if a stanza(/packet) is currently available and returns it, or
|
||||||
* immediately returns <tt>null</tt> if no packets are currently in the
|
* immediately returns <tt>null</tt> if no packets are currently in the
|
||||||
* result queue.
|
* result queue.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -136,7 +136,7 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the next available packet. The method call will block (not return) until a packet is
|
* Returns the next available packet. The method call will block (not return) until a stanza(/packet) is
|
||||||
* available.
|
* available.
|
||||||
*
|
*
|
||||||
* @return the next available packet.
|
* @return the next available packet.
|
||||||
|
@ -167,7 +167,7 @@ public class PacketCollector {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the next available packet. The method call will block (not return)
|
* Returns the next available packet. The method call will block (not return)
|
||||||
* until a packet is available or the <tt>timeout</tt> has elapsed. If the
|
* until a stanza(/packet) is available or the <tt>timeout</tt> has elapsed. If the
|
||||||
* timeout elapses without a result, <tt>null</tt> will be returned.
|
* timeout elapses without a result, <tt>null</tt> will be returned.
|
||||||
*
|
*
|
||||||
* @param timeout the timeout in milliseconds.
|
* @param timeout the timeout in milliseconds.
|
||||||
|
@ -191,7 +191,7 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the next available packet. The method call will block until a packet is available or
|
* Returns the next available packet. The method call will block until a stanza(/packet) is available or
|
||||||
* the connections reply timeout has elapsed. If the timeout elapses without a result,
|
* the connections reply timeout has elapsed. If the timeout elapses without a result,
|
||||||
* <tt>null</tt> will be returned. This method does also cancel the PacketCollector.
|
* <tt>null</tt> will be returned. This method does also cancel the PacketCollector.
|
||||||
*
|
*
|
||||||
|
@ -205,10 +205,10 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the next available packet. The method call will block until a packet is available or
|
* Returns the next available packet. The method call will block until a stanza(/packet) is available or
|
||||||
* the <tt>timeout</tt> has elapsed. This method does also cancel the PacketCollector.
|
* the <tt>timeout</tt> has elapsed. This method does also cancel the PacketCollector.
|
||||||
*
|
*
|
||||||
* @param timeout the amount of time to wait for the next packet (in milleseconds).
|
* @param timeout the amount of time to wait for the next stanza(/packet) (in milleseconds).
|
||||||
* @return the next available packet.
|
* @return the next available packet.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
* @throws XMPPErrorException in case an error response.
|
* @throws XMPPErrorException in case an error response.
|
||||||
|
@ -227,7 +227,7 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the number of collected stanzas this packet collector has collected so far.
|
* Get the number of collected stanzas this stanza(/packet) collector has collected so far.
|
||||||
*
|
*
|
||||||
* @return the count of collected stanzas.
|
* @return the count of collected stanzas.
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
|
@ -237,10 +237,10 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes a packet to see if it meets the criteria for this packet collector.
|
* Processes a stanza(/packet) to see if it meets the criteria for this stanza(/packet) collector.
|
||||||
* If so, the packet is added to the result queue.
|
* If so, the stanza(/packet) is added to the result queue.
|
||||||
*
|
*
|
||||||
* @param packet the packet to process.
|
* @param packet the stanza(/packet) to process.
|
||||||
*/
|
*/
|
||||||
protected void processPacket(Stanza packet) {
|
protected void processPacket(Stanza packet) {
|
||||||
if (packetFilter == null || packetFilter.accept(packet)) {
|
if (packetFilter == null || packetFilter.accept(packet)) {
|
||||||
|
@ -263,9 +263,9 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a new packet collector configuration instance.
|
* Get a new stanza(/packet) collector configuration instance.
|
||||||
*
|
*
|
||||||
* @return a new packet collector configuration.
|
* @return a new stanza(/packet) collector configuration.
|
||||||
*/
|
*/
|
||||||
public static Configuration newConfiguration() {
|
public static Configuration newConfiguration() {
|
||||||
return new Configuration();
|
return new Configuration();
|
||||||
|
@ -280,7 +280,7 @@ public class PacketCollector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the packet filter used by this collector. If <code>null</code>, then all packets will
|
* Set the stanza(/packet) filter used by this collector. If <code>null</code>, then all packets will
|
||||||
* get collected by this collector.
|
* get collected by this collector.
|
||||||
*
|
*
|
||||||
* @param packetFilter
|
* @param packetFilter
|
||||||
|
|
|
@ -26,19 +26,26 @@ import java.util.Random;
|
||||||
import java.util.WeakHashMap;
|
import java.util.WeakHashMap;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the automatic reconnection process. Every time a connection is dropped without
|
* Handles the automatic reconnection process. Every time a connection is dropped without
|
||||||
* the application explicitly closing it, the manager automatically tries to reconnect to
|
* the application explicitly closing it, the manager automatically tries to reconnect to
|
||||||
* the server.<p>
|
* the server.<p>
|
||||||
*
|
*
|
||||||
* The reconnection mechanism will try to reconnect periodically:
|
* There are two possible reconnection policies:
|
||||||
|
*
|
||||||
|
* {@link ReconnectionPolicy#RANDOM_INCREASING_DELAY} - The reconnection mechanism will try to reconnect periodically:
|
||||||
* <ol>
|
* <ol>
|
||||||
* <li>For the first minute it will attempt to connect once every ten seconds.
|
* <li>For the first minute it will attempt to connect once every ten seconds.
|
||||||
* <li>For the next five minutes it will attempt to connect once a minute.
|
* <li>For the next five minutes it will attempt to connect once a minute.
|
||||||
* <li>If that fails it will indefinitely try to connect once every five minutes.
|
* <li>If that fails it will indefinitely try to connect once every five minutes.
|
||||||
* </ol>
|
* </ol>
|
||||||
*
|
*
|
||||||
|
* {@link ReconnectionPolicy#FIXED_DELAY} - The reconnection mechanism will try to reconnect after a fixed delay
|
||||||
|
* independently from the number of reconnection attempts already performed
|
||||||
|
*
|
||||||
* @author Francisco Vives
|
* @author Francisco Vives
|
||||||
|
* @author Luca Stucchi
|
||||||
*/
|
*/
|
||||||
public class ReconnectionManager {
|
public class ReconnectionManager {
|
||||||
private static final Logger LOGGER = Logger.getLogger(ReconnectionManager.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(ReconnectionManager.class.getName());
|
||||||
|
@ -96,6 +103,52 @@ public class ReconnectionManager {
|
||||||
private final int randomBase = new Random().nextInt(13) + 2; // between 2 and 15 seconds
|
private final int randomBase = new Random().nextInt(13) + 2; // between 2 and 15 seconds
|
||||||
private final Runnable reconnectionRunnable;
|
private final Runnable reconnectionRunnable;
|
||||||
|
|
||||||
|
private static int defaultFixedDelay = 15;
|
||||||
|
private static ReconnectionPolicy defaultReconnectionPolicy = ReconnectionPolicy.RANDOM_INCREASING_DELAY;
|
||||||
|
|
||||||
|
private volatile int fixedDelay = defaultFixedDelay;
|
||||||
|
private volatile ReconnectionPolicy reconnectionPolicy = defaultReconnectionPolicy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default fixed delay in seconds between the reconnection attempts. Also set the
|
||||||
|
* default connection policy to {@link ReconnectionPolicy#FIXED_DELAY}
|
||||||
|
*
|
||||||
|
* @param fixedDelay Delay expressed in seconds
|
||||||
|
*/
|
||||||
|
public static void setDefaultFixedDelay(int fixedDelay) {
|
||||||
|
defaultFixedDelay = fixedDelay;
|
||||||
|
setDefaultReconnectionPolicy(ReconnectionPolicy.FIXED_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default Reconnection Policy to use
|
||||||
|
*
|
||||||
|
* @param reconnectionPolicy
|
||||||
|
*/
|
||||||
|
public static void setDefaultReconnectionPolicy(ReconnectionPolicy reconnectionPolicy) {
|
||||||
|
defaultReconnectionPolicy = reconnectionPolicy;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the fixed delay in seconds between the reconnection attempts Also set the connection
|
||||||
|
* policy to {@link ReconnectionPolicy#FIXED_DELAY}
|
||||||
|
*
|
||||||
|
* @param fixedDelay Delay expressed in seconds
|
||||||
|
*/
|
||||||
|
public void setFixedDelay(int fixedDelay) {
|
||||||
|
this.fixedDelay = fixedDelay;
|
||||||
|
setReconnectionPolicy(ReconnectionPolicy.FIXED_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the Reconnection Policy to use
|
||||||
|
*
|
||||||
|
* @param reconnectionPolicy
|
||||||
|
*/
|
||||||
|
public void setReconnectionPolicy(ReconnectionPolicy reconnectionPolicy) {
|
||||||
|
this.reconnectionPolicy = reconnectionPolicy;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flag that indicates if a reconnection should be attempted when abruptly disconnected
|
* Flag that indicates if a reconnection should be attempted when abruptly disconnected
|
||||||
*/
|
*/
|
||||||
|
@ -122,13 +175,27 @@ public class ReconnectionManager {
|
||||||
*/
|
*/
|
||||||
private int timeDelay() {
|
private int timeDelay() {
|
||||||
attempts++;
|
attempts++;
|
||||||
if (attempts > 13) {
|
|
||||||
return randomBase * 6 * 5; // between 2.5 and 7.5 minutes (~5 minutes)
|
// Delay variable to be assigned
|
||||||
|
int delay;
|
||||||
|
switch (reconnectionPolicy) {
|
||||||
|
case FIXED_DELAY:
|
||||||
|
delay = fixedDelay;
|
||||||
|
break;
|
||||||
|
case RANDOM_INCREASING_DELAY:
|
||||||
|
if (attempts > 13) {
|
||||||
|
delay = randomBase * 6 * 5; // between 2.5 and 7.5 minutes (~5 minutes)
|
||||||
|
}
|
||||||
|
if (attempts > 7) {
|
||||||
|
delay = randomBase * 6; // between 30 and 90 seconds (~1 minutes)
|
||||||
|
}
|
||||||
|
delay = randomBase; // 10 seconds
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new AssertionError("Unknown reconnection policy " + reconnectionPolicy);
|
||||||
}
|
}
|
||||||
if (attempts > 7) {
|
|
||||||
return randomBase * 6; // between 30 and 90 seconds (~1 minutes)
|
return delay;
|
||||||
}
|
|
||||||
return randomBase; // 10 seconds
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -287,4 +354,22 @@ public class ReconnectionManager {
|
||||||
reconnect();
|
reconnect();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reconnection Policy, where {@link ReconnectionPolicy#RANDOM_INCREASING_DELAY} is the default policy used by smack and {@link ReconnectionPolicy#FIXED_DELAY} implies
|
||||||
|
* a fixed amount of time between reconnection attempts
|
||||||
|
*/
|
||||||
|
public enum ReconnectionPolicy {
|
||||||
|
/**
|
||||||
|
* Default policy classically used by smack, having an increasing delay related to the
|
||||||
|
* overall number of attempts
|
||||||
|
*/
|
||||||
|
RANDOM_INCREASING_DELAY,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Policy using fixed amount of time between reconnection attempts
|
||||||
|
*/
|
||||||
|
FIXED_DELAY,
|
||||||
|
;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,7 +124,7 @@ public final class SmackConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the default max size of a packet collector before it will delete
|
* Gets the default max size of a stanza(/packet) collector before it will delete
|
||||||
* the older packets.
|
* the older packets.
|
||||||
*
|
*
|
||||||
* @return The number of packets to queue before deleting older packets.
|
* @return The number of packets to queue before deleting older packets.
|
||||||
|
@ -134,7 +134,7 @@ public final class SmackConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the default max size of a packet collector before it will delete
|
* Sets the default max size of a stanza(/packet) collector before it will delete
|
||||||
* the older packets.
|
* the older packets.
|
||||||
*
|
*
|
||||||
* @param collectorSize the number of packets to queue before deleting older packets.
|
* @param collectorSize the number of packets to queue before deleting older packets.
|
||||||
|
|
|
@ -56,8 +56,8 @@ public class SmackException extends Exception {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exception thrown always when there was no response to an request within the packet reply timeout of the used
|
* Exception thrown always when there was no response to an request within the stanza(/packet) reply timeout of the used
|
||||||
* connection instance. You can modify (e.g. increase) the packet reply timeout with
|
* connection instance. You can modify (e.g. increase) the stanza(/packet) reply timeout with
|
||||||
* {@link XMPPConnection#setPacketReplyTimeout(long)}.
|
* {@link XMPPConnection#setPacketReplyTimeout(long)}.
|
||||||
*/
|
*/
|
||||||
public static class NoResponseException extends SmackException {
|
public static class NoResponseException extends SmackException {
|
||||||
|
|
|
@ -22,7 +22,7 @@ import org.jivesoftware.smack.packet.Stanza;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides a mechanism to listen for packets that pass a specified filter.
|
* Provides a mechanism to listen for packets that pass a specified filter.
|
||||||
* This allows event-style programming -- every time a new packet is found,
|
* This allows event-style programming -- every time a new stanza(/packet) is found,
|
||||||
* the {@link #processPacket(Stanza)} method will be called. This is the
|
* the {@link #processPacket(Stanza)} method will be called. This is the
|
||||||
* opposite approach to the functionality provided by a {@link PacketCollector}
|
* opposite approach to the functionality provided by a {@link PacketCollector}
|
||||||
* which lets you block while waiting for results.
|
* which lets you block while waiting for results.
|
||||||
|
@ -39,14 +39,14 @@ import org.jivesoftware.smack.packet.Stanza;
|
||||||
public interface StanzaListener {
|
public interface StanzaListener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process the next packet sent to this packet listener.
|
* Process the next stanza(/packet) sent to this stanza(/packet) listener.
|
||||||
* <p>
|
* <p>
|
||||||
* A single thread is responsible for invoking all listeners, so
|
* A single thread is responsible for invoking all listeners, so
|
||||||
* it's very important that implementations of this method not block
|
* it's very important that implementations of this method not block
|
||||||
* for any extended period of time.
|
* for any extended period of time.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param packet the packet to process.
|
* @param packet the stanza(/packet) to process.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -155,9 +155,9 @@ public interface XMPPConnection {
|
||||||
public boolean isUsingCompression();
|
public boolean isUsingCompression();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the specified packet to the server.
|
* Sends the specified stanza(/packet) to the server.
|
||||||
*
|
*
|
||||||
* @param packet the packet to send.
|
* @param packet the stanza(/packet) to send.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
* @deprecated use {@link #sendStanza(Stanza)} instead.
|
* @deprecated use {@link #sendStanza(Stanza)} instead.
|
||||||
|
@ -204,27 +204,27 @@ public interface XMPPConnection {
|
||||||
public void removeConnectionListener(ConnectionListener connectionListener);
|
public void removeConnectionListener(ConnectionListener connectionListener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet collector collecting packets that are replies to <code>packet</code>.
|
* Creates a new stanza(/packet) collector collecting packets that are replies to <code>packet</code>.
|
||||||
* Does also send <code>packet</code>. The packet filter for the collector is an
|
* Does also send <code>packet</code>. The stanza(/packet) filter for the collector is an
|
||||||
* {@link IQReplyFilter}, guaranteeing that packet id and JID in the 'from' address have
|
* {@link IQReplyFilter}, guaranteeing that stanza(/packet) id and JID in the 'from' address have
|
||||||
* expected values.
|
* expected values.
|
||||||
*
|
*
|
||||||
* @param packet the packet to filter responses from
|
* @param packet the stanza(/packet) to filter responses from
|
||||||
* @return a new packet collector.
|
* @return a new stanza(/packet) collector.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public PacketCollector createPacketCollectorAndSend(IQ packet) throws NotConnectedException, InterruptedException;
|
public PacketCollector createPacketCollectorAndSend(IQ packet) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet collector for this connection. A packet filter determines
|
* Creates a new stanza(/packet) collector for this connection. A stanza(/packet) filter determines
|
||||||
* which packets will be accumulated by the collector. A PacketCollector is
|
* which packets will be accumulated by the collector. A PacketCollector is
|
||||||
* more suitable to use than a {@link StanzaListener} when you need to wait for
|
* more suitable to use than a {@link StanzaListener} when you need to wait for
|
||||||
* a specific result.
|
* a specific result.
|
||||||
*
|
*
|
||||||
* @param packetFilter the packet filter to use.
|
* @param packetFilter the stanza(/packet) filter to use.
|
||||||
* @param packet the packet to send right after the collector got created
|
* @param packet the packet to send right after the collector got created
|
||||||
* @return a new packet collector.
|
* @return a new stanza(/packet) collector.
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
*/
|
*/
|
||||||
|
@ -232,54 +232,54 @@ public interface XMPPConnection {
|
||||||
throws NotConnectedException, InterruptedException;
|
throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet collector for this connection. A packet filter
|
* Creates a new stanza(/packet) collector for this connection. A stanza(/packet) filter
|
||||||
* determines which packets will be accumulated by the collector. A
|
* determines which packets will be accumulated by the collector. A
|
||||||
* PacketCollector is more suitable to use than a {@link StanzaListener}
|
* PacketCollector is more suitable to use than a {@link StanzaListener}
|
||||||
* when you need to wait for a specific result.
|
* when you need to wait for a specific result.
|
||||||
* <p>
|
* <p>
|
||||||
* <b>Note:</b> If you send a Packet right after using this method, then
|
* <b>Note:</b> If you send a Stanza(/Packet) right after using this method, then
|
||||||
* consider using
|
* consider using
|
||||||
* {@link #createPacketCollectorAndSend(StanzaFilter, Stanza)} instead.
|
* {@link #createPacketCollectorAndSend(StanzaFilter, Stanza)} instead.
|
||||||
* Otherwise make sure cancel the PacketCollector in every case, e.g. even
|
* Otherwise make sure cancel the PacketCollector in every case, e.g. even
|
||||||
* if an exception is thrown, or otherwise you may leak the PacketCollector.
|
* if an exception is thrown, or otherwise you may leak the PacketCollector.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param packetFilter the packet filter to use.
|
* @param packetFilter the stanza(/packet) filter to use.
|
||||||
* @return a new packet collector.
|
* @return a new stanza(/packet) collector.
|
||||||
*/
|
*/
|
||||||
public PacketCollector createPacketCollector(StanzaFilter packetFilter);
|
public PacketCollector createPacketCollector(StanzaFilter packetFilter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new packet collector with the given packet collector configuration.
|
* Create a new stanza(/packet) collector with the given stanza(/packet) collector configuration.
|
||||||
* <p>
|
* <p>
|
||||||
* Please make sure to cancel the collector when it is no longer required. See also
|
* Please make sure to cancel the collector when it is no longer required. See also
|
||||||
* {@link #createPacketCollector(StanzaFilter)}.
|
* {@link #createPacketCollector(StanzaFilter)}.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param configuration the packet collector configuration.
|
* @param configuration the stanza(/packet) collector configuration.
|
||||||
* @return a new packet collector.
|
* @return a new stanza(/packet) collector.
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public PacketCollector createPacketCollector(PacketCollector.Configuration configuration);
|
public PacketCollector createPacketCollector(PacketCollector.Configuration configuration);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a packet collector of this connection.
|
* Remove a stanza(/packet) collector of this connection.
|
||||||
*
|
*
|
||||||
* @param collector a packet collectors which was created for this connection.
|
* @param collector a stanza(/packet) collectors which was created for this connection.
|
||||||
*/
|
*/
|
||||||
public void removePacketCollector(PacketCollector collector);
|
public void removePacketCollector(PacketCollector collector);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a packet listener with this connection.
|
* Registers a stanza(/packet) listener with this connection.
|
||||||
* <p>
|
* <p>
|
||||||
* This method has been deprecated. It is important to differentiate between using an asynchronous packet listener
|
* This method has been deprecated. It is important to differentiate between using an asynchronous stanza(/packet) listener
|
||||||
* (preferred where possible) and a synchronous packet lister. Refer
|
* (preferred where possible) and a synchronous stanza(/packet) lister. Refer
|
||||||
* {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)} and
|
* {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)} and
|
||||||
* {@link #addSyncStanzaListener(StanzaListener, StanzaFilter)} for more information.
|
* {@link #addSyncStanzaListener(StanzaListener, StanzaFilter)} for more information.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param packetListener the packet listener to notify of new received packets.
|
* @param packetListener the stanza(/packet) listener to notify of new received packets.
|
||||||
* @param packetFilter the packet filter to use.
|
* @param packetFilter the stanza(/packet) filter to use.
|
||||||
* @deprecated use {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)} or
|
* @deprecated use {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)} or
|
||||||
* {@link #addSyncStanzaListener(StanzaListener, StanzaFilter)}.
|
* {@link #addSyncStanzaListener(StanzaListener, StanzaFilter)}.
|
||||||
*/
|
*/
|
||||||
|
@ -287,107 +287,107 @@ public interface XMPPConnection {
|
||||||
public void addPacketListener(StanzaListener packetListener, StanzaFilter packetFilter);
|
public void addPacketListener(StanzaListener packetListener, StanzaFilter packetFilter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a packet listener for received packets from this connection.
|
* Removes a stanza(/packet) listener for received packets from this connection.
|
||||||
*
|
*
|
||||||
* @param packetListener the packet listener to remove.
|
* @param packetListener the stanza(/packet) listener to remove.
|
||||||
* @return true if the packet listener was removed
|
* @return true if the stanza(/packet) listener was removed
|
||||||
* @deprecated use {@link #removeAsyncStanzaListener(StanzaListener)} or {@link #removeSyncStanzaListener(StanzaListener)}.
|
* @deprecated use {@link #removeAsyncStanzaListener(StanzaListener)} or {@link #removeSyncStanzaListener(StanzaListener)}.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public boolean removePacketListener(StanzaListener packetListener);
|
public boolean removePacketListener(StanzaListener packetListener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a <b>synchronous</b> packet listener with this connection. A packet listener will be invoked only when
|
* Registers a <b>synchronous</b> stanza(/packet) listener with this connection. A stanza(/packet) listener will be invoked only when
|
||||||
* an incoming packet is received. A packet filter determines which packets will be delivered to the listener. If
|
* an incoming stanza(/packet) is received. A stanza(/packet) filter determines which packets will be delivered to the listener. If
|
||||||
* the same packet listener is added again with a different filter, only the new filter will be used.
|
* the same stanza(/packet) listener is added again with a different filter, only the new filter will be used.
|
||||||
* <p>
|
* <p>
|
||||||
* <b>Important:</b> This packet listeners will be called in the same <i>single</i> thread that processes all
|
* <b>Important:</b> This stanza(/packet) listeners will be called in the same <i>single</i> thread that processes all
|
||||||
* incoming stanzas. Only use this kind of packet filter if it does not perform any XMPP activity that waits for a
|
* incoming stanzas. Only use this kind of stanza(/packet) filter if it does not perform any XMPP activity that waits for a
|
||||||
* response. Consider using {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)} when possible, i.e. when
|
* response. Consider using {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)} when possible, i.e. when
|
||||||
* the invocation order doesn't have to be the same as the order of the arriving packets. If the order of the
|
* the invocation order doesn't have to be the same as the order of the arriving packets. If the order of the
|
||||||
* arriving packets, consider using a {@link PacketCollector} when possible.
|
* arriving packets, consider using a {@link PacketCollector} when possible.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param packetListener the packet listener to notify of new received packets.
|
* @param packetListener the stanza(/packet) listener to notify of new received packets.
|
||||||
* @param packetFilter the packet filter to use.
|
* @param packetFilter the stanza(/packet) filter to use.
|
||||||
* @see #addPacketInterceptor(StanzaListener, StanzaFilter)
|
* @see #addPacketInterceptor(StanzaListener, StanzaFilter)
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public void addSyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter);
|
public void addSyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a packet listener for received packets from this connection.
|
* Removes a stanza(/packet) listener for received packets from this connection.
|
||||||
*
|
*
|
||||||
* @param packetListener the packet listener to remove.
|
* @param packetListener the stanza(/packet) listener to remove.
|
||||||
* @return true if the packet listener was removed
|
* @return true if the stanza(/packet) listener was removed
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public boolean removeSyncStanzaListener(StanzaListener packetListener);
|
public boolean removeSyncStanzaListener(StanzaListener packetListener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers an <b>asynchronous</b> packet listener with this connection. A packet listener will be invoked only
|
* Registers an <b>asynchronous</b> stanza(/packet) listener with this connection. A stanza(/packet) listener will be invoked only
|
||||||
* when an incoming packet is received. A packet filter determines which packets will be delivered to the listener.
|
* when an incoming stanza(/packet) is received. A stanza(/packet) filter determines which packets will be delivered to the listener.
|
||||||
* If the same packet listener is added again with a different filter, only the new filter will be used.
|
* If the same stanza(/packet) listener is added again with a different filter, only the new filter will be used.
|
||||||
* <p>
|
* <p>
|
||||||
* Unlike {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)} packet listeners added with this method will be
|
* Unlike {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)} stanza(/packet) listeners added with this method will be
|
||||||
* invoked asynchronously in their own thread. Use this method if the order of the packet listeners must not depend
|
* invoked asynchronously in their own thread. Use this method if the order of the stanza(/packet) listeners must not depend
|
||||||
* on the order how the stanzas where received.
|
* on the order how the stanzas where received.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param packetListener the packet listener to notify of new received packets.
|
* @param packetListener the stanza(/packet) listener to notify of new received packets.
|
||||||
* @param packetFilter the packet filter to use.
|
* @param packetFilter the stanza(/packet) filter to use.
|
||||||
* @see #addPacketInterceptor(StanzaListener, StanzaFilter)
|
* @see #addPacketInterceptor(StanzaListener, StanzaFilter)
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public void addAsyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter);
|
public void addAsyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes an <b>asynchronous</b> packet listener for received packets from this connection.
|
* Removes an <b>asynchronous</b> stanza(/packet) listener for received packets from this connection.
|
||||||
*
|
*
|
||||||
* @param packetListener the packet listener to remove.
|
* @param packetListener the stanza(/packet) listener to remove.
|
||||||
* @return true if the packet listener was removed
|
* @return true if the stanza(/packet) listener was removed
|
||||||
* @since 4.1
|
* @since 4.1
|
||||||
*/
|
*/
|
||||||
public boolean removeAsyncStanzaListener(StanzaListener packetListener);
|
public boolean removeAsyncStanzaListener(StanzaListener packetListener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a packet listener with this connection. The listener will be
|
* Registers a stanza(/packet) listener with this connection. The listener will be
|
||||||
* notified of every packet that this connection sends. A packet filter determines
|
* notified of every stanza(/packet) that this connection sends. A stanza(/packet) filter determines
|
||||||
* which packets will be delivered to the listener. Note that the thread
|
* which packets will be delivered to the listener. Note that the thread
|
||||||
* that writes packets will be used to invoke the listeners. Therefore, each
|
* that writes packets will be used to invoke the listeners. Therefore, each
|
||||||
* packet listener should complete all operations quickly or use a different
|
* stanza(/packet) listener should complete all operations quickly or use a different
|
||||||
* thread for processing.
|
* thread for processing.
|
||||||
*
|
*
|
||||||
* @param packetListener the packet listener to notify of sent packets.
|
* @param packetListener the stanza(/packet) listener to notify of sent packets.
|
||||||
* @param packetFilter the packet filter to use.
|
* @param packetFilter the stanza(/packet) filter to use.
|
||||||
*/
|
*/
|
||||||
public void addPacketSendingListener(StanzaListener packetListener, StanzaFilter packetFilter);
|
public void addPacketSendingListener(StanzaListener packetListener, StanzaFilter packetFilter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a packet listener for sending packets from this connection.
|
* Removes a stanza(/packet) listener for sending packets from this connection.
|
||||||
*
|
*
|
||||||
* @param packetListener the packet listener to remove.
|
* @param packetListener the stanza(/packet) listener to remove.
|
||||||
*/
|
*/
|
||||||
public void removePacketSendingListener(StanzaListener packetListener);
|
public void removePacketSendingListener(StanzaListener packetListener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a packet interceptor with this connection. The interceptor will be
|
* Registers a stanza(/packet) interceptor with this connection. The interceptor will be
|
||||||
* invoked every time a packet is about to be sent by this connection. Interceptors
|
* invoked every time a stanza(/packet) is about to be sent by this connection. Interceptors
|
||||||
* may modify the packet to be sent. A packet filter determines which packets
|
* may modify the stanza(/packet) to be sent. A stanza(/packet) filter determines which packets
|
||||||
* will be delivered to the interceptor.
|
* will be delivered to the interceptor.
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* NOTE: For a similar functionality on incoming packets, see {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)}.
|
* NOTE: For a similar functionality on incoming packets, see {@link #addAsyncStanzaListener(StanzaListener, StanzaFilter)}.
|
||||||
*
|
*
|
||||||
* @param packetInterceptor the packet interceptor to notify of packets about to be sent.
|
* @param packetInterceptor the stanza(/packet) interceptor to notify of packets about to be sent.
|
||||||
* @param packetFilter the packet filter to use.
|
* @param packetFilter the stanza(/packet) filter to use.
|
||||||
*/
|
*/
|
||||||
public void addPacketInterceptor(StanzaListener packetInterceptor, StanzaFilter packetFilter);
|
public void addPacketInterceptor(StanzaListener packetInterceptor, StanzaFilter packetFilter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a packet interceptor.
|
* Removes a stanza(/packet) interceptor.
|
||||||
*
|
*
|
||||||
* @param packetInterceptor the packet interceptor to remove.
|
* @param packetInterceptor the stanza(/packet) interceptor to remove.
|
||||||
*/
|
*/
|
||||||
public void removePacketInterceptor(StanzaListener packetInterceptor);
|
public void removePacketInterceptor(StanzaListener packetInterceptor);
|
||||||
|
|
||||||
|
@ -395,15 +395,15 @@ public interface XMPPConnection {
|
||||||
* Returns the current value of the reply timeout in milliseconds for request for this
|
* Returns the current value of the reply timeout in milliseconds for request for this
|
||||||
* XMPPConnection instance.
|
* XMPPConnection instance.
|
||||||
*
|
*
|
||||||
* @return the packet reply timeout in milliseconds
|
* @return the stanza(/packet) reply timeout in milliseconds
|
||||||
*/
|
*/
|
||||||
public long getPacketReplyTimeout();
|
public long getPacketReplyTimeout();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the packet reply timeout in milliseconds. In most cases, Smack will throw a
|
* Set the stanza(/packet) reply timeout in milliseconds. In most cases, Smack will throw a
|
||||||
* {@link NoResponseException} if no reply to a request was received within the timeout period.
|
* {@link NoResponseException} if no reply to a request was received within the timeout period.
|
||||||
*
|
*
|
||||||
* @param timeout the packet reply timeout in milliseconds
|
* @param timeout the stanza(/packet) reply timeout in milliseconds
|
||||||
*/
|
*/
|
||||||
public void setPacketReplyTimeout(long timeout);
|
public void setPacketReplyTimeout(long timeout);
|
||||||
|
|
||||||
|
@ -449,12 +449,12 @@ public interface XMPPConnection {
|
||||||
public FromMode getFromMode();
|
public FromMode getFromMode();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the feature packet extensions for a given stream feature of the
|
* Get the feature stanza(/packet) extensions for a given stream feature of the
|
||||||
* server, or <code>null</code> if the server doesn't support that feature.
|
* server, or <code>null</code> if the server doesn't support that feature.
|
||||||
*
|
*
|
||||||
* @param element
|
* @param element
|
||||||
* @param namespace
|
* @param namespace
|
||||||
* @return a packet extensions of the feature or <code>null</code>
|
* @return a stanza(/packet) extensions of the feature or <code>null</code>
|
||||||
*/
|
*/
|
||||||
public <F extends ExtensionElement> F getFeature(String element, String namespace);
|
public <F extends ExtensionElement> F getFeature(String element, String namespace);
|
||||||
|
|
||||||
|
@ -572,9 +572,9 @@ public interface XMPPConnection {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a callback that is called exactly once and synchronously with the incoming stanza that matches the given
|
* Add a callback that is called exactly once and synchronously with the incoming stanza that matches the given
|
||||||
* packet filter.
|
* stanza(/packet) filter.
|
||||||
*
|
*
|
||||||
* @param callback the callback invoked once the packet filter matches a stanza.
|
* @param callback the callback invoked once the stanza(/packet) filter matches a stanza.
|
||||||
* @param packetFilter the filter to match stanzas or null to match all.
|
* @param packetFilter the filter to match stanzas or null to match all.
|
||||||
*/
|
*/
|
||||||
public void addOneTimeSyncCallback(StanzaListener callback, StanzaFilter packetFilter);
|
public void addOneTimeSyncCallback(StanzaListener callback, StanzaFilter packetFilter);
|
||||||
|
|
|
@ -79,7 +79,7 @@ public interface SmackDebugger {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the thread that will listen for all incoming packets and write them to the GUI.
|
* Returns the thread that will listen for all incoming packets and write them to the GUI.
|
||||||
* This is what we call "interpreted" packet data, since it's the packet data as Smack sees
|
* This is what we call "interpreted" stanza(/packet) data, since it's the stanza(/packet) data as Smack sees
|
||||||
* it and not as it's coming in as raw XML.
|
* it and not as it's coming in as raw XML.
|
||||||
*
|
*
|
||||||
* @return the PacketListener that will listen for all incoming packets and write them to
|
* @return the PacketListener that will listen for all incoming packets and write them to
|
||||||
|
|
|
@ -20,7 +20,7 @@ package org.jivesoftware.smack.filter;
|
||||||
import org.jivesoftware.smack.packet.Stanza;
|
import org.jivesoftware.smack.packet.Stanza;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements the logical AND operation over two or more packet filters.
|
* Implements the logical AND operation over two or more stanza(/packet) filters.
|
||||||
* In other words, packets pass this filter if they pass <b>all</b> of the filters.
|
* In other words, packets pass this filter if they pass <b>all</b> of the filters.
|
||||||
*
|
*
|
||||||
* @author Matt Tucker
|
* @author Matt Tucker
|
||||||
|
|
|
@ -24,7 +24,7 @@ import org.jxmpp.jid.Jid;
|
||||||
* Filter for packets where the "from" field exactly matches a specified JID. If the specified
|
* Filter for packets where the "from" field exactly matches a specified JID. If the specified
|
||||||
* address is a bare JID then the filter will match any address whose bare JID matches the
|
* address is a bare JID then the filter will match any address whose bare JID matches the
|
||||||
* specified JID. But if the specified address is a full JID then the filter will only match
|
* specified JID. But if the specified address is a full JID then the filter will only match
|
||||||
* if the sender of the packet matches the specified resource.
|
* if the sender of the stanza(/packet) matches the specified resource.
|
||||||
*
|
*
|
||||||
* @author Gaston Dombiak
|
* @author Gaston Dombiak
|
||||||
*/
|
*/
|
||||||
|
@ -42,7 +42,7 @@ public class FromMatchesFilter implements StanzaFilter {
|
||||||
* filter address. The second parameter specifies whether the full or the bare addresses are
|
* filter address. The second parameter specifies whether the full or the bare addresses are
|
||||||
* compared.
|
* compared.
|
||||||
*
|
*
|
||||||
* @param address The address to filter for. If <code>null</code> is given, the packet must not
|
* @param address The address to filter for. If <code>null</code> is given, the stanza(/packet) must not
|
||||||
* have a from address.
|
* have a from address.
|
||||||
* @param ignoreResourcepart
|
* @param ignoreResourcepart
|
||||||
*/
|
*/
|
||||||
|
@ -61,7 +61,7 @@ public class FromMatchesFilter implements StanzaFilter {
|
||||||
* the filter address with the bare from address. Otherwise, compares the filter address
|
* the filter address with the bare from address. Otherwise, compares the filter address
|
||||||
* with the full from address.
|
* with the full from address.
|
||||||
*
|
*
|
||||||
* @param address The address to filter for. If <code>null</code> is given, the packet must not
|
* @param address The address to filter for. If <code>null</code> is given, the stanza(/packet) must not
|
||||||
* have a from address.
|
* have a from address.
|
||||||
*/
|
*/
|
||||||
public static FromMatchesFilter create(Jid address) {
|
public static FromMatchesFilter create(Jid address) {
|
||||||
|
@ -72,7 +72,7 @@ public class FromMatchesFilter implements StanzaFilter {
|
||||||
* Creates a filter matching on the "from" field. Compares the bare version of from and filter
|
* Creates a filter matching on the "from" field. Compares the bare version of from and filter
|
||||||
* address.
|
* address.
|
||||||
*
|
*
|
||||||
* @param address The address to filter for. If <code>null</code> is given, the packet must not
|
* @param address The address to filter for. If <code>null</code> is given, the stanza(/packet) must not
|
||||||
* have a from address.
|
* have a from address.
|
||||||
*/
|
*/
|
||||||
public static FromMatchesFilter createBare(Jid address) {
|
public static FromMatchesFilter createBare(Jid address) {
|
||||||
|
@ -85,7 +85,7 @@ public class FromMatchesFilter implements StanzaFilter {
|
||||||
* Creates a filter matching on the "from" field. Compares the full version of from and filter
|
* Creates a filter matching on the "from" field. Compares the full version of from and filter
|
||||||
* address.
|
* address.
|
||||||
*
|
*
|
||||||
* @param address The address to filter for. If <code>null</code> is given, the packet must not
|
* @param address The address to filter for. If <code>null</code> is given, the stanza(/packet) must not
|
||||||
* have a from address.
|
* have a from address.
|
||||||
*/
|
*/
|
||||||
public static FromMatchesFilter createFull(Jid address) {
|
public static FromMatchesFilter createFull(Jid address) {
|
||||||
|
|
|
@ -29,7 +29,7 @@ import org.jxmpp.jid.Jid;
|
||||||
/**
|
/**
|
||||||
* Filters for packets which are a valid reply to an IQ request.
|
* Filters for packets which are a valid reply to an IQ request.
|
||||||
* <p>
|
* <p>
|
||||||
* Such a packet must have the same packet id and must be an IQ packet of type
|
* Such a stanza(/packet) must have the same stanza(/packet) id and must be an IQ stanza(/packet) of type
|
||||||
* <code>RESULT</code> or <code>ERROR</code>. Moreover, it is necessary to check
|
* <code>RESULT</code> or <code>ERROR</code>. Moreover, it is necessary to check
|
||||||
* the <code>from</code> address to ignore forged replies.
|
* the <code>from</code> address to ignore forged replies.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -62,7 +62,7 @@ public class IQReplyFilter implements StanzaFilter {
|
||||||
/**
|
/**
|
||||||
* Filters for packets which are a valid reply to an IQ request.
|
* Filters for packets which are a valid reply to an IQ request.
|
||||||
* <p>
|
* <p>
|
||||||
* Such a packet must have the same packet id and must be an IQ packet of type
|
* Such a stanza(/packet) must have the same stanza(/packet) id and must be an IQ stanza(/packet) of type
|
||||||
* <code>RESULT</code> or <code>ERROR</code>. Moreover, it is necessary to check
|
* <code>RESULT</code> or <code>ERROR</code>. Moreover, it is necessary to check
|
||||||
* the <code>from</code> address to ignore forged replies.
|
* the <code>from</code> address to ignore forged replies.
|
||||||
* <p>
|
* <p>
|
||||||
|
|
|
@ -21,7 +21,7 @@ import org.jivesoftware.smack.packet.IQ.Type;
|
||||||
import org.jivesoftware.smack.util.Objects;
|
import org.jivesoftware.smack.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A filter for IQ packet types. Returns true only if the packet is an IQ packet
|
* A filter for IQ stanza(/packet) types. Returns true only if the stanza(/packet) is an IQ packet
|
||||||
* and it matches the type provided in the constructor.
|
* and it matches the type provided in the constructor.
|
||||||
*
|
*
|
||||||
* @author Alexander Wenckus
|
* @author Alexander Wenckus
|
||||||
|
|
|
@ -21,7 +21,7 @@ import org.jivesoftware.smack.packet.Stanza;
|
||||||
import org.jivesoftware.smack.util.Objects;
|
import org.jivesoftware.smack.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements the logical NOT operation on a packet filter. In other words, packets
|
* Implements the logical NOT operation on a stanza(/packet) filter. In other words, packets
|
||||||
* pass this filter if they do not pass the supplied filter.
|
* pass this filter if they do not pass the supplied filter.
|
||||||
*
|
*
|
||||||
* @author Matt Tucker
|
* @author Matt Tucker
|
||||||
|
|
|
@ -20,7 +20,7 @@ package org.jivesoftware.smack.filter;
|
||||||
import org.jivesoftware.smack.packet.Stanza;
|
import org.jivesoftware.smack.packet.Stanza;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements the logical OR operation over two or more packet filters. In
|
* Implements the logical OR operation over two or more stanza(/packet) filters. In
|
||||||
* other words, packets pass this filter if they pass <b>any</b> of the filters.
|
* other words, packets pass this filter if they pass <b>any</b> of the filters.
|
||||||
*
|
*
|
||||||
* @author Matt Tucker
|
* @author Matt Tucker
|
||||||
|
|
|
@ -22,7 +22,7 @@ import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
import org.jivesoftware.smack.util.StringUtils;
|
import org.jivesoftware.smack.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filters for packets with a particular type of packet extension.
|
* Filters for packets with a particular type of stanza(/packet) extension.
|
||||||
*
|
*
|
||||||
* @author Matt Tucker
|
* @author Matt Tucker
|
||||||
* @deprecated use {@link StanzaExtensionFilter} instead.
|
* @deprecated use {@link StanzaExtensionFilter} instead.
|
||||||
|
@ -34,12 +34,12 @@ public class PacketExtensionFilter implements StanzaFilter {
|
||||||
private final String namespace;
|
private final String namespace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet extension filter. Packets will pass the filter if
|
* Creates a new stanza(/packet) extension filter. Packets will pass the filter if
|
||||||
* they have a packet extension that matches the specified element name
|
* they have a stanza(/packet) extension that matches the specified element name
|
||||||
* and namespace.
|
* and namespace.
|
||||||
*
|
*
|
||||||
* @param elementName the XML element name of the packet extension.
|
* @param elementName the XML element name of the stanza(/packet) extension.
|
||||||
* @param namespace the XML namespace of the packet extension.
|
* @param namespace the XML namespace of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public PacketExtensionFilter(String elementName, String namespace) {
|
public PacketExtensionFilter(String elementName, String namespace) {
|
||||||
StringUtils.requireNotNullOrEmpty(namespace, "namespace must not be null or empty");
|
StringUtils.requireNotNullOrEmpty(namespace, "namespace must not be null or empty");
|
||||||
|
@ -49,17 +49,17 @@ public class PacketExtensionFilter implements StanzaFilter {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet extension filter. Packets will pass the filter if they have a packet
|
* Creates a new stanza(/packet) extension filter. Packets will pass the filter if they have a packet
|
||||||
* extension that matches the specified namespace.
|
* extension that matches the specified namespace.
|
||||||
*
|
*
|
||||||
* @param namespace the XML namespace of the packet extension.
|
* @param namespace the XML namespace of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public PacketExtensionFilter(String namespace) {
|
public PacketExtensionFilter(String namespace) {
|
||||||
this(null, namespace);
|
this(null, namespace);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet extension filter for the given packet extension.
|
* Creates a new stanza(/packet) extension filter for the given stanza(/packet) extension.
|
||||||
*
|
*
|
||||||
* @param packetExtension
|
* @param packetExtension
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -18,25 +18,25 @@
|
||||||
package org.jivesoftware.smack.filter;
|
package org.jivesoftware.smack.filter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a way to filter packets for particular attributes. Packet filters are used when
|
* Defines a way to filter packets for particular attributes. Stanza(/Packet) filters are used when
|
||||||
* constructing packet listeners or collectors -- the filter defines what packets match the criteria
|
* constructing stanza(/packet) listeners or collectors -- the filter defines what packets match the criteria
|
||||||
* of the collector or listener for further packet processing.
|
* of the collector or listener for further stanza(/packet) processing.
|
||||||
* <p>
|
* <p>
|
||||||
* Several simple filters are pre-defined. These filters can be logically combined for more complex
|
* Several simple filters are pre-defined. These filters can be logically combined for more complex
|
||||||
* packet filtering by using the {@link org.jivesoftware.smack.filter.AndFilter AndFilter} and
|
* stanza(/packet) filtering by using the {@link org.jivesoftware.smack.filter.AndFilter AndFilter} and
|
||||||
* {@link org.jivesoftware.smack.filter.OrFilter OrFilter} filters. It's also possible to define
|
* {@link org.jivesoftware.smack.filter.OrFilter OrFilter} filters. It's also possible to define
|
||||||
* your own filters by implementing this interface. The code example below creates a trivial filter
|
* your own filters by implementing this interface. The code example below creates a trivial filter
|
||||||
* for packets with a specific ID (real code should use {@link StanzaIdFilter} instead).
|
* for packets with a specific ID (real code should use {@link StanzaIdFilter} instead).
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* // Use an anonymous inner class to define a packet filter that returns
|
* // Use an anonymous inner class to define a stanza(/packet) filter that returns
|
||||||
* // all packets that have a packet ID of "RS145".
|
* // all packets that have a stanza(/packet) ID of "RS145".
|
||||||
* PacketFilter myFilter = new PacketFilter() {
|
* PacketFilter myFilter = new PacketFilter() {
|
||||||
* public boolean accept(Packet packet) {
|
* public boolean accept(Packet packet) {
|
||||||
* return "RS145".equals(packet.getStanzaId());
|
* return "RS145".equals(packet.getStanzaId());
|
||||||
* }
|
* }
|
||||||
* };
|
* };
|
||||||
* // Create a new packet collector using the filter we created.
|
* // Create a new stanza(/packet) collector using the filter we created.
|
||||||
* PacketCollector myCollector = packetReader.createPacketCollector(myFilter);
|
* PacketCollector myCollector = packetReader.createPacketCollector(myFilter);
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
|
|
@ -21,7 +21,7 @@ import org.jivesoftware.smack.packet.Stanza;
|
||||||
import org.jivesoftware.smack.util.StringUtils;
|
import org.jivesoftware.smack.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filters for packets with a particular packet ID.
|
* Filters for packets with a particular stanza(/packet) ID.
|
||||||
*
|
*
|
||||||
* @author Matt Tucker
|
* @author Matt Tucker
|
||||||
* @deprecated use {@link StanzaIdFilter} instead.
|
* @deprecated use {@link StanzaIdFilter} instead.
|
||||||
|
@ -32,9 +32,9 @@ public class PacketIDFilter implements StanzaFilter {
|
||||||
private final String packetID;
|
private final String packetID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet ID filter using the specified packet's ID.
|
* Creates a new stanza(/packet) ID filter using the specified packet's ID.
|
||||||
*
|
*
|
||||||
* @param packet the packet which the ID is taken from.
|
* @param packet the stanza(/packet) which the ID is taken from.
|
||||||
* @deprecated use {@link StanzaIdFilter#StanzaIdFilter(Stanza)} instead.
|
* @deprecated use {@link StanzaIdFilter#StanzaIdFilter(Stanza)} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
@ -43,9 +43,9 @@ public class PacketIDFilter implements StanzaFilter {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet ID filter using the specified packet ID.
|
* Creates a new stanza(/packet) ID filter using the specified stanza(/packet) ID.
|
||||||
*
|
*
|
||||||
* @param packetID the packet ID to filter for.
|
* @param packetID the stanza(/packet) ID to filter for.
|
||||||
* @deprecated use {@link StanzaIdFilter#StanzaIdFilter(Stanza)} instead.
|
* @deprecated use {@link StanzaIdFilter#StanzaIdFilter(Stanza)} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class PacketTypeFilter implements StanzaFilter {
|
||||||
private final Class<? extends Stanza> packetType;
|
private final Class<? extends Stanza> packetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet type filter that will filter for packets that are the
|
* Creates a new stanza(/packet) type filter that will filter for packets that are the
|
||||||
* same type as <tt>packetType</tt>.
|
* same type as <tt>packetType</tt>.
|
||||||
*
|
*
|
||||||
* @param packetType the Class type.
|
* @param packetType the Class type.
|
||||||
|
|
|
@ -21,7 +21,7 @@ import org.jivesoftware.smack.packet.Presence.Type;
|
||||||
import org.jivesoftware.smack.util.Objects;
|
import org.jivesoftware.smack.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A filter for Presence types. Returns true only if the stanza is an Presence packet and it matches the type provided in the
|
* A filter for Presence types. Returns true only if the stanza is an Presence stanza(/packet) and it matches the type provided in the
|
||||||
* constructor.
|
* constructor.
|
||||||
*/
|
*/
|
||||||
public class PresenceTypeFilter extends FlexibleStanzaTypeFilter<Presence> {
|
public class PresenceTypeFilter extends FlexibleStanzaTypeFilter<Presence> {
|
||||||
|
|
|
@ -51,7 +51,7 @@ public interface StanzaFilter {
|
||||||
/**
|
/**
|
||||||
* Tests whether or not the specified stanza should pass the filter.
|
* Tests whether or not the specified stanza should pass the filter.
|
||||||
*
|
*
|
||||||
* @param stanza the packet to test.
|
* @param stanza the stanza(/packet) to test.
|
||||||
* @return true if and only if <tt>stanza</tt> passes the filter.
|
* @return true if and only if <tt>stanza</tt> passes the filter.
|
||||||
*/
|
*/
|
||||||
public boolean accept(Stanza stanza);
|
public boolean accept(Stanza stanza);
|
||||||
|
|
|
@ -42,7 +42,7 @@ public final class StanzaTypeFilter implements StanzaFilter {
|
||||||
private final Class<? extends Stanza> packetType;
|
private final Class<? extends Stanza> packetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new packet type filter that will filter for packets that are the
|
* Creates a new stanza(/packet) type filter that will filter for packets that are the
|
||||||
* same type as <tt>packetType</tt>.
|
* same type as <tt>packetType</tt>.
|
||||||
*
|
*
|
||||||
* @param packetType the Class type.
|
* @param packetType the Class type.
|
||||||
|
|
|
@ -84,11 +84,11 @@ public class AbstractError {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the first packet extension that matches the specified element name and
|
* Returns the first stanza(/packet) extension that matches the specified element name and
|
||||||
* namespace, or <tt>null</tt> if it doesn't exist.
|
* namespace, or <tt>null</tt> if it doesn't exist.
|
||||||
*
|
*
|
||||||
* @param elementName the XML element name of the packet extension.
|
* @param elementName the XML element name of the stanza(/packet) extension.
|
||||||
* @param namespace the XML element namespace of the packet extension.
|
* @param namespace the XML element namespace of the stanza(/packet) extension.
|
||||||
* @return the extension, or <tt>null</tt> if it doesn't exist.
|
* @return the extension, or <tt>null</tt> if it doesn't exist.
|
||||||
*/
|
*/
|
||||||
public <PE extends ExtensionElement> PE getExtension(String elementName, String namespace) {
|
public <PE extends ExtensionElement> PE getExtension(String elementName, String namespace) {
|
||||||
|
|
|
@ -20,8 +20,8 @@ package org.jivesoftware.smack.packet;
|
||||||
import org.jxmpp.jid.FullJid;
|
import org.jxmpp.jid.FullJid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IQ packet used by Smack to bind a resource and to obtain the jid assigned by the server.
|
* IQ stanza(/packet) used by Smack to bind a resource and to obtain the jid assigned by the server.
|
||||||
* There are two ways to bind a resource. One is simply sending an empty Bind packet where the
|
* There are two ways to bind a resource. One is simply sending an empty Bind stanza(/packet) where the
|
||||||
* server will assign a new resource for this connection. The other option is to set a desired
|
* server will assign a new resource for this connection. The other option is to set a desired
|
||||||
* resource but the server may return a modified version of the sent resource.<p>
|
* resource but the server may return a modified version of the sent resource.<p>
|
||||||
*
|
*
|
||||||
|
|
|
@ -27,7 +27,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
/**
|
/**
|
||||||
* Default implementation of the ExtensionElement interface. Unless a ExtensionElementProvider
|
* Default implementation of the ExtensionElement interface. Unless a ExtensionElementProvider
|
||||||
* is registered with {@link org.jivesoftware.smack.provider.ProviderManager ProviderManager},
|
* is registered with {@link org.jivesoftware.smack.provider.ProviderManager ProviderManager},
|
||||||
* instances of this class will be returned when getting packet extensions.<p>
|
* instances of this class will be returned when getting stanza(/packet) extensions.<p>
|
||||||
*
|
*
|
||||||
* This class provides a very simple representation of an XML sub-document. Each element
|
* This class provides a very simple representation of an XML sub-document. Each element
|
||||||
* is a key in a Map with its CDATA being the value. For example, given the following
|
* is a key in a Map with its CDATA being the value. For example, given the following
|
||||||
|
@ -53,7 +53,7 @@ public class DefaultExtensionElement implements ExtensionElement {
|
||||||
private Map<String,String> map;
|
private Map<String,String> map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new generic packet extension.
|
* Creates a new generic stanza(/packet) extension.
|
||||||
*
|
*
|
||||||
* @param elementName the name of the element of the XML sub-document.
|
* @param elementName the name of the element of the XML sub-document.
|
||||||
* @param namespace the namespace of the element.
|
* @param namespace the namespace of the element.
|
||||||
|
@ -66,7 +66,7 @@ public class DefaultExtensionElement implements ExtensionElement {
|
||||||
/**
|
/**
|
||||||
* Returns the XML element name of the extension sub-packet root element.
|
* Returns the XML element name of the extension sub-packet root element.
|
||||||
*
|
*
|
||||||
* @return the XML element name of the packet extension.
|
* @return the XML element name of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getElementName() {
|
public String getElementName() {
|
||||||
return elementName;
|
return elementName;
|
||||||
|
@ -75,7 +75,7 @@ public class DefaultExtensionElement implements ExtensionElement {
|
||||||
/**
|
/**
|
||||||
* Returns the XML namespace of the extension sub-packet root element.
|
* Returns the XML namespace of the extension sub-packet root element.
|
||||||
*
|
*
|
||||||
* @return the XML namespace of the packet extension.
|
* @return the XML namespace of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getNamespace() {
|
public String getNamespace() {
|
||||||
return namespace;
|
return namespace;
|
||||||
|
@ -95,7 +95,7 @@ public class DefaultExtensionElement implements ExtensionElement {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an unmodifiable collection of the names that can be used to get
|
* Returns an unmodifiable collection of the names that can be used to get
|
||||||
* values of the packet extension.
|
* values of the stanza(/packet) extension.
|
||||||
*
|
*
|
||||||
* @return the names.
|
* @return the names.
|
||||||
*/
|
*/
|
||||||
|
@ -107,7 +107,7 @@ public class DefaultExtensionElement implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a packet extension value given a name.
|
* Returns a stanza(/packet) extension value given a name.
|
||||||
*
|
*
|
||||||
* @param name the name.
|
* @param name the name.
|
||||||
* @return the value.
|
* @return the value.
|
||||||
|
@ -120,7 +120,7 @@ public class DefaultExtensionElement implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a packet extension value using the given name.
|
* Sets a stanza(/packet) extension value using the given name.
|
||||||
*
|
*
|
||||||
* @param name the name.
|
* @param name the name.
|
||||||
* @param value the value.
|
* @param value the value.
|
||||||
|
|
|
@ -19,14 +19,14 @@ package org.jivesoftware.smack.packet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface to represent a XML element. This is similar to {@link ExtensionElement}, but does not
|
* Interface to represent a XML element. This is similar to {@link ExtensionElement}, but does not
|
||||||
* carry a namespace and is usually included as child element of an packet extension.
|
* carry a namespace and is usually included as child element of an stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public interface Element {
|
public interface Element {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the XML representation of this Element.
|
* Returns the XML representation of this Element.
|
||||||
*
|
*
|
||||||
* @return the packet extension as XML.
|
* @return the stanza(/packet) extension as XML.
|
||||||
*/
|
*/
|
||||||
public CharSequence toXML();
|
public CharSequence toXML();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,12 +25,12 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
/**
|
/**
|
||||||
* The base IQ (Info/Query) packet. IQ packets are used to get and set information
|
* The base IQ (Info/Query) packet. IQ packets are used to get and set information
|
||||||
* on the server, including authentication, roster operations, and creating
|
* on the server, including authentication, roster operations, and creating
|
||||||
* accounts. Each IQ packet has a specific type that indicates what type of action
|
* accounts. Each IQ stanza(/packet) has a specific type that indicates what type of action
|
||||||
* is being taken: "get", "set", "result", or "error".<p>
|
* is being taken: "get", "set", "result", or "error".<p>
|
||||||
*
|
*
|
||||||
* IQ packets can contain a single child element that exists in a specific XML
|
* IQ packets can contain a single child element that exists in a specific XML
|
||||||
* namespace. The combination of the element name and namespace determines what
|
* namespace. The combination of the element name and namespace determines what
|
||||||
* type of IQ packet it is. Some example IQ subpacket snippets:<ul>
|
* type of IQ stanza(/packet) it is. Some example IQ subpacket snippets:<ul>
|
||||||
*
|
*
|
||||||
* <li><query xmlns="jabber:iq:auth"> -- an authentication IQ.
|
* <li><query xmlns="jabber:iq:auth"> -- an authentication IQ.
|
||||||
* <li><query xmlns="jabber:iq:private"> -- a private storage IQ.
|
* <li><query xmlns="jabber:iq:private"> -- a private storage IQ.
|
||||||
|
@ -165,7 +165,7 @@ public abstract class IQ extends Stanza {
|
||||||
/**
|
/**
|
||||||
* This method must be overwritten by IQ subclasses to create their child content. It is important that the builder
|
* This method must be overwritten by IQ subclasses to create their child content. It is important that the builder
|
||||||
* <b>does not include the final end element</b>. This will be done automatically by IQChildelementXmlStringBuilder
|
* <b>does not include the final end element</b>. This will be done automatically by IQChildelementXmlStringBuilder
|
||||||
* after eventual existing packet extensions have been added.
|
* after eventual existing stanza(/packet) extensions have been added.
|
||||||
* <p>
|
* <p>
|
||||||
* For example to create an IQ with a extra attribute and an additional child element
|
* For example to create an IQ with a extra attribute and an additional child element
|
||||||
* </p>
|
* </p>
|
||||||
|
@ -195,7 +195,7 @@ public abstract class IQ extends Stanza {
|
||||||
* xml.attribute("myAttribute", "myAttributeValue");
|
* xml.attribute("myAttribute", "myAttributeValue");
|
||||||
* xml.setEmptyElement();
|
* xml.setEmptyElement();
|
||||||
* </pre>
|
* </pre>
|
||||||
* If your IQ does not contain any attributes or child elements (besides packet extensions), consider sub-classing
|
* If your IQ does not contain any attributes or child elements (besides stanza(/packet) extensions), consider sub-classing
|
||||||
* {@link SimpleIQ} instead.
|
* {@link SimpleIQ} instead.
|
||||||
*
|
*
|
||||||
* @param xml a pre-created builder which already has the child element and the 'xmlns' attribute set.
|
* @param xml a pre-created builder which already has the child element and the 'xmlns' attribute set.
|
||||||
|
@ -206,7 +206,7 @@ public abstract class IQ extends Stanza {
|
||||||
/**
|
/**
|
||||||
* Convenience method to create a new empty {@link Type#result IQ.Type.result}
|
* Convenience method to create a new empty {@link Type#result IQ.Type.result}
|
||||||
* IQ based on a {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set}
|
* IQ based on a {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set}
|
||||||
* IQ. The new packet will be initialized with:<ul>
|
* IQ. The new stanza(/packet) will be initialized with:<ul>
|
||||||
* <li>The sender set to the recipient of the originating IQ.
|
* <li>The sender set to the recipient of the originating IQ.
|
||||||
* <li>The recipient set to the sender of the originating IQ.
|
* <li>The recipient set to the sender of the originating IQ.
|
||||||
* <li>The type set to {@link Type#result IQ.Type.result}.
|
* <li>The type set to {@link Type#result IQ.Type.result}.
|
||||||
|
@ -215,7 +215,7 @@ public abstract class IQ extends Stanza {
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* @param request the {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set} IQ packet.
|
* @param request the {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set} IQ packet.
|
||||||
* @throws IllegalArgumentException if the IQ packet does not have a type of
|
* @throws IllegalArgumentException if the IQ stanza(/packet) does not have a type of
|
||||||
* {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set}.
|
* {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set}.
|
||||||
* @return a new {@link Type#result IQ.Type.result} IQ based on the originating IQ.
|
* @return a new {@link Type#result IQ.Type.result} IQ based on the originating IQ.
|
||||||
*/
|
*/
|
||||||
|
@ -226,7 +226,7 @@ public abstract class IQ extends Stanza {
|
||||||
/**
|
/**
|
||||||
* Convenience method to create a new {@link Type#error IQ.Type.error} IQ
|
* Convenience method to create a new {@link Type#error IQ.Type.error} IQ
|
||||||
* based on a {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set}
|
* based on a {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set}
|
||||||
* IQ. The new packet will be initialized with:<ul>
|
* IQ. The new stanza(/packet) will be initialized with:<ul>
|
||||||
* <li>The sender set to the recipient of the originating IQ.
|
* <li>The sender set to the recipient of the originating IQ.
|
||||||
* <li>The recipient set to the sender of the originating IQ.
|
* <li>The recipient set to the sender of the originating IQ.
|
||||||
* <li>The type set to {@link Type#error IQ.Type.error}.
|
* <li>The type set to {@link Type#error IQ.Type.error}.
|
||||||
|
@ -237,7 +237,7 @@ public abstract class IQ extends Stanza {
|
||||||
*
|
*
|
||||||
* @param request the {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set} IQ packet.
|
* @param request the {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set} IQ packet.
|
||||||
* @param error the error to associate with the created IQ packet.
|
* @param error the error to associate with the created IQ packet.
|
||||||
* @throws IllegalArgumentException if the IQ packet does not have a type of
|
* @throws IllegalArgumentException if the IQ stanza(/packet) does not have a type of
|
||||||
* {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set}.
|
* {@link Type#get IQ.Type.get} or {@link Type#set IQ.Type.set}.
|
||||||
* @return a new {@link Type#error IQ.Type.error} IQ based on the originating IQ.
|
* @return a new {@link Type#error IQ.Type.error} IQ based on the originating IQ.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -19,7 +19,7 @@ package org.jivesoftware.smack.packet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface to represent a XML element. This is similar to {@link ExtensionElement}, but does not
|
* Interface to represent a XML element. This is similar to {@link ExtensionElement}, but does not
|
||||||
* carry a namespace and is usually included as child element of an packet extension.
|
* carry a namespace and is usually included as child element of an stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public interface NamedElement extends Element {
|
public interface NamedElement extends Element {
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ public interface Packet extends TopLevelStreamElement {
|
||||||
public String getPacketID();
|
public String getPacketID();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the unique ID of the packet. To indicate that a packet has no id
|
* Sets the unique ID of the packet. To indicate that a stanza(/packet) has no id
|
||||||
* pass <code>null</code> as the packet's id value.
|
* pass <code>null</code> as the packet's id value.
|
||||||
*
|
*
|
||||||
* @param id the unique ID for the packet.
|
* @param id the unique ID for the packet.
|
||||||
|
@ -63,39 +63,39 @@ public interface Packet extends TopLevelStreamElement {
|
||||||
public void setPacketID(String packetID);
|
public void setPacketID(String packetID);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns who the packet is being sent "to", or <tt>null</tt> if
|
* Returns who the stanza(/packet) is being sent "to", or <tt>null</tt> if
|
||||||
* the value is not set. The XMPP protocol often makes the "to"
|
* the value is not set. The XMPP protocol often makes the "to"
|
||||||
* attribute optional, so it does not always need to be set.<p>
|
* attribute optional, so it does not always need to be set.<p>
|
||||||
*
|
*
|
||||||
* @return who the packet is being sent to, or <tt>null</tt> if the
|
* @return who the stanza(/packet) is being sent to, or <tt>null</tt> if the
|
||||||
* value has not been set.
|
* value has not been set.
|
||||||
*/
|
*/
|
||||||
public String getTo();
|
public String getTo();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets who the packet is being sent "to". The XMPP protocol often makes
|
* Sets who the stanza(/packet) is being sent "to". The XMPP protocol often makes
|
||||||
* the "to" attribute optional, so it does not always need to be set.
|
* the "to" attribute optional, so it does not always need to be set.
|
||||||
*
|
*
|
||||||
* @param to who the packet is being sent to.
|
* @param to who the stanza(/packet) is being sent to.
|
||||||
*/
|
*/
|
||||||
public void setTo(String to);
|
public void setTo(String to);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns who the packet is being sent "from" or <tt>null</tt> if
|
* Returns who the stanza(/packet) is being sent "from" or <tt>null</tt> if
|
||||||
* the value is not set. The XMPP protocol often makes the "from"
|
* the value is not set. The XMPP protocol often makes the "from"
|
||||||
* attribute optional, so it does not always need to be set.<p>
|
* attribute optional, so it does not always need to be set.<p>
|
||||||
*
|
*
|
||||||
* @return who the packet is being sent from, or <tt>null</tt> if the
|
* @return who the stanza(/packet) is being sent from, or <tt>null</tt> if the
|
||||||
* value has not been set.
|
* value has not been set.
|
||||||
*/
|
*/
|
||||||
public String getFrom();
|
public String getFrom();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets who the packet is being sent "from". The XMPP protocol often
|
* Sets who the stanza(/packet) is being sent "from". The XMPP protocol often
|
||||||
* makes the "from" attribute optional, so it does not always need to
|
* makes the "from" attribute optional, so it does not always need to
|
||||||
* be set.
|
* be set.
|
||||||
*
|
*
|
||||||
* @param from who the packet is being sent to.
|
* @param from who the stanza(/packet) is being sent to.
|
||||||
*/
|
*/
|
||||||
public void setFrom(String from);
|
public void setFrom(String from);
|
||||||
|
|
||||||
|
@ -128,16 +128,16 @@ public interface Packet extends TopLevelStreamElement {
|
||||||
public void setLanguage(String language);
|
public void setLanguage(String language);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a copy of the packet extensions attached to the packet.
|
* Returns a copy of the stanza(/packet) extensions attached to the packet.
|
||||||
*
|
*
|
||||||
* @return the packet extensions.
|
* @return the stanza(/packet) extensions.
|
||||||
*/
|
*/
|
||||||
public List<ExtensionElement> getExtensions();
|
public 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 <emph>and</emph> namespace.
|
||||||
* <p>
|
* <p>
|
||||||
* Changes to the returned set will update the 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>
|
||||||
*
|
*
|
||||||
* @param elementName the element name, must not be null.
|
* @param elementName the element name, must not be null.
|
||||||
|
@ -148,20 +148,20 @@ public interface Packet extends TopLevelStreamElement {
|
||||||
public Set<ExtensionElement> getExtensions(String elementName, String namespace);
|
public Set<ExtensionElement> getExtensions(String elementName, String namespace);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the first extension of this packet that has the given namespace.
|
* Returns the first extension of this stanza(/packet) that has the given namespace.
|
||||||
* <p>
|
* <p>
|
||||||
* When possible, use {@link #getExtension(String,String)} instead.
|
* When possible, use {@link #getExtension(String,String)} instead.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param namespace the namespace of the extension that is desired.
|
* @param namespace the namespace of the extension that is desired.
|
||||||
* @return the packet extension with the given namespace.
|
* @return the stanza(/packet) extension with the given namespace.
|
||||||
*/
|
*/
|
||||||
public ExtensionElement getExtension(String namespace);
|
public ExtensionElement getExtension(String namespace);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the first packet extension that matches the specified element name and
|
* Returns the first stanza(/packet) extension that matches the specified element name and
|
||||||
* namespace, or <tt>null</tt> if it doesn't exist. If the provided elementName is null,
|
* namespace, or <tt>null</tt> if it doesn't exist. If the provided elementName is null,
|
||||||
* only the namespace is matched. Packet extensions are
|
* only the namespace is matched. Stanza(/Packet) extensions are
|
||||||
* are arbitrary XML sub-documents in standard XMPP packets. By default, a
|
* are arbitrary XML sub-documents in standard XMPP packets. By default, a
|
||||||
* DefaultPacketExtension instance will be returned for each extension. However,
|
* DefaultPacketExtension instance will be returned for each extension. However,
|
||||||
* PacketExtensionProvider instances can be registered with the
|
* PacketExtensionProvider instances can be registered with the
|
||||||
|
@ -169,59 +169,59 @@ public interface Packet extends TopLevelStreamElement {
|
||||||
* class to handle custom parsing. In that case, the type of the Object
|
* class to handle custom parsing. In that case, the type of the Object
|
||||||
* will be determined by the provider.
|
* will be determined by the provider.
|
||||||
*
|
*
|
||||||
* @param elementName the XML element name of the packet extension. (May be null)
|
* @param elementName the XML element name of the stanza(/packet) extension. (May be null)
|
||||||
* @param namespace the XML element namespace of the packet extension.
|
* @param namespace the XML element namespace of the stanza(/packet) extension.
|
||||||
* @return the extension, or <tt>null</tt> if it doesn't exist.
|
* @return the extension, or <tt>null</tt> if it doesn't exist.
|
||||||
*/
|
*/
|
||||||
public <PE extends ExtensionElement> PE getExtension(String elementName, String namespace);
|
public <PE extends ExtensionElement> PE getExtension(String elementName, String namespace);
|
||||||
/**
|
/**
|
||||||
* Adds a packet extension to the packet. Does nothing if extension is null.
|
* Adds a stanza(/packet) extension to the packet. Does nothing if extension is null.
|
||||||
*
|
*
|
||||||
* @param extension a packet extension.
|
* @param extension a stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public void addExtension(ExtensionElement extension);
|
public void addExtension(ExtensionElement extension);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a collection of packet extensions to the packet. Does nothing if extensions is null.
|
* Adds a collection of stanza(/packet) extensions to the packet. Does nothing if extensions is null.
|
||||||
*
|
*
|
||||||
* @param extensions a collection of packet extensions
|
* @param extensions a collection of stanza(/packet) extensions
|
||||||
*/
|
*/
|
||||||
public void addExtensions(Collection<ExtensionElement> extensions);
|
public void addExtensions(Collection<ExtensionElement> extensions);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a packet extension with the given element and namespace exists.
|
* Check if a stanza(/packet) extension with the given element and namespace exists.
|
||||||
* <p>
|
* <p>
|
||||||
* The argument <code>elementName</code> may be null.
|
* The argument <code>elementName</code> may be null.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param elementName
|
* @param elementName
|
||||||
* @param namespace
|
* @param namespace
|
||||||
* @return true if a packet extension exists, false otherwise.
|
* @return true if a stanza(/packet) extension exists, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean hasExtension(String elementName, String namespace);
|
public boolean hasExtension(String elementName, String namespace);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a packet extension with the given namespace exists.
|
* Check if a stanza(/packet) extension with the given namespace exists.
|
||||||
*
|
*
|
||||||
* @param namespace
|
* @param namespace
|
||||||
* @return true if a packet extension exists, false otherwise.
|
* @return true if a stanza(/packet) extension exists, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean hasExtension(String namespace);
|
public boolean hasExtension(String namespace);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the packet extension with the given elementName and namespace.
|
* Remove the stanza(/packet) extension with the given elementName and namespace.
|
||||||
*
|
*
|
||||||
* @param elementName
|
* @param elementName
|
||||||
* @param namespace
|
* @param namespace
|
||||||
* @return the removed packet extension or null.
|
* @return the removed stanza(/packet) extension or null.
|
||||||
*/
|
*/
|
||||||
public ExtensionElement removeExtension(String elementName, String namespace);
|
public ExtensionElement removeExtension(String elementName, String namespace);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a packet extension from the packet.
|
* Removes a stanza(/packet) extension from the packet.
|
||||||
*
|
*
|
||||||
* @param extension the packet extension to remove.
|
* @param extension the stanza(/packet) extension to remove.
|
||||||
* @return the removed packet extension or null.
|
* @return the removed stanza(/packet) extension or null.
|
||||||
*/
|
*/
|
||||||
public ExtensionElement removeExtension(ExtensionElement extension);
|
public ExtensionElement removeExtension(ExtensionElement extension);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ import org.jivesoftware.smack.util.TypedCloneable;
|
||||||
import org.jivesoftware.smack.util.XmlStringBuilder;
|
import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents XMPP presence packets. Every presence packet has a type, which is one of
|
* Represents XMPP presence packets. Every presence stanza(/packet) has a type, which is one of
|
||||||
* the following values:
|
* the following values:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>{@link Presence.Type#available available} -- (Default) indicates the user is available to
|
* <li>{@link Presence.Type#available available} -- (Default) indicates the user is available to
|
||||||
|
@ -36,7 +36,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
* sender's presence.
|
* sender's presence.
|
||||||
* <li>{@link Presence.Type#unsubscribed unsubscribed} -- grant removal of subscription to
|
* <li>{@link Presence.Type#unsubscribed unsubscribed} -- grant removal of subscription to
|
||||||
* sender's presence.
|
* sender's presence.
|
||||||
* <li>{@link Presence.Type#error error} -- the presence packet contains an error message.
|
* <li>{@link Presence.Type#error error} -- the presence stanza(/packet) contains an error message.
|
||||||
* </ul><p>
|
* </ul><p>
|
||||||
*
|
*
|
||||||
* A number of attributes are optional:
|
* A number of attributes are optional:
|
||||||
|
@ -299,7 +299,7 @@ public final class Presence extends Stanza implements TypedCloneable<Presence> {
|
||||||
unsubscribed,
|
unsubscribed,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The presence packet contains an error message.
|
* The presence stanza(/packet) contains an error message.
|
||||||
*/
|
*/
|
||||||
error,
|
error,
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ package org.jivesoftware.smack.packet;
|
||||||
import org.jivesoftware.smack.util.XmlStringBuilder;
|
import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IQ packet that will be sent to the server to establish a session.<p>
|
* IQ stanza(/packet) that will be sent to the server to establish a session.<p>
|
||||||
*
|
*
|
||||||
* If a server supports sessions, it MUST include a <i>session</i> element in the
|
* If a server supports sessions, it MUST include a <i>session</i> element in the
|
||||||
* stream features it advertises to a client after the completion of stream authentication.
|
* stream features it advertises to a client after the completion of stream authentication.
|
||||||
|
|
|
@ -34,7 +34,7 @@ import java.util.Locale;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for XMPP Stanzas, which are called Packet in older versions of Smack (i.e. < 4.1).
|
* Base class for XMPP Stanzas, which are called Stanza(/Packet) in older versions of Smack (i.e. < 4.1).
|
||||||
* <p>
|
* <p>
|
||||||
* Every stanza has a unique ID (which is automatically generated, but can be overridden). Stanza
|
* Every stanza has a unique ID (which is automatically generated, but can be overridden). Stanza
|
||||||
* IDs are required for IQ stanzas and recommended for presence and message stanzas. Optionally, the
|
* IDs are required for IQ stanzas and recommended for presence and message stanzas. Optionally, the
|
||||||
|
@ -115,7 +115,7 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the unique ID of the packet. To indicate that a packet has no id
|
* Sets the unique ID of the packet. To indicate that a stanza(/packet) has no id
|
||||||
* pass <code>null</code> as the packet's id value.
|
* pass <code>null</code> as the packet's id value.
|
||||||
*
|
*
|
||||||
* @param id the unique ID for the packet.
|
* @param id the unique ID for the packet.
|
||||||
|
@ -150,11 +150,11 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns who the packet is being sent "to", or <tt>null</tt> if
|
* Returns who the stanza(/packet) is being sent "to", or <tt>null</tt> if
|
||||||
* the value is not set. The XMPP protocol often makes the "to"
|
* the value is not set. The XMPP protocol often makes the "to"
|
||||||
* attribute optional, so it does not always need to be set.<p>
|
* attribute optional, so it does not always need to be set.<p>
|
||||||
*
|
*
|
||||||
* @return who the packet is being sent to, or <tt>null</tt> if the
|
* @return who the stanza(/packet) is being sent to, or <tt>null</tt> if the
|
||||||
* value has not been set.
|
* value has not been set.
|
||||||
*/
|
*/
|
||||||
public Jid getTo() {
|
public Jid getTo() {
|
||||||
|
@ -162,10 +162,10 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets who the packet is being sent "to". The XMPP protocol often makes
|
* Sets who the stanza(/packet) is being sent "to". The XMPP protocol often makes
|
||||||
* the "to" attribute optional, so it does not always need to be set.
|
* the "to" attribute optional, so it does not always need to be set.
|
||||||
*
|
*
|
||||||
* @param to who the packet is being sent to.
|
* @param to who the stanza(/packet) is being sent to.
|
||||||
* @throws IllegalArgumentException if to is not a valid JID String.
|
* @throws IllegalArgumentException if to is not a valid JID String.
|
||||||
* @deprecated use {@link #setTo(Jid)} instead.
|
* @deprecated use {@link #setTo(Jid)} instead.
|
||||||
*/
|
*/
|
||||||
|
@ -192,11 +192,11 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns who the packet is being sent "from" or <tt>null</tt> if
|
* Returns who the stanza(/packet) is being sent "from" or <tt>null</tt> if
|
||||||
* the value is not set. The XMPP protocol often makes the "from"
|
* the value is not set. The XMPP protocol often makes the "from"
|
||||||
* attribute optional, so it does not always need to be set.<p>
|
* attribute optional, so it does not always need to be set.<p>
|
||||||
*
|
*
|
||||||
* @return who the packet is being sent from, or <tt>null</tt> if the
|
* @return who the stanza(/packet) is being sent from, or <tt>null</tt> if the
|
||||||
* value has not been set.
|
* value has not been set.
|
||||||
*/
|
*/
|
||||||
public Jid getFrom() {
|
public Jid getFrom() {
|
||||||
|
@ -204,11 +204,11 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets who the packet is being sent "from". The XMPP protocol often
|
* Sets who the stanza(/packet) is being sent "from". The XMPP protocol often
|
||||||
* makes the "from" attribute optional, so it does not always need to
|
* makes the "from" attribute optional, so it does not always need to
|
||||||
* be set.
|
* be set.
|
||||||
*
|
*
|
||||||
* @param from who the packet is being sent to.
|
* @param from who the stanza(/packet) is being sent to.
|
||||||
* @throws IllegalArgumentException if from is not a valid JID String.
|
* @throws IllegalArgumentException if from is not a valid JID String.
|
||||||
* @deprecated use {@link #setFrom(Jid)} instead.
|
* @deprecated use {@link #setFrom(Jid)} instead.
|
||||||
*/
|
*/
|
||||||
|
@ -287,7 +287,7 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
/**
|
/**
|
||||||
* 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 <emph>and</emph> namespace.
|
||||||
* <p>
|
* <p>
|
||||||
* Changes to the returned set will update the 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>
|
||||||
*
|
*
|
||||||
* @param elementName the element name, must not be null.
|
* @param elementName the element name, must not be null.
|
||||||
|
@ -303,13 +303,13 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the first extension of this packet that has the given namespace.
|
* Returns the first extension of this stanza(/packet) that has the given namespace.
|
||||||
* <p>
|
* <p>
|
||||||
* When possible, use {@link #getExtension(String,String)} instead.
|
* When possible, use {@link #getExtension(String,String)} instead.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param namespace the namespace of the extension that is desired.
|
* @param namespace the namespace of the extension that is desired.
|
||||||
* @return the packet extension with the given namespace.
|
* @return the stanza(/packet) extension with the given namespace.
|
||||||
*/
|
*/
|
||||||
public ExtensionElement getExtension(String namespace) {
|
public ExtensionElement getExtension(String namespace) {
|
||||||
return PacketUtil.extensionElementFrom(getExtensions(), null, namespace);
|
return PacketUtil.extensionElementFrom(getExtensions(), null, namespace);
|
||||||
|
@ -347,9 +347,9 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a packet extension to the packet. Does nothing if extension is null.
|
* Adds a stanza(/packet) extension to the packet. Does nothing if extension is null.
|
||||||
*
|
*
|
||||||
* @param extension a packet extension.
|
* @param extension a stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public void addExtension(ExtensionElement extension) {
|
public void addExtension(ExtensionElement extension) {
|
||||||
if (extension == null) return;
|
if (extension == null) return;
|
||||||
|
@ -360,9 +360,9 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a collection of packet extensions to the packet. Does nothing if extensions is null.
|
* Adds a collection of stanza(/packet) extensions to the packet. Does nothing if extensions is null.
|
||||||
*
|
*
|
||||||
* @param extensions a collection of packet extensions
|
* @param extensions a collection of stanza(/packet) extensions
|
||||||
*/
|
*/
|
||||||
public void addExtensions(Collection<ExtensionElement> extensions) {
|
public void addExtensions(Collection<ExtensionElement> extensions) {
|
||||||
if (extensions == null) return;
|
if (extensions == null) return;
|
||||||
|
@ -372,14 +372,14 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a packet extension with the given element and namespace exists.
|
* Check if a stanza(/packet) extension with the given element and namespace exists.
|
||||||
* <p>
|
* <p>
|
||||||
* The argument <code>elementName</code> may be null.
|
* The argument <code>elementName</code> may be null.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param elementName
|
* @param elementName
|
||||||
* @param namespace
|
* @param namespace
|
||||||
* @return true if a packet extension exists, false otherwise.
|
* @return true if a stanza(/packet) extension exists, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean hasExtension(String elementName, String namespace) {
|
public boolean hasExtension(String elementName, String namespace) {
|
||||||
if (elementName == null) {
|
if (elementName == null) {
|
||||||
|
@ -392,10 +392,10 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a packet extension with the given namespace exists.
|
* Check if a stanza(/packet) extension with the given namespace exists.
|
||||||
*
|
*
|
||||||
* @param namespace
|
* @param namespace
|
||||||
* @return true if a packet extension exists, false otherwise.
|
* @return true if a stanza(/packet) extension exists, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean hasExtension(String namespace) {
|
public boolean hasExtension(String namespace) {
|
||||||
synchronized (packetExtensions) {
|
synchronized (packetExtensions) {
|
||||||
|
@ -409,11 +409,11 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the packet extension with the given elementName and namespace.
|
* Remove the stanza(/packet) extension with the given elementName and namespace.
|
||||||
*
|
*
|
||||||
* @param elementName
|
* @param elementName
|
||||||
* @param namespace
|
* @param namespace
|
||||||
* @return the removed packet extension or null.
|
* @return the removed stanza(/packet) extension or null.
|
||||||
*/
|
*/
|
||||||
public ExtensionElement removeExtension(String elementName, String namespace) {
|
public ExtensionElement removeExtension(String elementName, String namespace) {
|
||||||
String key = XmppStringUtils.generateKey(elementName, namespace);
|
String key = XmppStringUtils.generateKey(elementName, namespace);
|
||||||
|
@ -423,10 +423,10 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a packet extension from the packet.
|
* Removes a stanza(/packet) extension from the packet.
|
||||||
*
|
*
|
||||||
* @param extension the packet extension to remove.
|
* @param extension the stanza(/packet) extension to remove.
|
||||||
* @return the removed packet extension or null.
|
* @return the removed stanza(/packet) extension or null.
|
||||||
*/
|
*/
|
||||||
public ExtensionElement removeExtension(ExtensionElement extension) {
|
public ExtensionElement removeExtension(ExtensionElement extension) {
|
||||||
return removeExtension(extension.getElementName(), extension.getNamespace());
|
return removeExtension(extension.getElementName(), extension.getNamespace());
|
||||||
|
@ -440,10 +440,10 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the extension sub-packets (including properties data) as an XML
|
* Returns the extension sub-packets (including properties data) as an XML
|
||||||
* String, or the Empty String if there are no packet extensions.
|
* String, or the Empty String if there are no stanza(/packet) extensions.
|
||||||
*
|
*
|
||||||
* @return the extension sub-packets as XML or the Empty String if there
|
* @return the extension sub-packets as XML or the Empty String if there
|
||||||
* are no packet extensions.
|
* are no stanza(/packet) extensions.
|
||||||
*/
|
*/
|
||||||
protected final XmlStringBuilder getExtensionsXML() {
|
protected final XmlStringBuilder getExtensionsXML() {
|
||||||
XmlStringBuilder xml = new XmlStringBuilder();
|
XmlStringBuilder xml = new XmlStringBuilder();
|
||||||
|
@ -476,7 +476,7 @@ public abstract class Stanza implements TopLevelStreamElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Append an XMPPError is this packet has one set.
|
* Append an XMPPError is this stanza(/packet) has one set.
|
||||||
*
|
*
|
||||||
* @param xml the XmlStringBuilder to append the error to.
|
* @param xml the XmlStringBuilder to append the error to.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -27,7 +27,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents an XMPP error sub-packet. Typically, a server responds to a request that has
|
* Represents an XMPP error sub-packet. Typically, a server responds to a request that has
|
||||||
* problems by sending the packet back and including an error packet. Each error has a type,
|
* problems by sending the stanza(/packet) back and including an error packet. Each error has a type,
|
||||||
* error condition as well as as an optional text explanation. Typical errors are:<p>
|
* error condition as well as as an optional text explanation. Typical errors are:<p>
|
||||||
*
|
*
|
||||||
* <table border=1>
|
* <table border=1>
|
||||||
|
@ -112,7 +112,7 @@ public class XMPPError extends AbstractError {
|
||||||
* @param type the error type.
|
* @param type the error type.
|
||||||
* @param condition the error condition.
|
* @param condition the error condition.
|
||||||
* @param descriptiveTexts
|
* @param descriptiveTexts
|
||||||
* @param extensions list of packet extensions
|
* @param extensions list of stanza(/packet) extensions
|
||||||
*/
|
*/
|
||||||
public XMPPError(Condition condition, String conditionText, String errorGenerator, Type type, Map<String, String> descriptiveTexts,
|
public XMPPError(Condition condition, String conditionText, String errorGenerator, Type type, Map<String, String> descriptiveTexts,
|
||||||
List<ExtensionElement> extensions) {
|
List<ExtensionElement> extensions) {
|
||||||
|
|
|
@ -23,7 +23,7 @@ package org.jivesoftware.smack.parsing;
|
||||||
* place the parser after the faulty stanza.
|
* place the parser after the faulty stanza.
|
||||||
*
|
*
|
||||||
* Subclasses may or may not override certain methods of this class. Each of these methods will receive the exception
|
* Subclasses may or may not override certain methods of this class. Each of these methods will receive the exception
|
||||||
* that caused the parsing error and an instance of an Unparsed Packet type. The latter can be used to inspect the
|
* that caused the parsing error and an instance of an Unparsed Stanza(/Packet) type. The latter can be used to inspect the
|
||||||
* stanza that caused the parsing error by using the getContent() (for example {@link UnparsablePacket#getContent()})
|
* stanza that caused the parsing error by using the getContent() (for example {@link UnparsablePacket#getContent()})
|
||||||
* method.
|
* method.
|
||||||
*
|
*
|
||||||
|
|
|
@ -19,7 +19,7 @@ package org.jivesoftware.smack.provider;
|
||||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the information required to register a packet extension Provider with the {@link ProviderManager} when using the
|
* Defines the information required to register a stanza(/packet) extension Provider with the {@link ProviderManager} when using the
|
||||||
* {@link ProviderLoader}.
|
* {@link ProviderLoader}.
|
||||||
*
|
*
|
||||||
* @author Robin Collier
|
* @author Robin Collier
|
||||||
|
|
|
@ -64,7 +64,7 @@ import org.jxmpp.util.XmppStringUtils;
|
||||||
* interface, or extend the IQ class. In the former case, each IQProvider is responsible for
|
* interface, or extend the IQ class. In the former case, each IQProvider is responsible for
|
||||||
* parsing the raw XML stream to create an IQ instance. In the latter case, bean introspection
|
* parsing the raw XML stream to create an IQ instance. In the latter case, bean introspection
|
||||||
* is used to try to automatically set properties of the IQ instance using the values found
|
* is used to try to automatically set properties of the IQ instance using the values found
|
||||||
* in the IQ packet XML. For example, an XMPP time packet resembles the following:
|
* in the IQ stanza(/packet) XML. For example, an XMPP time stanza(/packet) resembles the following:
|
||||||
* <pre>
|
* <pre>
|
||||||
* <iq type='result' to='joe@example.com' from='mary@example.com' id='time_1'>
|
* <iq type='result' to='joe@example.com' from='mary@example.com' id='time_1'>
|
||||||
* <query xmlns='jabber:iq:time'>
|
* <query xmlns='jabber:iq:time'>
|
||||||
|
@ -74,13 +74,13 @@ import org.jxmpp.util.XmppStringUtils;
|
||||||
* </query>
|
* </query>
|
||||||
* </iq></pre>
|
* </iq></pre>
|
||||||
*
|
*
|
||||||
* In order for this packet to be automatically mapped to the Time object listed in the
|
* In order for this stanza(/packet) to be automatically mapped to the Time object listed in the
|
||||||
* providers file above, it must have the methods setUtc(String), setTz(String), and
|
* providers file above, it must have the methods setUtc(String), setTz(String), and
|
||||||
* setDisplay(String). The introspection service will automatically try to convert the String
|
* setDisplay(String). The introspection service will automatically try to convert the String
|
||||||
* value from the XML into a boolean, int, long, float, double, or Class depending on the
|
* value from the XML into a boolean, int, long, float, double, or Class depending on the
|
||||||
* type the IQ instance expects.<p>
|
* type the IQ instance expects.<p>
|
||||||
*
|
*
|
||||||
* A pluggable system for packet extensions, child elements in a custom namespace for
|
* A pluggable system for stanza(/packet) extensions, child elements in a custom namespace for
|
||||||
* message and presence packets, also exists. Each extension provider
|
* message and presence packets, also exists. Each extension provider
|
||||||
* is registered with a name space in the smack.providers file as in the following example:
|
* is registered with a name space in the smack.providers file as in the following example:
|
||||||
*
|
*
|
||||||
|
@ -95,12 +95,12 @@ import org.jxmpp.util.XmppStringUtils;
|
||||||
* </smackProviders></pre>
|
* </smackProviders></pre>
|
||||||
*
|
*
|
||||||
* If multiple provider entries attempt to register to handle the same element name and namespace,
|
* If multiple provider entries attempt to register to handle the same element name and namespace,
|
||||||
* the first entry loaded from the classpath will take precedence. Whenever a packet extension
|
* the first entry loaded from the classpath will take precedence. Whenever a stanza(/packet) extension
|
||||||
* is found in a packet, parsing will be passed to the correct provider. Each provider
|
* is found in a packet, parsing will be passed to the correct provider. Each provider
|
||||||
* can either implement the PacketExtensionProvider interface or be a standard Java Bean. In
|
* can either implement the PacketExtensionProvider interface or be a standard Java Bean. In
|
||||||
* the former case, each extension provider is responsible for parsing the raw XML stream to
|
* the former case, each extension provider is responsible for parsing the raw XML stream to
|
||||||
* contruct an object. In the latter case, bean introspection is used to try to automatically
|
* contruct an object. In the latter case, bean introspection is used to try to automatically
|
||||||
* set the properties of th class using the values in the packet extension sub-element. When an
|
* set the properties of th class using the values in the stanza(/packet) extension sub-element. When an
|
||||||
* extension provider is not registered for an element name and namespace combination, Smack will
|
* extension provider is not registered for an element name and namespace combination, Smack will
|
||||||
* store all top-level elements of the sub-packet in DefaultPacketExtension object and then
|
* store all top-level elements of the sub-packet in DefaultPacketExtension object and then
|
||||||
* attach it to the packet.<p>
|
* attach it to the packet.<p>
|
||||||
|
@ -146,7 +146,7 @@ public final class ProviderManager {
|
||||||
/**
|
/**
|
||||||
* Returns the IQ provider registered to the specified XML element name and namespace.
|
* Returns the IQ provider registered to the specified XML element name and namespace.
|
||||||
* For example, if a provider was registered to the element name "query" and the
|
* For example, if a provider was registered to the element name "query" and the
|
||||||
* namespace "jabber:iq:time", then the following packet would trigger the provider:
|
* namespace "jabber:iq:time", then the following stanza(/packet) would trigger the provider:
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* <iq type='result' to='joe@example.com' from='mary@example.com' id='time_1'>
|
* <iq type='result' to='joe@example.com' from='mary@example.com' id='time_1'>
|
||||||
|
@ -220,9 +220,9 @@ public final class ProviderManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the packet extension provider registered to the specified XML element name
|
* Returns the stanza(/packet) extension provider registered to the specified XML element name
|
||||||
* and namespace. For example, if a provider was registered to the element name "x" and the
|
* and namespace. For example, if a provider was registered to the element name "x" and the
|
||||||
* namespace "jabber:x:event", then the following packet would trigger the provider:
|
* namespace "jabber:x:event", then the following stanza(/packet) would trigger the provider:
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* <message to='romeo@montague.net' id='message_1'>
|
* <message to='romeo@montague.net' id='message_1'>
|
||||||
|
@ -273,7 +273,7 @@ public final class ProviderManager {
|
||||||
*
|
*
|
||||||
* @param elementName the XML element name.
|
* @param elementName the XML element name.
|
||||||
* @param namespace the XML namespace.
|
* @param namespace the XML namespace.
|
||||||
* @return the key of the removed packet extension provider
|
* @return the key of the removed stanza(/packet) extension provider
|
||||||
*/
|
*/
|
||||||
public static String removeExtensionProvider(String elementName, String namespace) {
|
public static String removeExtensionProvider(String elementName, String namespace) {
|
||||||
String key = getKey(elementName, namespace);
|
String key = getKey(elementName, namespace);
|
||||||
|
|
|
@ -139,7 +139,7 @@ public class PacketParserUtils {
|
||||||
* connection is optional and is used to return feature-not-implemented errors for unknown IQ stanzas.
|
* connection is optional and is used to return feature-not-implemented errors for unknown IQ stanzas.
|
||||||
*
|
*
|
||||||
* @param parser
|
* @param parser
|
||||||
* @return a packet which is either a Message, IQ or Presence.
|
* @return a stanza(/packet) which is either a Message, IQ or Presence.
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public static Stanza parseStanza(XmlPullParser parser) throws Exception {
|
public static Stanza parseStanza(XmlPullParser parser) throws Exception {
|
||||||
|
@ -899,7 +899,7 @@ public class PacketParserUtils {
|
||||||
* Parses an extension element.
|
* Parses an extension element.
|
||||||
*
|
*
|
||||||
* @param elementName the XML element name of the extension element.
|
* @param elementName the XML element name of the extension element.
|
||||||
* @param namespace the XML namespace of the packet extension.
|
* @param namespace the XML namespace of the stanza(/packet) extension.
|
||||||
* @param parser the XML parser, positioned at the starting element of the extension.
|
* @param parser the XML parser, positioned at the starting element of the extension.
|
||||||
* @return an extension element.
|
* @return an extension element.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -44,7 +44,7 @@ import org.jxmpp.stringprep.XmppStringprepException;
|
||||||
*
|
*
|
||||||
* Packets that should be processed by the client to simulate a received stanza
|
* Packets that should be processed by the client to simulate a received stanza
|
||||||
* can be delivered using the {@linkplain #processPacket(Stanza)} method.
|
* can be delivered using the {@linkplain #processPacket(Stanza)} method.
|
||||||
* It invokes the registered packet interceptors and listeners.
|
* It invokes the registered stanza(/packet) interceptors and listeners.
|
||||||
*
|
*
|
||||||
* @see XMPPConnection
|
* @see XMPPConnection
|
||||||
* @author Guenther Niess
|
* @author Guenther Niess
|
||||||
|
@ -154,7 +154,7 @@ public class DummyConnection extends AbstractXMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the first packet that's sent through {@link #sendStanza(Stanza)}
|
* Returns the first stanza(/packet) that's sent through {@link #sendStanza(Stanza)}
|
||||||
* and that has not been returned by earlier calls to this method.
|
* and that has not been returned by earlier calls to this method.
|
||||||
*
|
*
|
||||||
* @return a sent packet.
|
* @return a sent packet.
|
||||||
|
@ -164,7 +164,7 @@ public class DummyConnection extends AbstractXMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the first packet that's sent through {@link #sendStanza(Stanza)}
|
* Returns the first stanza(/packet) that's sent through {@link #sendStanza(Stanza)}
|
||||||
* and that has not been returned by earlier calls to this method. This
|
* and that has not been returned by earlier calls to this method. This
|
||||||
* method will block for up to the specified number of seconds if no packets
|
* method will block for up to the specified number of seconds if no packets
|
||||||
* have been sent yet.
|
* have been sent yet.
|
||||||
|
@ -182,11 +182,11 @@ public class DummyConnection extends AbstractXMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes a packet through the installed packet collectors and listeners
|
* Processes a stanza(/packet) through the installed stanza(/packet) collectors and listeners
|
||||||
* and letting them examine the packet to see if they are a match with the
|
* and letting them examine the stanza(/packet) to see if they are a match with the
|
||||||
* filter.
|
* filter.
|
||||||
*
|
*
|
||||||
* @param packet the packet to process.
|
* @param packet the stanza(/packet) to process.
|
||||||
*/
|
*/
|
||||||
public void processPacket(Stanza packet) {
|
public void processPacket(Stanza packet) {
|
||||||
invokePacketCollectorsAndNotifyRecvListeners(packet);
|
invokePacketCollectorsAndNotifyRecvListeners(packet);
|
||||||
|
|
|
@ -66,8 +66,8 @@ public class ThreadedDummyConnection extends DummyConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calling this method will cause the next sendStanza call with an IQ packet to timeout.
|
* Calling this method will cause the next sendStanza call with an IQ stanza(/packet) to timeout.
|
||||||
* This is accomplished by simply stopping the auto creating of the reply packet
|
* This is accomplished by simply stopping the auto creating of the reply stanza(/packet)
|
||||||
* or processing one that was entered via {@link #processPacket(Stanza)}.
|
* or processing one that was entered via {@link #processPacket(Stanza)}.
|
||||||
*/
|
*/
|
||||||
public void setTimeout() {
|
public void setTimeout() {
|
||||||
|
|
|
@ -794,10 +794,10 @@ public class EnhancedDebugger implements SmackDebugger {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the received packet detail to the messages table.
|
* Adds the received stanza(/packet) detail to the messages table.
|
||||||
*
|
*
|
||||||
* @param dateFormatter the SimpleDateFormat to use to format Dates
|
* @param dateFormatter the SimpleDateFormat to use to format Dates
|
||||||
* @param packet the read packet to add to the table
|
* @param packet the read stanza(/packet) to add to the table
|
||||||
*/
|
*/
|
||||||
private void addReadPacketToTable(final SimpleDateFormat dateFormatter, final Stanza packet) {
|
private void addReadPacketToTable(final SimpleDateFormat dateFormatter, final Stanza packet) {
|
||||||
SwingUtilities.invokeLater(new Runnable() {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
|
@ -855,10 +855,10 @@ public class EnhancedDebugger implements SmackDebugger {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the sent packet detail to the messages table.
|
* Adds the sent stanza(/packet) detail to the messages table.
|
||||||
*
|
*
|
||||||
* @param dateFormatter the SimpleDateFormat to use to format Dates
|
* @param dateFormatter the SimpleDateFormat to use to format Dates
|
||||||
* @param packet the sent packet to add to the table
|
* @param packet the sent stanza(/packet) to add to the table
|
||||||
*/
|
*/
|
||||||
private void addSentPacketToTable(final SimpleDateFormat dateFormatter, final Stanza packet) {
|
private void addSentPacketToTable(final SimpleDateFormat dateFormatter, final Stanza packet) {
|
||||||
SwingUtilities.invokeLater(new Runnable() {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
|
@ -972,7 +972,7 @@ public class EnhancedDebugger implements SmackDebugger {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An ad-hoc packet is like any regular packet but with the exception that it's intention is
|
* An ad-hoc stanza(/packet) is like any regular stanza(/packet) but with the exception that it's intention is
|
||||||
* to be used only <b>to send packets</b>.<p>
|
* to be used only <b>to send packets</b>.<p>
|
||||||
* <p/>
|
* <p/>
|
||||||
* The whole text to send must be passed to the constructor. This implies that the client of
|
* The whole text to send must be passed to the constructor. This implies that the client of
|
||||||
|
@ -986,7 +986,7 @@ public class EnhancedDebugger implements SmackDebugger {
|
||||||
* Create a new AdHocPacket with the text to send. The passed text must be a valid text to
|
* Create a new AdHocPacket with the text to send. The passed text must be a valid text to
|
||||||
* send to the server, no validation will be done on the passed text.
|
* send to the server, no validation will be done on the passed text.
|
||||||
*
|
*
|
||||||
* @param text the whole text of the packet to send
|
* @param text the whole text of the stanza(/packet) to send
|
||||||
*/
|
*/
|
||||||
public AdHocPacket(String text) {
|
public AdHocPacket(String text) {
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
|
|
@ -38,7 +38,7 @@ import org.jivesoftware.smackx.carbons.packet.CarbonExtension.Private;
|
||||||
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
|
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Packet extension for XEP-0280: Message Carbons. This class implements
|
* Stanza(/Packet) extension for XEP-0280: Message Carbons. This class implements
|
||||||
* the manager for registering {@link CarbonExtension} support, enabling and disabling
|
* the manager for registering {@link CarbonExtension} support, enabling and disabling
|
||||||
* message carbons.
|
* message carbons.
|
||||||
*
|
*
|
||||||
|
|
|
@ -22,12 +22,12 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
import org.jivesoftware.smackx.forward.packet.Forwarded;
|
import org.jivesoftware.smackx.forward.packet.Forwarded;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Packet extension for XEP-0280: Message Carbons. The extension
|
* Stanza(/Packet) extension for XEP-0280: Message Carbons. The extension
|
||||||
* <a href="http://xmpp.org/extensions/xep-0280.html">XEP-0280</a> is
|
* <a href="http://xmpp.org/extensions/xep-0280.html">XEP-0280</a> is
|
||||||
* meant to synchronize a message flow to multiple presences of a user.
|
* meant to synchronize a message flow to multiple presences of a user.
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* It accomplishes this by wrapping a {@link Forwarded} packet in a <b>sent</b>
|
* It accomplishes this by wrapping a {@link Forwarded} stanza(/packet) in a <b>sent</b>
|
||||||
* or <b>received</b> element
|
* or <b>received</b> element
|
||||||
*
|
*
|
||||||
* @author Georg Lukas
|
* @author Georg Lukas
|
||||||
|
@ -128,7 +128,7 @@ public class CarbonExtension implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Packet extension indicating that a message may not be carbon-copied. Adding this
|
* Stanza(/Packet) extension indicating that a message may not be carbon-copied. Adding this
|
||||||
* extension to any message will disallow that message from being copied.
|
* extension to any message will disallow that message from being copied.
|
||||||
*/
|
*/
|
||||||
public static class Private implements ExtensionElement {
|
public static class Private implements ExtensionElement {
|
||||||
|
|
|
@ -26,7 +26,7 @@ import org.xmlpull.v1.XmlPullParser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class implements the {@link ExtensionElementProvider} to parse
|
* This class implements the {@link ExtensionElementProvider} to parse
|
||||||
* carbon copied messages from a packet. It will return a {@link CarbonExtension} packet extension.
|
* carbon copied messages from a packet. It will return a {@link CarbonExtension} stanza(/packet) extension.
|
||||||
*
|
*
|
||||||
* @author Georg Lukas
|
* @author Georg Lukas
|
||||||
*
|
*
|
||||||
|
|
|
@ -48,10 +48,10 @@ public class GcmPacketExtension extends AbstractJsonPacketExtension {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the GCM packet extension from the packet.
|
* Retrieve the GCM stanza(/packet) extension from the packet.
|
||||||
*
|
*
|
||||||
* @param packet
|
* @param packet
|
||||||
* @return the GCM packet extension or null.
|
* @return the GCM stanza(/packet) extension or null.
|
||||||
*/
|
*/
|
||||||
public static GcmPacketExtension from(Stanza packet) {
|
public static GcmPacketExtension from(Stanza packet) {
|
||||||
return packet.getExtension(ELEMENT, NAMESPACE);
|
return packet.getExtension(ELEMENT, NAMESPACE);
|
||||||
|
|
|
@ -20,7 +20,7 @@ import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
import org.jivesoftware.smackx.hoxt.HOXTManager;
|
import org.jivesoftware.smackx.hoxt.HOXTManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Packet extension for base64 binary chunks.<p>
|
* Stanza(/Packet) extension for base64 binary chunks.<p>
|
||||||
* This class is immutable.
|
* This class is immutable.
|
||||||
*
|
*
|
||||||
* @author Andriy Tsykholyas
|
* @author Andriy Tsykholyas
|
||||||
|
|
|
@ -28,7 +28,7 @@ import org.xmlpull.v1.XmlPullParserException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract parent for Req and Resp packet providers.
|
* Abstract parent for Req and Resp stanza(/packet) providers.
|
||||||
*
|
*
|
||||||
* @author Andriy Tsykholyas
|
* @author Andriy Tsykholyas
|
||||||
* @see <a href="http://xmpp.org/extensions/xep-0332.html">XEP-0332: HTTP over XMPP transport</a>
|
* @see <a href="http://xmpp.org/extensions/xep-0332.html">XEP-0332: HTTP over XMPP transport</a>
|
||||||
|
|
|
@ -24,7 +24,7 @@ import org.xmlpull.v1.XmlPullParser;
|
||||||
import org.xmlpull.v1.XmlPullParserException;
|
import org.xmlpull.v1.XmlPullParserException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Packet provider for base64 binary chunks.
|
* Stanza(/Packet) provider for base64 binary chunks.
|
||||||
*
|
*
|
||||||
* @author Andriy Tsykholyas
|
* @author Andriy Tsykholyas
|
||||||
* @see <a href="http://xmpp.org/extensions/xep-0332.html">XEP-0332: HTTP over XMPP transport</a>
|
* @see <a href="http://xmpp.org/extensions/xep-0332.html">XEP-0332: HTTP over XMPP transport</a>
|
||||||
|
|
|
@ -21,7 +21,7 @@ import org.jivesoftware.smackx.hoxt.packet.HttpOverXmppReq;
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Req packet provider.
|
* Req stanza(/packet) provider.
|
||||||
*
|
*
|
||||||
* @author Andriy Tsykholyas
|
* @author Andriy Tsykholyas
|
||||||
* @see <a href="http://xmpp.org/extensions/xep-0332.html">XEP-0332: HTTP over XMPP transport</a>
|
* @see <a href="http://xmpp.org/extensions/xep-0332.html">XEP-0332: HTTP over XMPP transport</a>
|
||||||
|
|
|
@ -20,7 +20,7 @@ import org.jivesoftware.smackx.hoxt.packet.HttpOverXmppResp;
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resp packet provider.
|
* Resp stanza(/packet) provider.
|
||||||
*
|
*
|
||||||
* @author Andriy Tsykholyas
|
* @author Andriy Tsykholyas
|
||||||
* @see <a href="http://xmpp.org/extensions/xep-0332.html">XEP-0332: HTTP over XMPP transport</a>
|
* @see <a href="http://xmpp.org/extensions/xep-0332.html">XEP-0332: HTTP over XMPP transport</a>
|
||||||
|
|
|
@ -43,10 +43,10 @@ public class JsonPacketExtension extends AbstractJsonPacketExtension {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the JSON packet extension from the packet.
|
* Retrieve the JSON stanza(/packet) extension from the packet.
|
||||||
*
|
*
|
||||||
* @param packet
|
* @param packet
|
||||||
* @return the JSON packet extension or null.
|
* @return the JSON stanza(/packet) extension or null.
|
||||||
*/
|
*/
|
||||||
public static JsonPacketExtension from(Stanza packet) {
|
public static JsonPacketExtension from(Stanza packet) {
|
||||||
return packet.getExtension(ELEMENT, NAMESPACE);
|
return packet.getExtension(ELEMENT, NAMESPACE);
|
||||||
|
|
|
@ -72,11 +72,11 @@ public class MultipleRecipientInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the received packet should not be replied. Use
|
* Returns true if the received stanza(/packet) should not be replied. Use
|
||||||
* {@link MultipleRecipientManager#reply(org.jivesoftware.smack.XMPPConnection, org.jivesoftware.smack.packet.Message, org.jivesoftware.smack.packet.Message)}
|
* {@link MultipleRecipientManager#reply(org.jivesoftware.smack.XMPPConnection, org.jivesoftware.smack.packet.Message, org.jivesoftware.smack.packet.Message)}
|
||||||
* to send replies.
|
* to send replies.
|
||||||
*
|
*
|
||||||
* @return true if the received packet should not be replied.
|
* @return true if the received stanza(/packet) should not be replied.
|
||||||
*/
|
*/
|
||||||
public boolean shouldNotReply() {
|
public boolean shouldNotReply() {
|
||||||
return !extension.getAddressesOfType(MultipleAddresses.Type.noreply).isEmpty();
|
return !extension.getAddressesOfType(MultipleAddresses.Type.noreply).isEmpty();
|
||||||
|
|
|
@ -47,14 +47,14 @@ import java.util.List;
|
||||||
public class MultipleRecipientManager {
|
public class MultipleRecipientManager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the specified packet to the collection of specified recipients using the
|
* Sends the specified stanza(/packet) to the collection of specified recipients using the
|
||||||
* specified connection. If the server has support for XEP-33 then only one
|
* specified connection. If the server has support for XEP-33 then only one
|
||||||
* packet is going to be sent to the server with the multiple recipient instructions.
|
* stanza(/packet) is going to be sent to the server with the multiple recipient instructions.
|
||||||
* However, if XEP-33 is not supported by the server then the client is going to send
|
* However, if XEP-33 is not supported by the server then the client is going to send
|
||||||
* the packet to each recipient.
|
* the stanza(/packet) to each recipient.
|
||||||
*
|
*
|
||||||
* @param connection the connection to use to send the packet.
|
* @param connection the connection to use to send the packet.
|
||||||
* @param packet the packet to send to the list of recipients.
|
* @param packet the stanza(/packet) to send to the list of recipients.
|
||||||
* @param to the collection of JIDs to include in the TO list or <tt>null</tt> if no TO
|
* @param to the collection of JIDs to include in the TO list or <tt>null</tt> if no TO
|
||||||
* list exists.
|
* list exists.
|
||||||
* @param cc the collection of JIDs to include in the CC list or <tt>null</tt> if no CC
|
* @param cc the collection of JIDs to include in the CC list or <tt>null</tt> if no CC
|
||||||
|
@ -75,13 +75,13 @@ public class MultipleRecipientManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the specified packet to the collection of specified recipients using the specified
|
* Sends the specified stanza(/packet) to the collection of specified recipients using the specified
|
||||||
* connection. If the server has support for XEP-33 then only one packet is going to be sent to
|
* connection. If the server has support for XEP-33 then only one stanza(/packet) is going to be sent to
|
||||||
* the server with the multiple recipient instructions. However, if XEP-33 is not supported by
|
* the server with the multiple recipient instructions. However, if XEP-33 is not supported by
|
||||||
* the server then the client is going to send the packet to each recipient.
|
* the server then the client is going to send the stanza(/packet) to each recipient.
|
||||||
*
|
*
|
||||||
* @param connection the connection to use to send the packet.
|
* @param connection the connection to use to send the packet.
|
||||||
* @param packet the packet to send to the list of recipients.
|
* @param packet the stanza(/packet) to send to the list of recipients.
|
||||||
* @param to the collection of JIDs to include in the TO list or <tt>null</tt> if no TO list exists.
|
* @param to the collection of JIDs to include in the TO list or <tt>null</tt> if no TO list exists.
|
||||||
* @param cc the collection of JIDs to include in the CC list or <tt>null</tt> if no CC list exists.
|
* @param cc the collection of JIDs to include in the CC list or <tt>null</tt> if no CC list exists.
|
||||||
* @param bcc the collection of JIDs to include in the BCC list or <tt>null</tt> if no BCC list
|
* @param bcc the collection of JIDs to include in the BCC list or <tt>null</tt> if no BCC list
|
||||||
|
@ -130,12 +130,12 @@ public class MultipleRecipientManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends a reply to a previously received packet that was sent to multiple recipients. Before
|
* Sends a reply to a previously received stanza(/packet) that was sent to multiple recipients. Before
|
||||||
* attempting to send the reply message some checkings are performed. If any of those checkings
|
* attempting to send the reply message some checkings are performed. If any of those checkings
|
||||||
* fail then an XMPPException is going to be thrown with the specific error detail.
|
* fail then an XMPPException is going to be thrown with the specific error detail.
|
||||||
*
|
*
|
||||||
* @param connection the connection to use to send the reply.
|
* @param connection the connection to use to send the reply.
|
||||||
* @param original the previously received packet that was sent to multiple recipients.
|
* @param original the previously received stanza(/packet) that was sent to multiple recipients.
|
||||||
* @param reply the new message to send as a reply.
|
* @param reply the new message to send as a reply.
|
||||||
* @throws SmackException
|
* @throws SmackException
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
|
@ -190,12 +190,12 @@ public class MultipleRecipientManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the {@link MultipleRecipientInfo} contained in the specified packet or
|
* Returns the {@link MultipleRecipientInfo} contained in the specified stanza(/packet) or
|
||||||
* <tt>null</tt> if none was found. Only packets sent to multiple recipients will
|
* <tt>null</tt> if none was found. Only packets sent to multiple recipients will
|
||||||
* contain such information.
|
* contain such information.
|
||||||
*
|
*
|
||||||
* @param packet the packet to check.
|
* @param packet the stanza(/packet) to check.
|
||||||
* @return the MultipleRecipientInfo contained in the specified packet or <tt>null</tt>
|
* @return the MultipleRecipientInfo contained in the specified stanza(/packet) or <tt>null</tt>
|
||||||
* if none was found.
|
* if none was found.
|
||||||
*/
|
*/
|
||||||
public static MultipleRecipientInfo getMultipleRecipientInfo(Stanza packet) {
|
public static MultipleRecipientInfo getMultipleRecipientInfo(Stanza packet) {
|
||||||
|
@ -291,9 +291,9 @@ public class MultipleRecipientManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Packet that holds the XML stanza to send. This class is useful when the same packet
|
* Stanza(/Packet) that holds the XML stanza to send. This class is useful when the same packet
|
||||||
* is needed to be sent to different recipients. Since using the same packet is not possible
|
* is needed to be sent to different recipients. Since using the same stanza(/packet) is not possible
|
||||||
* (i.e. cannot change the TO address of a queues packet to be sent) then this class was
|
* (i.e. cannot change the TO address of a queues stanza(/packet) to be sent) then this class was
|
||||||
* created to keep the XML stanza to send.
|
* created to keep the XML stanza to send.
|
||||||
*/
|
*/
|
||||||
private static class PacketCopy extends Stanza {
|
private static class PacketCopy extends Stanza {
|
||||||
|
@ -301,10 +301,10 @@ public class MultipleRecipientManager {
|
||||||
private CharSequence text;
|
private CharSequence text;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a copy of a packet with the text to send. The passed text must be a valid text to
|
* Create a copy of a stanza(/packet) with the text to send. The passed text must be a valid text to
|
||||||
* send to the server, no validation will be done on the passed text.
|
* send to the server, no validation will be done on the passed text.
|
||||||
*
|
*
|
||||||
* @param text the whole text of the packet to send
|
* @param text the whole text of the stanza(/packet) to send
|
||||||
*/
|
*/
|
||||||
public PacketCopy(CharSequence text) {
|
public PacketCopy(CharSequence text) {
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
|
|
@ -26,7 +26,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Packet extension that contains the list of addresses that a packet should be sent or was sent.
|
* Stanza(/Packet) extension that contains the list of addresses that a stanza(/packet) should be sent or was sent.
|
||||||
*
|
*
|
||||||
* @author Gaston Dombiak
|
* @author Gaston Dombiak
|
||||||
*/
|
*/
|
||||||
|
@ -55,14 +55,14 @@ public class MultipleAddresses implements ExtensionElement {
|
||||||
private List<Address> addresses = new ArrayList<Address>();
|
private List<Address> addresses = new ArrayList<Address>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a new address to which the packet is going to be sent or was sent.
|
* Adds a new address to which the stanza(/packet) is going to be sent or was sent.
|
||||||
*
|
*
|
||||||
* @param type on of the static type (BCC, CC, NO_REPLY, REPLY_ROOM, etc.)
|
* @param type on of the static type (BCC, CC, NO_REPLY, REPLY_ROOM, etc.)
|
||||||
* @param jid the JID address of the recipient.
|
* @param jid the JID address of the recipient.
|
||||||
* @param node used to specify a sub-addressable unit at a particular JID, corresponding to
|
* @param node used to specify a sub-addressable unit at a particular JID, corresponding to
|
||||||
* a Service Discovery node.
|
* a Service Discovery node.
|
||||||
* @param desc used to specify human-readable information for this address.
|
* @param desc used to specify human-readable information for this address.
|
||||||
* @param delivered true when the packet was already delivered to this address.
|
* @param delivered true when the stanza(/packet) was already delivered to this address.
|
||||||
* @param uri used to specify an external system address, such as a sip:, sips:, or im: URI.
|
* @param uri used to specify an external system address, such as a sip:, sips:, or im: URI.
|
||||||
*/
|
*/
|
||||||
public void addAddress(Type type, Jid jid, String node, String desc, boolean delivered,
|
public void addAddress(Type type, Jid jid, String node, String desc, boolean delivered,
|
||||||
|
@ -79,7 +79,7 @@ public class MultipleAddresses implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicate that the packet being sent should not be replied.
|
* Indicate that the stanza(/packet) being sent should not be replied.
|
||||||
*/
|
*/
|
||||||
public void setNoReply() {
|
public void setNoReply() {
|
||||||
// Create a new address with the specificed configuration
|
// Create a new address with the specificed configuration
|
||||||
|
|
|
@ -129,7 +129,7 @@ public class AMPExtension implements ExtensionElement {
|
||||||
* Returns the XML element name of the extension sub-packet root element.
|
* Returns the XML element name of the extension sub-packet root element.
|
||||||
* Always returns "amp"
|
* Always returns "amp"
|
||||||
*
|
*
|
||||||
* @return the XML element name of the packet extension.
|
* @return the XML element name of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getElementName() {
|
public String getElementName() {
|
||||||
|
@ -140,7 +140,7 @@ public class AMPExtension implements ExtensionElement {
|
||||||
* Returns the XML namespace of the extension sub-packet root element.
|
* Returns the XML namespace of the extension sub-packet root element.
|
||||||
* According the specification the namespace is always "http://jabber.org/protocol/xhtml-im"
|
* According the specification the namespace is always "http://jabber.org/protocol/xhtml-im"
|
||||||
*
|
*
|
||||||
* @return the XML namespace of the packet extension.
|
* @return the XML namespace of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getNamespace() {
|
public String getNamespace() {
|
||||||
|
|
|
@ -32,7 +32,7 @@ public class AMPExtensionProvider extends ExtensionElementProvider<AMPExtension>
|
||||||
private static final Logger LOGGER = Logger.getLogger(AMPExtensionProvider.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(AMPExtensionProvider.class.getName());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a AMPExtension packet (extension sub-packet).
|
* Parses a AMPExtension stanza(/packet) (extension sub-packet).
|
||||||
*
|
*
|
||||||
* @param parser the XML parser, positioned at the starting element of the extension.
|
* @param parser the XML parser, positioned at the starting element of the extension.
|
||||||
* @return a PacketExtension.
|
* @return a PacketExtension.
|
||||||
|
|
|
@ -24,9 +24,9 @@ import org.jivesoftware.smackx.bytestreams.ibb.packet.DataPacketExtension;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DataListener handles all In-Band Bytestream IQ stanzas containing a data
|
* DataListener handles all In-Band Bytestream IQ stanzas containing a data
|
||||||
* packet extension that don't belong to an existing session.
|
* stanza(/packet) extension that don't belong to an existing session.
|
||||||
* <p>
|
* <p>
|
||||||
* If a data packet is received it looks if a stored In-Band Bytestream session
|
* If a data stanza(/packet) is received it looks if a stored In-Band Bytestream session
|
||||||
* exists. If no session with the given session ID exists an
|
* exists. If no session with the given session ID exists an
|
||||||
* <item-not-found/> error is returned to the sender.
|
* <item-not-found/> error is returned to the sender.
|
||||||
* <p>
|
* <p>
|
||||||
|
|
|
@ -50,7 +50,7 @@ import org.jxmpp.jid.Jid;
|
||||||
* in case the Socks5 bytestream method of transferring data is not available.
|
* in case the Socks5 bytestream method of transferring data is not available.
|
||||||
* <p>
|
* <p>
|
||||||
* There are two ways to send data over an In-Band Bytestream. It could either use IQ stanzas to
|
* There are two ways to send data over an In-Band Bytestream. It could either use IQ stanzas to
|
||||||
* send data packets or message stanzas. If IQ stanzas are used every data packet is acknowledged by
|
* send data packets or message stanzas. If IQ stanzas are used every data stanza(/packet) is acknowledged by
|
||||||
* the receiver. This is the recommended way to avoid possible rate-limiting penalties. Message
|
* the receiver. This is the recommended way to avoid possible rate-limiting penalties. Message
|
||||||
* stanzas are not acknowledged because most XMPP server implementation don't support stanza
|
* stanzas are not acknowledged because most XMPP server implementation don't support stanza
|
||||||
* flow-control method like <a href="http://xmpp.org/extensions/xep-0079.html">Advanced Message
|
* flow-control method like <a href="http://xmpp.org/extensions/xep-0079.html">Advanced Message
|
||||||
|
@ -287,7 +287,7 @@ public class InBandBytestreamManager implements BytestreamManager {
|
||||||
* to the initiator.
|
* to the initiator.
|
||||||
* <p>
|
* <p>
|
||||||
* This method should be used if you are awaiting an In-Band Bytestream request as a reply to
|
* This method should be used if you are awaiting an In-Band Bytestream request as a reply to
|
||||||
* another packet (e.g. file transfer).
|
* another stanza(/packet) (e.g. file transfer).
|
||||||
*
|
*
|
||||||
* @param sessionID to be ignored
|
* @param sessionID to be ignored
|
||||||
*/
|
*/
|
||||||
|
@ -439,7 +439,7 @@ public class InBandBytestreamManager implements BytestreamManager {
|
||||||
* Responses to the given IQ packet's sender with an XMPP error that an In-Band Bytestream is
|
* Responses to the given IQ packet's sender with an XMPP error that an In-Band Bytestream is
|
||||||
* not accepted.
|
* not accepted.
|
||||||
*
|
*
|
||||||
* @param request IQ packet that should be answered with a not-acceptable error
|
* @param request IQ stanza(/packet) that should be answered with a not-acceptable error
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
|
@ -453,7 +453,7 @@ public class InBandBytestreamManager implements BytestreamManager {
|
||||||
* Responses to the given IQ packet's sender with an XMPP error that an In-Band Bytestream open
|
* Responses to the given IQ packet's sender with an XMPP error that an In-Band Bytestream open
|
||||||
* request is rejected because its block size is greater than the maximum allowed block size.
|
* request is rejected because its block size is greater than the maximum allowed block size.
|
||||||
*
|
*
|
||||||
* @param request IQ packet that should be answered with a resource-constraint error
|
* @param request IQ stanza(/packet) that should be answered with a resource-constraint error
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
|
@ -467,7 +467,7 @@ public class InBandBytestreamManager implements BytestreamManager {
|
||||||
* Responses to the given IQ packet's sender with an XMPP error that an In-Band Bytestream
|
* Responses to the given IQ packet's sender with an XMPP error that an In-Band Bytestream
|
||||||
* session could not be found.
|
* session could not be found.
|
||||||
*
|
*
|
||||||
* @param request IQ packet that should be answered with a item-not-found error
|
* @param request IQ stanza(/packet) that should be answered with a item-not-found error
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
|
@ -538,7 +538,7 @@ public class InBandBytestreamManager implements BytestreamManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disables the InBandBytestreamManager by removing its packet listeners and resetting its
|
* Disables the InBandBytestreamManager by removing its stanza(/packet) listeners and resetting its
|
||||||
* internal status, which includes removing this instance from the managers map.
|
* internal status, which includes removing this instance from the managers map.
|
||||||
*/
|
*/
|
||||||
private void disableService() {
|
private void disableService() {
|
||||||
|
|
|
@ -231,7 +231,7 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IBBInputStream class is the base implementation of an In-Band Bytestream input stream.
|
* IBBInputStream class is the base implementation of an In-Band Bytestream input stream.
|
||||||
* Subclasses of this input stream must provide a packet listener along with a packet filter to
|
* Subclasses of this input stream must provide a stanza(/packet) listener along with a stanza(/packet) filter to
|
||||||
* collect the In-Band Bytestream data packets.
|
* collect the In-Band Bytestream data packets.
|
||||||
*/
|
*/
|
||||||
private abstract class IBBInputStream extends InputStream {
|
private abstract class IBBInputStream extends InputStream {
|
||||||
|
@ -270,16 +270,16 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the packet listener that processes In-Band Bytestream data packets.
|
* Returns the stanza(/packet) listener that processes In-Band Bytestream data packets.
|
||||||
*
|
*
|
||||||
* @return the data packet listener
|
* @return the data stanza(/packet) listener
|
||||||
*/
|
*/
|
||||||
protected abstract StanzaListener getDataPacketListener();
|
protected abstract StanzaListener getDataPacketListener();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the packet filter that accepts In-Band Bytestream data packets.
|
* Returns the stanza(/packet) filter that accepts In-Band Bytestream data packets.
|
||||||
*
|
*
|
||||||
* @return the data packet filter
|
* @return the data stanza(/packet) filter
|
||||||
*/
|
*/
|
||||||
protected abstract StanzaFilter getDataPacketFilter();
|
protected abstract StanzaFilter getDataPacketFilter();
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method blocks until a data packet is received, the stream is closed or the current
|
* This method blocks until a data stanza(/packet) is received, the stream is closed or the current
|
||||||
* thread is interrupted.
|
* thread is interrupted.
|
||||||
*
|
*
|
||||||
* @return <code>true</code> if data was received, otherwise <code>false</code>
|
* @return <code>true</code> if data was received, otherwise <code>false</code>
|
||||||
|
@ -420,7 +420,7 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method sets the close flag and removes the data packet listener.
|
* This method sets the close flag and removes the data stanza(/packet) listener.
|
||||||
*/
|
*/
|
||||||
private void closeInternal() {
|
private void closeInternal() {
|
||||||
if (isClosed) {
|
if (isClosed) {
|
||||||
|
@ -494,7 +494,7 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
protected StanzaFilter getDataPacketFilter() {
|
protected StanzaFilter getDataPacketFilter() {
|
||||||
/*
|
/*
|
||||||
* filter all IQ stanzas having type 'SET' (represented by Data class), containing a
|
* filter all IQ stanzas having type 'SET' (represented by Data class), containing a
|
||||||
* data packet extension, matching session ID and recipient
|
* data stanza(/packet) extension, matching session ID and recipient
|
||||||
*/
|
*/
|
||||||
return new AndFilter(new StanzaTypeFilter(Data.class), new IBBDataPacketFilter());
|
return new AndFilter(new StanzaTypeFilter(Data.class), new IBBDataPacketFilter());
|
||||||
}
|
}
|
||||||
|
@ -540,7 +540,7 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
@Override
|
@Override
|
||||||
protected StanzaFilter getDataPacketFilter() {
|
protected StanzaFilter getDataPacketFilter() {
|
||||||
/*
|
/*
|
||||||
* filter all message stanzas containing a data packet extension, matching session ID
|
* filter all message stanzas containing a data stanza(/packet) extension, matching session ID
|
||||||
* and recipient
|
* and recipient
|
||||||
*/
|
*/
|
||||||
return new AndFilter(new StanzaTypeFilter(Message.class), new IBBDataPacketFilter());
|
return new AndFilter(new StanzaTypeFilter(Message.class), new IBBDataPacketFilter());
|
||||||
|
@ -550,7 +550,7 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IBBDataPacketFilter class filters all packets from the remote peer of this session,
|
* IBBDataPacketFilter class filters all packets from the remote peer of this session,
|
||||||
* containing an In-Band Bytestream data packet extension whose session ID matches this sessions
|
* containing an In-Band Bytestream data stanza(/packet) extension whose session ID matches this sessions
|
||||||
* ID.
|
* ID.
|
||||||
*/
|
*/
|
||||||
private class IBBDataPacketFilter implements StanzaFilter {
|
private class IBBDataPacketFilter implements StanzaFilter {
|
||||||
|
@ -610,7 +610,7 @@ public class InBandBytestreamSession implements BytestreamSession {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes the given data packet to the XMPP stream.
|
* Writes the given data stanza(/packet) to the XMPP stream.
|
||||||
*
|
*
|
||||||
* @param data the data packet
|
* @param data the data packet
|
||||||
* @throws IOException if an I/O error occurred while sending or if the stream is closed
|
* @throws IOException if an I/O error occurred while sending or if the stream is closed
|
||||||
|
|
|
@ -32,7 +32,7 @@ public class Data extends IQ {
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*
|
*
|
||||||
* @param data data packet extension containing the encoded data
|
* @param data data stanza(/packet) extension containing the encoded data
|
||||||
*/
|
*/
|
||||||
public Data(DataPacketExtension data) {
|
public Data(DataPacketExtension data) {
|
||||||
super(DataPacketExtension.ELEMENT, DataPacketExtension.NAMESPACE);
|
super(DataPacketExtension.ELEMENT, DataPacketExtension.NAMESPACE);
|
||||||
|
@ -45,9 +45,9 @@ public class Data extends IQ {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the data packet extension.
|
* Returns the data stanza(/packet) extension.
|
||||||
*
|
*
|
||||||
* @return the data packet extension
|
* @return the data stanza(/packet) extension
|
||||||
*/
|
*/
|
||||||
public DataPacketExtension getDataPacketExtension() {
|
public DataPacketExtension getDataPacketExtension() {
|
||||||
return this.dataPacketExtension;
|
return this.dataPacketExtension;
|
||||||
|
|
|
@ -30,7 +30,7 @@ import org.jivesoftware.smack.util.stringencoder.Base64;
|
||||||
public class DataPacketExtension implements ExtensionElement {
|
public class DataPacketExtension implements ExtensionElement {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The element name of the data packet extension.
|
* The element name of the data stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public final static String ELEMENT = "data";
|
public final static String ELEMENT = "data";
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ public class DataPacketExtension implements ExtensionElement {
|
||||||
* Creates a new In-Band Bytestream data packet.
|
* Creates a new In-Band Bytestream data packet.
|
||||||
*
|
*
|
||||||
* @param sessionID unique session ID identifying this In-Band Bytestream
|
* @param sessionID unique session ID identifying this In-Band Bytestream
|
||||||
* @param seq sequence of this packet in regard to the other data packets
|
* @param seq sequence of this stanza(/packet) in regard to the other data packets
|
||||||
* @param data the base64 encoded data contained in this packet
|
* @param data the base64 encoded data contained in this packet
|
||||||
*/
|
*/
|
||||||
public DataPacketExtension(String sessionID, long seq, String data) {
|
public DataPacketExtension(String sessionID, long seq, String data) {
|
||||||
|
@ -82,9 +82,9 @@ public class DataPacketExtension implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the sequence of this packet in regard to the other data packets.
|
* Returns the sequence of this stanza(/packet) in regard to the other data packets.
|
||||||
*
|
*
|
||||||
* @return the sequence of this packet in regard to the other data packets.
|
* @return the sequence of this stanza(/packet) in regard to the other data packets.
|
||||||
*/
|
*/
|
||||||
public long getSeq() {
|
public long getSeq() {
|
||||||
return seq;
|
return seq;
|
||||||
|
|
|
@ -24,7 +24,7 @@ import org.xmlpull.v1.XmlPullParser;
|
||||||
import org.xmlpull.v1.XmlPullParserException;
|
import org.xmlpull.v1.XmlPullParserException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses an In-Band Bytestream data packet which can be a packet extension of
|
* Parses an In-Band Bytestream data stanza(/packet) which can be a stanza(/packet) extension of
|
||||||
* either an IQ stanza or a message stanza.
|
* either an IQ stanza or a message stanza.
|
||||||
*
|
*
|
||||||
* @author Henning Staib
|
* @author Henning Staib
|
||||||
|
|
|
@ -268,7 +268,7 @@ public final class Socks5BytestreamManager implements BytestreamManager {
|
||||||
* to the initiator.
|
* to the initiator.
|
||||||
* <p>
|
* <p>
|
||||||
* This method should be used if you are awaiting a SOCKS5 Bytestream request as a reply to
|
* This method should be used if you are awaiting a SOCKS5 Bytestream request as a reply to
|
||||||
* another packet (e.g. file transfer).
|
* another stanza(/packet) (e.g. file transfer).
|
||||||
*
|
*
|
||||||
* @param sessionID to be ignored
|
* @param sessionID to be ignored
|
||||||
*/
|
*/
|
||||||
|
@ -621,10 +621,10 @@ public final class Socks5BytestreamManager implements BytestreamManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a IQ packet to query a SOCKS5 proxy its network settings.
|
* Returns a IQ stanza(/packet) to query a SOCKS5 proxy its network settings.
|
||||||
*
|
*
|
||||||
* @param proxy the proxy to query
|
* @param proxy the proxy to query
|
||||||
* @return IQ packet to query a SOCKS5 proxy its network settings
|
* @return IQ stanza(/packet) to query a SOCKS5 proxy its network settings
|
||||||
*/
|
*/
|
||||||
private static Bytestream createStreamHostRequest(Jid proxy) {
|
private static Bytestream createStreamHostRequest(Jid proxy) {
|
||||||
Bytestream request = new Bytestream();
|
Bytestream request = new Bytestream();
|
||||||
|
@ -673,7 +673,7 @@ public final class Socks5BytestreamManager implements BytestreamManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a SOCKS5 Bytestream initialization request packet with the given session ID
|
* Returns a SOCKS5 Bytestream initialization request stanza(/packet) with the given session ID
|
||||||
* containing the given stream hosts for the given target JID.
|
* containing the given stream hosts for the given target JID.
|
||||||
*
|
*
|
||||||
* @param sessionID the session ID for the SOCKS5 Bytestream
|
* @param sessionID the session ID for the SOCKS5 Bytestream
|
||||||
|
@ -703,7 +703,7 @@ public final class Socks5BytestreamManager implements BytestreamManager {
|
||||||
* Specified in XEP-65 5.3.1 (Example 13)
|
* Specified in XEP-65 5.3.1 (Example 13)
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param packet Packet that should be answered with a not-acceptable error
|
* @param packet Stanza(/Packet) that should be answered with a not-acceptable error
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -101,7 +101,7 @@ class Socks5ClientForInitiator extends Socks5Client {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Activates the SOCKS5 Bytestream by sending an XMPP SOCKS5 Bytestream activation packet to the
|
* Activates the SOCKS5 Bytestream by sending an XMPP SOCKS5 Bytestream activation stanza(/packet) to the
|
||||||
* SOCKS5 proxy.
|
* SOCKS5 proxy.
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
|
|
|
@ -26,7 +26,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
import org.jxmpp.jid.Jid;
|
import org.jxmpp.jid.Jid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A packet representing part of a SOCKS5 Bytestream negotiation.
|
* A stanza(/packet) representing part of a SOCKS5 Bytestream negotiation.
|
||||||
*
|
*
|
||||||
* @author Alexander Wenckus
|
* @author Alexander Wenckus
|
||||||
*/
|
*/
|
||||||
|
@ -199,10 +199,10 @@ public class Bytestream extends IQ {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the activate element of the packet sent to the proxy host to verify the identity of
|
* Returns the activate element of the stanza(/packet) sent to the proxy host to verify the identity of
|
||||||
* the initiator and match them to the appropriate stream.
|
* the initiator and match them to the appropriate stream.
|
||||||
*
|
*
|
||||||
* @return Returns the activate element of the packet sent to the proxy host to verify the
|
* @return Returns the activate element of the stanza(/packet) sent to the proxy host to verify the
|
||||||
* identity of the initiator and match them to the appropriate stream.
|
* identity of the initiator and match them to the appropriate stream.
|
||||||
*/
|
*/
|
||||||
public Activate getToActivate() {
|
public Activate getToActivate() {
|
||||||
|
@ -210,7 +210,7 @@ public class Bytestream extends IQ {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Upon the response from the target of the used host the activate packet is sent to the SOCKS5
|
* Upon the response from the target of the used host the activate stanza(/packet) is sent to the SOCKS5
|
||||||
* proxy. The proxy will activate the stream or return an error after verifying the identity of
|
* proxy. The proxy will activate the stream or return an error after verifying the identity of
|
||||||
* the initiator, using the activate packet.
|
* the initiator, using the activate packet.
|
||||||
*
|
*
|
||||||
|
@ -257,7 +257,7 @@ public class Bytestream extends IQ {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Packet extension that represents a potential SOCKS5 proxy for the file transfer. Stream hosts
|
* Stanza(/Packet) extension that represents a potential SOCKS5 proxy for the file transfer. Stream hosts
|
||||||
* are forwarded to the target of the file transfer who then chooses and connects to one.
|
* are forwarded to the target of the file transfer who then chooses and connects to one.
|
||||||
*
|
*
|
||||||
* @author Alexander Wenckus
|
* @author Alexander Wenckus
|
||||||
|
@ -336,7 +336,7 @@ public class Bytestream extends IQ {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* After selected a SOCKS5 stream host and successfully connecting, the target of the file
|
* After selected a SOCKS5 stream host and successfully connecting, the target of the file
|
||||||
* transfer returns a byte stream packet with the stream host used extension.
|
* transfer returns a byte stream stanza(/packet) with the stream host used extension.
|
||||||
*
|
*
|
||||||
* @author Alexander Wenckus
|
* @author Alexander Wenckus
|
||||||
*/
|
*/
|
||||||
|
@ -378,7 +378,7 @@ public class Bytestream extends IQ {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The packet sent by the stream initiator to the stream proxy to activate the connection.
|
* The stanza(/packet) sent by the stream initiator to the stream proxy to activate the connection.
|
||||||
*
|
*
|
||||||
* @author Alexander Wenckus
|
* @author Alexander Wenckus
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -352,7 +352,7 @@ public class EntityCapsManager extends Manager {
|
||||||
public void processPacket(Stanza packet) {
|
public void processPacket(Stanza packet) {
|
||||||
if (!entityCapsEnabled)
|
if (!entityCapsEnabled)
|
||||||
return;
|
return;
|
||||||
CapsVersionAndHash capsVersionAndHash = getCapsVersion();
|
CapsVersionAndHash capsVersionAndHash = getCapsVersionAndHash();
|
||||||
CapsExtension caps = new CapsExtension(entityNode, capsVersionAndHash.version, capsVersionAndHash.hash);
|
CapsExtension caps = new CapsExtension(entityNode, capsVersionAndHash.version, capsVersionAndHash.hash);
|
||||||
packet.addExtension(caps);
|
packet.addExtension(caps);
|
||||||
}
|
}
|
||||||
|
@ -413,7 +413,7 @@ public class EntityCapsManager extends Manager {
|
||||||
*
|
*
|
||||||
* @return our own caps version
|
* @return our own caps version
|
||||||
*/
|
*/
|
||||||
public CapsVersionAndHash getCapsVersion() {
|
public CapsVersionAndHash getCapsVersionAndHash() {
|
||||||
return currentCapsVersion;
|
return currentCapsVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -425,7 +425,11 @@ public class EntityCapsManager extends Manager {
|
||||||
* @return the local NodeVer
|
* @return the local NodeVer
|
||||||
*/
|
*/
|
||||||
public String getLocalNodeVer() {
|
public String getLocalNodeVer() {
|
||||||
return entityNode + '#' + getCapsVersion();
|
CapsVersionAndHash capsVersionAndHash = getCapsVersionAndHash();
|
||||||
|
if (capsVersionAndHash == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return entityNode + '#' + capsVersionAndHash.version;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -467,13 +471,14 @@ public class EntityCapsManager extends Manager {
|
||||||
|
|
||||||
DiscoverInfo discoverInfo = new DiscoverInfo();
|
DiscoverInfo discoverInfo = new DiscoverInfo();
|
||||||
discoverInfo.setType(IQ.Type.result);
|
discoverInfo.setType(IQ.Type.result);
|
||||||
discoverInfo.setNode(getLocalNodeVer());
|
|
||||||
if (connection != null)
|
|
||||||
discoverInfo.setFrom(connection.getUser());
|
|
||||||
sdm.addDiscoverInfoTo(discoverInfo);
|
sdm.addDiscoverInfoTo(discoverInfo);
|
||||||
|
|
||||||
|
// getLocalNodeVer() will return a result only after currentCapsVersion is set. Therefore
|
||||||
|
// set it first and then call getLocalNodeVer()
|
||||||
currentCapsVersion = generateVerificationString(discoverInfo);
|
currentCapsVersion = generateVerificationString(discoverInfo);
|
||||||
addDiscoverInfoByNode(entityNode + '#' + currentCapsVersion.version, discoverInfo);
|
final String localNodeVer = getLocalNodeVer();
|
||||||
|
discoverInfo.setNode(localNodeVer);
|
||||||
|
addDiscoverInfoByNode(localNodeVer, discoverInfo);
|
||||||
if (lastLocalCapsVersions.size() > 10) {
|
if (lastLocalCapsVersions.size() > 10) {
|
||||||
CapsVersionAndHash oldCapsVersion = lastLocalCapsVersions.poll();
|
CapsVersionAndHash oldCapsVersion = lastLocalCapsVersions.poll();
|
||||||
sdm.removeNodeInformationProvider(entityNode + '#' + oldCapsVersion.version);
|
sdm.removeNodeInformationProvider(entityNode + '#' + oldCapsVersion.version);
|
||||||
|
@ -484,7 +489,7 @@ public class EntityCapsManager extends Manager {
|
||||||
JID_TO_NODEVER_CACHE.put(connection.getUser(), new NodeVerHash(entityNode, currentCapsVersion));
|
JID_TO_NODEVER_CACHE.put(connection.getUser(), new NodeVerHash(entityNode, currentCapsVersion));
|
||||||
|
|
||||||
final List<Identity> identities = new LinkedList<Identity>(ServiceDiscoveryManager.getInstanceFor(connection).getIdentities());
|
final List<Identity> identities = new LinkedList<Identity>(ServiceDiscoveryManager.getInstanceFor(connection).getIdentities());
|
||||||
sdm.setNodeInformationProvider(entityNode + '#' + currentCapsVersion, new AbstractNodeInformationProvider() {
|
sdm.setNodeInformationProvider(localNodeVer, new AbstractNodeInformationProvider() {
|
||||||
List<String> features = sdm.getFeatures();
|
List<String> features = sdm.getFeatures();
|
||||||
List<ExtensionElement> packetExtensions = sdm.getExtendedInfoAsList();
|
List<ExtensionElement> packetExtensions = sdm.getExtendedInfoAsList();
|
||||||
@Override
|
@Override
|
||||||
|
@ -553,7 +558,7 @@ public class EntityCapsManager extends Manager {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param info
|
* @param info
|
||||||
* @return true if the packet extensions is ill-formed
|
* @return true if the stanza(/packet) extensions is ill-formed
|
||||||
*/
|
*/
|
||||||
protected static boolean verifyPacketExtensions(DiscoverInfo info) {
|
protected static boolean verifyPacketExtensions(DiscoverInfo info) {
|
||||||
List<FormField> foundFormTypes = new LinkedList<FormField>();
|
List<FormField> foundFormTypes = new LinkedList<FormField>();
|
||||||
|
|
|
@ -120,7 +120,7 @@ public class SimpleDirectoryPersistentCache implements EntityCapsPersistentCache
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes the DiscoverInfo packet to an file
|
* Writes the DiscoverInfo stanza(/packet) to an file
|
||||||
*
|
*
|
||||||
* @param file
|
* @param file
|
||||||
* @param info
|
* @param info
|
||||||
|
@ -136,7 +136,7 @@ public class SimpleDirectoryPersistentCache implements EntityCapsPersistentCache
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tries to restore an DiscoverInfo packet from a file.
|
* Tries to restore an DiscoverInfo stanza(/packet) from a file.
|
||||||
*
|
*
|
||||||
* @param file
|
* @param file
|
||||||
* @return the restored DiscoverInfo
|
* @return the restored DiscoverInfo
|
||||||
|
|
|
@ -38,7 +38,7 @@ import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles chat state for all chats on a particular XMPPConnection. This class manages both the
|
* Handles chat state for all chats on a particular XMPPConnection. This class manages both the
|
||||||
* packet extensions and the disco response necessary for compliance with
|
* stanza(/packet) extensions and the disco response necessary for compliance with
|
||||||
* <a href="http://www.xmpp.org/extensions/xep-0085.html">XEP-0085</a>.
|
* <a href="http://www.xmpp.org/extensions/xep-0085.html">XEP-0085</a>.
|
||||||
*
|
*
|
||||||
* NOTE: {@link org.jivesoftware.smackx.chatstates.ChatStateManager#getInstance(org.jivesoftware.smack.XMPPConnection)}
|
* NOTE: {@link org.jivesoftware.smackx.chatstates.ChatStateManager#getInstance(org.jivesoftware.smack.XMPPConnection)}
|
||||||
|
@ -96,7 +96,7 @@ public class ChatStateManager extends Manager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the current state of the provided chat. This method will send an empty bodied Message
|
* Sets the current state of the provided chat. This method will send an empty bodied Message
|
||||||
* packet with the state attached as a {@link org.jivesoftware.smack.packet.ExtensionElement}, if
|
* stanza(/packet) with the state attached as a {@link org.jivesoftware.smack.packet.ExtensionElement}, if
|
||||||
* and only if the new chat state is different than the last state.
|
* and only if the new chat state is different than the last state.
|
||||||
*
|
*
|
||||||
* @param newState the new state of the chat
|
* @param newState the new state of the chat
|
||||||
|
|
|
@ -297,7 +297,7 @@ public class AdHocCommandManager extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process the AdHoc-Command packet that request the execution of some
|
* Process the AdHoc-Command stanza(/packet) that request the execution of some
|
||||||
* action of a command. If this is the first request, this method checks,
|
* action of a command. If this is the first request, this method checks,
|
||||||
* before executing the command, if:
|
* before executing the command, if:
|
||||||
* <ul>
|
* <ul>
|
||||||
|
@ -318,7 +318,7 @@ public class AdHocCommandManager extends Manager {
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* @param requestData
|
* @param requestData
|
||||||
* the packet to process.
|
* the stanza(/packet) to process.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws NoResponseException
|
* @throws NoResponseException
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
|
|
|
@ -25,8 +25,8 @@ import org.jxmpp.util.XmppDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents timestamp information about data stored for later delivery. A DelayInformation will
|
* Represents timestamp information about data stored for later delivery. A DelayInformation will
|
||||||
* always includes the timestamp when the packet was originally sent and may include more
|
* always includes the timestamp when the stanza(/packet) was originally sent and may include more
|
||||||
* information such as the JID of the entity that originally sent the packet as well as the reason
|
* information such as the JID of the entity that originally sent the stanza(/packet) as well as the reason
|
||||||
* for the delay.<p>
|
* for the delay.<p>
|
||||||
*
|
*
|
||||||
* For more information see <a href="http://xmpp.org/extensions/xep-0091.html">XEP-0091</a>
|
* For more information see <a href="http://xmpp.org/extensions/xep-0091.html">XEP-0091</a>
|
||||||
|
@ -58,10 +58,10 @@ public class DelayInformation implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the JID of the entity that originally sent the packet or that delayed the
|
* Returns the JID of the entity that originally sent the stanza(/packet) or that delayed the
|
||||||
* delivery of the packet or <tt>null</tt> if this information is not available.
|
* delivery of the stanza(/packet) or <tt>null</tt> if this information is not available.
|
||||||
*
|
*
|
||||||
* @return the JID of the entity that originally sent the packet or that delayed the
|
* @return the JID of the entity that originally sent the stanza(/packet) or that delayed the
|
||||||
* delivery of the packet.
|
* delivery of the packet.
|
||||||
*/
|
*/
|
||||||
public String getFrom() {
|
public String getFrom() {
|
||||||
|
@ -69,10 +69,10 @@ public class DelayInformation implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the timestamp when the packet was originally sent. The returned Date is
|
* Returns the timestamp when the stanza(/packet) was originally sent. The returned Date is
|
||||||
* be understood as UTC.
|
* be understood as UTC.
|
||||||
*
|
*
|
||||||
* @return the timestamp when the packet was originally sent.
|
* @return the timestamp when the stanza(/packet) was originally sent.
|
||||||
*/
|
*/
|
||||||
public Date getStamp() {
|
public Date getStamp() {
|
||||||
return stamp;
|
return stamp;
|
||||||
|
|
|
@ -64,9 +64,9 @@ public interface NodeInformationProvider {
|
||||||
List<DiscoverInfo.Identity> getNodeIdentities();
|
List<DiscoverInfo.Identity> getNodeIdentities();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a list of the packet extensions defined in the node.
|
* Returns a list of the stanza(/packet) extensions defined in the node.
|
||||||
*
|
*
|
||||||
* @return a list of the packet extensions defined in the node.
|
* @return a list of the stanza(/packet) extensions defined in the node.
|
||||||
*/
|
*/
|
||||||
List<ExtensionElement> getNodePacketExtensions();
|
List<ExtensionElement> getNodePacketExtensions();
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ import org.jivesoftware.smack.packet.IQ;
|
||||||
import org.jivesoftware.smack.packet.Stanza;
|
import org.jivesoftware.smack.packet.Stanza;
|
||||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
import org.jivesoftware.smack.packet.XMPPError;
|
import org.jivesoftware.smack.packet.XMPPError;
|
||||||
|
import org.jivesoftware.smack.util.Objects;
|
||||||
import org.jivesoftware.smackx.caps.EntityCapsManager;
|
import org.jivesoftware.smackx.caps.EntityCapsManager;
|
||||||
import org.jivesoftware.smackx.disco.packet.DiscoverInfo;
|
import org.jivesoftware.smackx.disco.packet.DiscoverInfo;
|
||||||
import org.jivesoftware.smackx.disco.packet.DiscoverItems;
|
import org.jivesoftware.smackx.disco.packet.DiscoverItems;
|
||||||
|
@ -202,9 +203,10 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
*
|
*
|
||||||
* @param identity
|
* @param identity
|
||||||
*/
|
*/
|
||||||
public void setIdentity(Identity identity) {
|
public synchronized void setIdentity(Identity identity) {
|
||||||
if (identity == null) throw new IllegalArgumentException("Identity can not be null");
|
this.identity = Objects.requireNonNull(identity, "Identity can not be null");
|
||||||
this.identity = identity;
|
// Notify others of a state change of SDM. In order to keep the state consistent, this
|
||||||
|
// method is synchronized
|
||||||
renewEntityCapsVersion();
|
renewEntityCapsVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,8 +236,10 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
*
|
*
|
||||||
* @param identity
|
* @param identity
|
||||||
*/
|
*/
|
||||||
public void addIdentity(DiscoverInfo.Identity identity) {
|
public synchronized void addIdentity(DiscoverInfo.Identity identity) {
|
||||||
identities.add(identity);
|
identities.add(identity);
|
||||||
|
// Notify others of a state change of SDM. In order to keep the state consistent, this
|
||||||
|
// method is synchronized
|
||||||
renewEntityCapsVersion();
|
renewEntityCapsVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,9 +250,11 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @param identity
|
* @param identity
|
||||||
* @return true, if successful. Otherwise the default identity was given.
|
* @return true, if successful. Otherwise the default identity was given.
|
||||||
*/
|
*/
|
||||||
public boolean removeIdentity(DiscoverInfo.Identity identity) {
|
public synchronized boolean removeIdentity(DiscoverInfo.Identity identity) {
|
||||||
if (identity.equals(this.identity)) return false;
|
if (identity.equals(this.identity)) return false;
|
||||||
identities.remove(identity);
|
identities.remove(identity);
|
||||||
|
// Notify others of a state change of SDM. In order to keep the state consistent, this
|
||||||
|
// method is synchronized
|
||||||
renewEntityCapsVersion();
|
renewEntityCapsVersion();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -288,17 +294,15 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
*
|
*
|
||||||
* @param response the discover info response packet
|
* @param response the discover info response packet
|
||||||
*/
|
*/
|
||||||
public void addDiscoverInfoTo(DiscoverInfo response) {
|
public synchronized void addDiscoverInfoTo(DiscoverInfo response) {
|
||||||
// First add the identities of the connection
|
// First add the identities of the connection
|
||||||
response.addIdentities(getIdentities());
|
response.addIdentities(getIdentities());
|
||||||
|
|
||||||
// Add the registered features to the response
|
// Add the registered features to the response
|
||||||
synchronized (features) {
|
for (String feature : getFeatures()) {
|
||||||
for (String feature : getFeatures()) {
|
response.addFeature(feature);
|
||||||
response.addFeature(feature);
|
|
||||||
}
|
|
||||||
response.addExtension(extendedInfo);
|
|
||||||
}
|
}
|
||||||
|
response.addExtension(extendedInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -358,45 +362,41 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
*
|
*
|
||||||
* @return a List of the supported features by this XMPP entity.
|
* @return a List of the supported features by this XMPP entity.
|
||||||
*/
|
*/
|
||||||
public List<String> getFeatures() {
|
public synchronized List<String> getFeatures() {
|
||||||
synchronized (features) {
|
return new ArrayList<String>(features);
|
||||||
return new ArrayList<String>(features);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers that a new feature is supported by this XMPP entity. When this client is
|
* Registers that a new feature is supported by this XMPP entity. When this client is
|
||||||
* queried for its information the registered features will be answered.<p>
|
* queried for its information the registered features will be answered.<p>
|
||||||
*
|
*
|
||||||
* Since no packet is actually sent to the server it is safe to perform this operation
|
* Since no stanza(/packet) is actually sent to the server it is safe to perform this operation
|
||||||
* before logging to the server. In fact, you may want to configure the supported features
|
* before logging to the server. In fact, you may want to configure the supported features
|
||||||
* before logging to the server so that the information is already available if it is required
|
* before logging to the server so that the information is already available if it is required
|
||||||
* upon login.
|
* upon login.
|
||||||
*
|
*
|
||||||
* @param feature the feature to register as supported.
|
* @param feature the feature to register as supported.
|
||||||
*/
|
*/
|
||||||
public void addFeature(String feature) {
|
public synchronized void addFeature(String feature) {
|
||||||
synchronized (features) {
|
features.add(feature);
|
||||||
if (!features.contains(feature)) {
|
// Notify others of a state change of SDM. In order to keep the state consistent, this
|
||||||
features.add(feature);
|
// method is synchronized
|
||||||
renewEntityCapsVersion();
|
renewEntityCapsVersion();
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the specified feature from the supported features by this XMPP entity.<p>
|
* Removes the specified feature from the supported features by this XMPP entity.<p>
|
||||||
*
|
*
|
||||||
* Since no packet is actually sent to the server it is safe to perform this operation
|
* Since no stanza(/packet) is actually sent to the server it is safe to perform this operation
|
||||||
* before logging to the server.
|
* before logging to the server.
|
||||||
*
|
*
|
||||||
* @param feature the feature to remove from the supported features.
|
* @param feature the feature to remove from the supported features.
|
||||||
*/
|
*/
|
||||||
public void removeFeature(String feature) {
|
public synchronized void removeFeature(String feature) {
|
||||||
synchronized (features) {
|
features.remove(feature);
|
||||||
features.remove(feature);
|
// Notify others of a state change of SDM. In order to keep the state consistent, this
|
||||||
renewEntityCapsVersion();
|
// method is synchronized
|
||||||
}
|
renewEntityCapsVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -405,10 +405,8 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* @param feature the feature to look for.
|
* @param feature the feature to look for.
|
||||||
* @return a boolean indicating if the specified featured is registered or not.
|
* @return a boolean indicating if the specified featured is registered or not.
|
||||||
*/
|
*/
|
||||||
public boolean includesFeature(String feature) {
|
public synchronized boolean includesFeature(String feature) {
|
||||||
synchronized (features) {
|
return features.contains(feature);
|
||||||
return features.contains(feature);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -417,7 +415,7 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* specified by XEP-0128.
|
* specified by XEP-0128.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* Since no packet is actually sent to the server it is safe to perform this
|
* Since no stanza(/packet) is actually sent to the server it is safe to perform this
|
||||||
* operation before logging to the server. In fact, you may want to
|
* operation before logging to the server. In fact, you may want to
|
||||||
* configure the extended info before logging to the server so that the
|
* configure the extended info before logging to the server so that the
|
||||||
* information is already available if it is required upon login.
|
* information is already available if it is required upon login.
|
||||||
|
@ -426,8 +424,10 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* the data form that contains the extend service discovery
|
* the data form that contains the extend service discovery
|
||||||
* information.
|
* information.
|
||||||
*/
|
*/
|
||||||
public void setExtendedInfo(DataForm info) {
|
public synchronized void setExtendedInfo(DataForm info) {
|
||||||
extendedInfo = info;
|
extendedInfo = info;
|
||||||
|
// Notify others of a state change of SDM. In order to keep the state consistent, this
|
||||||
|
// method is synchronized
|
||||||
renewEntityCapsVersion();
|
renewEntityCapsVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -460,11 +460,13 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* Removes the data form containing extended service discovery information
|
* Removes the data form containing extended service discovery information
|
||||||
* from the information returned by this XMPP entity.<p>
|
* from the information returned by this XMPP entity.<p>
|
||||||
*
|
*
|
||||||
* Since no packet is actually sent to the server it is safe to perform this
|
* Since no stanza(/packet) is actually sent to the server it is safe to perform this
|
||||||
* operation before logging to the server.
|
* operation before logging to the server.
|
||||||
*/
|
*/
|
||||||
public void removeExtendedInfo() {
|
public synchronized void removeExtendedInfo() {
|
||||||
extendedInfo = null;
|
extendedInfo = null;
|
||||||
|
// Notify others of a state change of SDM. In order to keep the state consistent, this
|
||||||
|
// method is synchronized
|
||||||
renewEntityCapsVersion();
|
renewEntityCapsVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -599,7 +601,7 @@ public class ServiceDiscoveryManager extends Manager {
|
||||||
* be returned by the server whenever the server receives a disco request targeted to the bare
|
* be returned by the server whenever the server receives a disco request targeted to the bare
|
||||||
* address of the client (i.e. user@host.com).
|
* address of the client (i.e. user@host.com).
|
||||||
*
|
*
|
||||||
* @param info the discover info packet to check.
|
* @param info the discover info stanza(/packet) to check.
|
||||||
* @return true if the server supports publishing of items.
|
* @return true if the server supports publishing of items.
|
||||||
*/
|
*/
|
||||||
public static boolean canPublishItems(DiscoverInfo info) {
|
public static boolean canPublishItems(DiscoverInfo info) {
|
||||||
|
|
|
@ -273,7 +273,7 @@ public class FileTransferNegotiator extends Manager {
|
||||||
* 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 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
|
||||||
* href="http://www.xmpp.org/extensions/jep-0065.html">SOCKS5 Bytestreams</a>,
|
* href="http://www.xmpp.org/extensions/jep-0065.html">SOCKS5 Bytestreams</a>,
|
||||||
|
|
|
@ -104,11 +104,11 @@ public class FileTransferRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the stream initiation packet that was sent by the requestor which
|
* Returns the stream initiation stanza(/packet) that was sent by the requestor which
|
||||||
* contains the parameters of the file transfer being transfer and also the
|
* contains the parameters of the file transfer being transfer and also the
|
||||||
* methods available to transfer the file.
|
* methods available to transfer the file.
|
||||||
*
|
*
|
||||||
* @return Returns the stream initiation packet that was sent by the
|
* @return Returns the stream initiation stanza(/packet) that was sent by the
|
||||||
* requestor which contains the parameters of the file transfer
|
* requestor which contains the parameters of the file transfer
|
||||||
* being transfer and also the methods available to transfer the
|
* being transfer and also the methods available to transfer the
|
||||||
* file.
|
* file.
|
||||||
|
|
|
@ -58,7 +58,7 @@ public abstract class StreamNegotiator {
|
||||||
protected static final EventManger<String, IQ, SmackException.NotConnectedException> initationSetEvents = new EventManger<>();
|
protected static final EventManger<String, IQ, SmackException.NotConnectedException> initationSetEvents = new EventManger<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the initiation acceptance packet to forward to the stream
|
* Creates the initiation acceptance stanza(/packet) to forward to the stream
|
||||||
* initiator.
|
* initiator.
|
||||||
*
|
*
|
||||||
* @param streamInitiationOffer The offer from the stream initiator to connect for a stream.
|
* @param streamInitiationOffer The offer from the stream initiator to connect for a stream.
|
||||||
|
|
|
@ -22,7 +22,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
import org.jivesoftware.smackx.delay.packet.DelayInformation;
|
import org.jivesoftware.smackx.delay.packet.DelayInformation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Packet extension for >XEP-0297: Stanza Forwarding.
|
* Stanza(/Packet) 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>
|
||||||
|
@ -35,10 +35,10 @@ public class Forwarded implements ExtensionElement {
|
||||||
private final Stanza forwardedPacket;
|
private final Stanza forwardedPacket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Forwarded packet extension.
|
* Creates a new Forwarded stanza(/packet) extension.
|
||||||
*
|
*
|
||||||
* @param delay an optional {@link DelayInformation} timestamp of the packet.
|
* @param delay an optional {@link DelayInformation} timestamp of the packet.
|
||||||
* @param fwdPacket the packet that is forwarded (required).
|
* @param fwdPacket the stanza(/packet) that is forwarded (required).
|
||||||
*/
|
*/
|
||||||
public Forwarded(DelayInformation delay, Stanza fwdPacket) {
|
public Forwarded(DelayInformation delay, Stanza fwdPacket) {
|
||||||
this.delay = delay;
|
this.delay = delay;
|
||||||
|
@ -46,9 +46,9 @@ public class Forwarded implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Forwarded packet extension.
|
* Creates a new Forwarded stanza(/packet) extension.
|
||||||
*
|
*
|
||||||
* @param fwdPacket the packet that is forwarded (required).
|
* @param fwdPacket the stanza(/packet) that is forwarded (required).
|
||||||
*/
|
*/
|
||||||
public Forwarded(Stanza fwdPacket) {
|
public Forwarded(Stanza fwdPacket) {
|
||||||
this(null, fwdPacket);
|
this(null, fwdPacket);
|
||||||
|
@ -75,7 +75,7 @@ public class Forwarded implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the packet forwarded by this stanza.
|
* get the stanza(/packet) forwarded by this stanza.
|
||||||
*
|
*
|
||||||
* @return the {@link Stanza} instance (typically a message) that was forwarded.
|
* @return the {@link Stanza} instance (typically a message) that was forwarded.
|
||||||
*/
|
*/
|
||||||
|
@ -86,7 +86,7 @@ public class Forwarded implements ExtensionElement {
|
||||||
/**
|
/**
|
||||||
* get the timestamp of the forwarded packet.
|
* get the timestamp of the forwarded packet.
|
||||||
*
|
*
|
||||||
* @return the {@link DelayInformation} representing the time when the original packet was sent. May be null.
|
* @return the {@link DelayInformation} representing the time when the original stanza(/packet) was sent. May be null.
|
||||||
*/
|
*/
|
||||||
public DelayInformation getDelayInformation() {
|
public DelayInformation getDelayInformation() {
|
||||||
return delay;
|
return delay;
|
||||||
|
|
|
@ -30,7 +30,7 @@ import org.xmlpull.v1.XmlPullParser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class implements the {@link ExtensionElementProvider} to parse
|
* This class implements the {@link ExtensionElementProvider} to parse
|
||||||
* forwarded messages from a packet. It will return a {@link Forwarded} packet extension.
|
* forwarded messages from a packet. It will return a {@link Forwarded} stanza(/packet) extension.
|
||||||
*
|
*
|
||||||
* @author Georg Lukas
|
* @author Georg Lukas
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -60,7 +60,7 @@ import org.jxmpp.jid.Jid;
|
||||||
* <p/>
|
* <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 packet to them, as in the following code:
|
* the LastActivity stanza(/packet) to them, as in the following code:
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
|
@ -76,7 +76,7 @@ import org.jxmpp.jid.Jid;
|
||||||
* LastActivity activity = LastActivity.getLastActivity(con, "xray@jabber.org");
|
* LastActivity activity = LastActivity.getLastActivity(con, "xray@jabber.org");
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* To get the uptime of a host, you simple send the LastActivity packet to it,
|
* To get the uptime of a host, you simple send the LastActivity stanza(/packet) to it,
|
||||||
* as in the following code example:
|
* as in the following code example:
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
|
@ -228,7 +228,7 @@ public class LastActivityManager extends Manager {
|
||||||
*
|
*
|
||||||
* @param jid
|
* @param jid
|
||||||
* the JID of the user.
|
* the JID of the user.
|
||||||
* @return the LastActivity packet of the jid.
|
* @return the LastActivity stanza(/packet) of the jid.
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
* thrown if a server error has occured.
|
* thrown if a server error has occured.
|
||||||
* @throws NoResponseException if there was no response from the server.
|
* @throws NoResponseException if there was no response from the server.
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class PrivateDataManager extends Manager {
|
||||||
/**
|
/**
|
||||||
* Returns the private data provider registered to the specified XML element name and namespace.
|
* Returns the private data provider registered to the specified XML element name and namespace.
|
||||||
* For example, if a provider was registered to the element name "prefs" and the
|
* For example, if a provider was registered to the element name "prefs" and the
|
||||||
* namespace "http://www.xmppclient.com/prefs", then the following packet would trigger
|
* namespace "http://www.xmppclient.com/prefs", then the following stanza(/packet) would trigger
|
||||||
* the provider:
|
* the provider:
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
|
|
|
@ -64,7 +64,7 @@ public class DefaultPrivateData implements PrivateData {
|
||||||
/**
|
/**
|
||||||
* Returns the XML element name of the private data sub-packet root element.
|
* Returns the XML element name of the private data sub-packet root element.
|
||||||
*
|
*
|
||||||
* @return the XML element name of the packet extension.
|
* @return the XML element name of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getElementName() {
|
public String getElementName() {
|
||||||
return elementName;
|
return elementName;
|
||||||
|
@ -73,7 +73,7 @@ public class DefaultPrivateData implements PrivateData {
|
||||||
/**
|
/**
|
||||||
* Returns the XML namespace of the private data sub-packet root element.
|
* Returns the XML namespace of the private data sub-packet root element.
|
||||||
*
|
*
|
||||||
* @return the XML namespace of the packet extension.
|
* @return the XML namespace of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getNamespace() {
|
public String getNamespace() {
|
||||||
return namespace;
|
return namespace;
|
||||||
|
|
|
@ -96,7 +96,7 @@ public class AccountManager extends Manager {
|
||||||
/**
|
/**
|
||||||
* Flag that indicates whether the server supports In-Band Registration.
|
* Flag that indicates whether the server supports In-Band Registration.
|
||||||
* In-Band Registration may be advertised as a stream feature. If no stream feature
|
* In-Band Registration may be advertised as a stream feature. If no stream feature
|
||||||
* was advertised from the server then try sending an IQ packet to discover if In-Band
|
* was advertised from the server then try sending an IQ stanza(/packet) to discover if In-Band
|
||||||
* Registration is available.
|
* Registration is available.
|
||||||
*/
|
*/
|
||||||
private boolean accountCreationSupported = false;
|
private boolean accountCreationSupported = false;
|
||||||
|
@ -113,7 +113,7 @@ public class AccountManager extends Manager {
|
||||||
/**
|
/**
|
||||||
* Sets whether the server supports In-Band Registration. In-Band Registration may be
|
* Sets whether the server supports In-Band Registration. In-Band Registration may be
|
||||||
* advertised as a stream feature. If no stream feature was advertised from the server
|
* advertised as a stream feature. If no stream feature was advertised from the server
|
||||||
* then try sending an IQ packet to discover if In-Band Registration is available.
|
* then try sending an IQ stanza(/packet) to discover if In-Band Registration is available.
|
||||||
*
|
*
|
||||||
* @param accountCreationSupported true if the server supports In-Band Registration.
|
* @param accountCreationSupported true if the server supports In-Band Registration.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class JivePropertiesManager {
|
||||||
private static boolean javaObjectEnabled = false;
|
private static boolean javaObjectEnabled = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables deserialization of Java objects embedded in the 'properties' packet extension. Since
|
* Enables deserialization of Java objects embedded in the 'properties' stanza(/packet) extension. Since
|
||||||
* this is a security sensitive feature, it is disabled per default in Smack. Only enable it if
|
* this is a security sensitive feature, it is disabled per default in Smack. Only enable it if
|
||||||
* 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>
|
||||||
|
@ -49,7 +49,7 @@ public class JivePropertiesManager {
|
||||||
/**
|
/**
|
||||||
* Convenience method to add a property to a packet.
|
* Convenience method to add a property to a packet.
|
||||||
*
|
*
|
||||||
* @param packet the packet to add the property to.
|
* @param packet the stanza(/packet) to add the property to.
|
||||||
* @param name the name of the property to add.
|
* @param name the name of the property to add.
|
||||||
* @param value the value of the property to add.
|
* @param value the value of the property to add.
|
||||||
*/
|
*/
|
||||||
|
@ -63,7 +63,7 @@ public class JivePropertiesManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience method to get a property from a packet. Will return null if the packet contains
|
* Convenience method to get a property from a packet. Will return null if the stanza(/packet) contains
|
||||||
* not property with the given name.
|
* not property with the given name.
|
||||||
*
|
*
|
||||||
* @param packet
|
* @param packet
|
||||||
|
@ -95,7 +95,7 @@ public class JivePropertiesManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a map of all properties of the given packet. If the packet contains no properties
|
* Return a map of all properties of the given packet. If the stanza(/packet) contains no properties
|
||||||
* extension, an empty map will be returned.
|
* extension, an empty map will be returned.
|
||||||
*
|
*
|
||||||
* @param packet
|
* @param packet
|
||||||
|
|
|
@ -40,7 +40,7 @@ import org.jivesoftware.smack.util.stringencoder.Base64;
|
||||||
*/
|
*/
|
||||||
public class JivePropertiesExtension implements ExtensionElement {
|
public class JivePropertiesExtension implements ExtensionElement {
|
||||||
/**
|
/**
|
||||||
* Namespace used to store packet properties.
|
* Namespace used to store stanza(/packet) properties.
|
||||||
*/
|
*/
|
||||||
public static final String NAMESPACE = "http://www.jivesoftware.com/xmlns/xmpp/properties";
|
public static final String NAMESPACE = "http://www.jivesoftware.com/xmlns/xmpp/properties";
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ public class JivePropertiesExtension implements ExtensionElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the packet property with the specified name or <tt>null</tt> if the
|
* Returns the stanza(/packet) property with the specified name or <tt>null</tt> if the
|
||||||
* property doesn't exist. Property values that were originally primitives will
|
* property doesn't exist. Property values that were originally primitives will
|
||||||
* be returned as their object equivalent. For example, an int property will be
|
* be returned as their object equivalent. For example, an int property will be
|
||||||
* returned as an Integer, a double as a Double, etc.
|
* returned as an Integer, a double as a Double, etc.
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class JivePropertiesExtensionProvider extends ExtensionElementProvider<Ji
|
||||||
* Parse a properties sub-packet. If any errors occur while de-serializing Java object
|
* Parse a properties sub-packet. If any errors occur while de-serializing Java object
|
||||||
* properties, an exception will be printed and not thrown since a thrown exception will shut
|
* properties, an exception will be printed and not thrown since a thrown exception will shut
|
||||||
* down the entire connection. ClassCastExceptions will occur when both the sender and receiver
|
* down the entire connection. ClassCastExceptions will occur when both the sender and receiver
|
||||||
* of the packet don't have identical versions of the same class.
|
* of the stanza(/packet) don't have identical versions of the same class.
|
||||||
* <p>
|
* <p>
|
||||||
* Note that you have to explicitly enabled Java object deserialization with @{link
|
* Note that you have to explicitly enabled Java object deserialization with @{link
|
||||||
* {@link JivePropertiesManager#setJavaObjectEnabled(boolean)}
|
* {@link JivePropertiesManager#setJavaObjectEnabled(boolean)}
|
||||||
|
|
|
@ -781,10 +781,10 @@ public class MultiUserChat {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a new {@link StanzaListener} that will be invoked every time a new presence
|
* Adds a new {@link StanzaListener} that will be invoked every time a new presence
|
||||||
* is going to be sent by this MultiUserChat to the server. Packet interceptors may
|
* is going to be sent by this MultiUserChat to the server. Stanza(/Packet) interceptors may
|
||||||
* add new extensions to the presence that is going to be sent to the MUC service.
|
* add new extensions to the presence that is going to be sent to the MUC service.
|
||||||
*
|
*
|
||||||
* @param presenceInterceptor the new packet interceptor that will intercept presence packets.
|
* @param presenceInterceptor the new stanza(/packet) interceptor that will intercept presence packets.
|
||||||
*/
|
*/
|
||||||
public void addPresenceInterceptor(PresenceListener presenceInterceptor) {
|
public void addPresenceInterceptor(PresenceListener presenceInterceptor) {
|
||||||
presenceInterceptors.add(presenceInterceptor);
|
presenceInterceptors.add(presenceInterceptor);
|
||||||
|
@ -792,10 +792,10 @@ public class MultiUserChat {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a {@link StanzaListener} that was being invoked every time a new presence
|
* Removes a {@link StanzaListener} that was being invoked every time a new presence
|
||||||
* was being sent by this MultiUserChat to the server. Packet interceptors may
|
* was being sent by this MultiUserChat to the server. Stanza(/Packet) interceptors may
|
||||||
* add new extensions to the presence that is going to be sent to the MUC service.
|
* add new extensions to the presence that is going to be sent to the MUC service.
|
||||||
*
|
*
|
||||||
* @param presenceInterceptor the packet interceptor to remove.
|
* @param presenceInterceptor the stanza(/packet) interceptor to remove.
|
||||||
*/
|
*/
|
||||||
public void removePresenceInterceptor(StanzaListener presenceInterceptor) {
|
public void removePresenceInterceptor(StanzaListener presenceInterceptor) {
|
||||||
presenceInterceptors.remove(presenceInterceptor);
|
presenceInterceptors.remove(presenceInterceptor);
|
||||||
|
@ -1470,11 +1470,11 @@ public class MultiUserChat {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a packet listener that will be notified of any new Presence packets
|
* Adds a stanza(/packet) listener that will be notified of any new Presence packets
|
||||||
* sent to the group chat. Using a listener is a suitable way to know when the list
|
* sent to the group chat. Using a listener is a suitable way to know when the list
|
||||||
* of occupants should be re-loaded due to any changes.
|
* of occupants should be re-loaded due to any changes.
|
||||||
*
|
*
|
||||||
* @param listener a packet listener that will be notified of any presence packets
|
* @param listener a stanza(/packet) listener that will be notified of any presence packets
|
||||||
* sent to the group chat.
|
* sent to the group chat.
|
||||||
* @return true if the listener was not already added.
|
* @return true if the listener was not already added.
|
||||||
*/
|
*/
|
||||||
|
@ -1483,10 +1483,10 @@ public class MultiUserChat {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a packet listener that was being notified of any new Presence packets
|
* Removes a stanza(/packet) listener that was being notified of any new Presence packets
|
||||||
* sent to the group chat.
|
* sent to the group chat.
|
||||||
*
|
*
|
||||||
* @param listener a packet listener that was being notified of any presence packets
|
* @param listener a stanza(/packet) listener that was being notified of any presence packets
|
||||||
* sent to the group chat.
|
* sent to the group chat.
|
||||||
* @return true if the listener was removed, otherwise the listener was not added previously.
|
* @return true if the listener was removed, otherwise the listener was not added previously.
|
||||||
*/
|
*/
|
||||||
|
@ -1715,7 +1715,7 @@ public class MultiUserChat {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the next available message in the chat. The method call will block
|
* Returns the next available message in the chat. The method call will block
|
||||||
* (not return) until a packet is available or the <tt>timeout</tt> has elapased.
|
* (not return) until a stanza(/packet) is available or the <tt>timeout</tt> has elapased.
|
||||||
* If the timeout elapses without a result, <tt>null</tt> will be returned.
|
* If the timeout elapses without a result, <tt>null</tt> will be returned.
|
||||||
*
|
*
|
||||||
* @param timeout the maximum amount of time to wait for the next message.
|
* @param timeout the maximum amount of time to wait for the next message.
|
||||||
|
@ -1732,14 +1732,14 @@ public class MultiUserChat {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a packet listener that will be notified of any new messages in the
|
* Adds a stanza(/packet) listener that will be notified of any new messages in the
|
||||||
* group chat. Only "group chat" messages addressed to this group chat will
|
* group chat. Only "group chat" messages addressed to this group chat will
|
||||||
* be delivered to the listener. If you wish to listen for other packets
|
* be delivered to the listener. If you wish to listen for other packets
|
||||||
* that may be associated with this group chat, you should register a
|
* that may be associated with this group chat, you should register a
|
||||||
* PacketListener directly with the XMPPConnection with the appropriate
|
* PacketListener directly with the XMPPConnection with the appropriate
|
||||||
* PacketListener.
|
* PacketListener.
|
||||||
*
|
*
|
||||||
* @param listener a packet listener.
|
* @param listener a stanza(/packet) listener.
|
||||||
* @return true if the listener was not already added.
|
* @return true if the listener was not already added.
|
||||||
*/
|
*/
|
||||||
public boolean addMessageListener(MessageListener listener) {
|
public boolean addMessageListener(MessageListener listener) {
|
||||||
|
@ -1747,11 +1747,11 @@ public class MultiUserChat {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a packet listener that was being notified of any new messages in the
|
* Removes a stanza(/packet) listener that was being notified of any new messages in the
|
||||||
* multi user chat. Only "group chat" messages addressed to this multi user chat were
|
* multi user chat. Only "group chat" messages addressed to this multi user chat were
|
||||||
* being delivered to the listener.
|
* being delivered to the listener.
|
||||||
*
|
*
|
||||||
* @param listener a packet listener.
|
* @param listener a stanza(/packet) listener.
|
||||||
* @return true if the listener was removed, otherwise the listener was not added previously.
|
* @return true if the listener was removed, otherwise the listener was not added previously.
|
||||||
*/
|
*/
|
||||||
public boolean removeMessageListener(MessageListener listener) {
|
public boolean removeMessageListener(MessageListener listener) {
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class RoomInfo {
|
||||||
*/
|
*/
|
||||||
private final boolean moderated;
|
private final boolean moderated;
|
||||||
/**
|
/**
|
||||||
* Every presence packet can include the JID of every occupant unless the owner deactives this
|
* Every presence stanza(/packet) can include the JID of every occupant unless the owner deactives this
|
||||||
* configuration.
|
* configuration.
|
||||||
*/
|
*/
|
||||||
private final boolean nonanonymous;
|
private final boolean nonanonymous;
|
||||||
|
|
|
@ -27,7 +27,7 @@ import org.xmlpull.v1.XmlPullParser;
|
||||||
import org.xmlpull.v1.XmlPullParserException;
|
import org.xmlpull.v1.XmlPullParserException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A group chat invitation packet extension, which is used to invite other
|
* A group chat invitation stanza(/packet) extension, which is used to invite other
|
||||||
* users to a group chat room. To invite a user to a group chat room, address
|
* users to a group chat room. To invite a user to a group chat room, address
|
||||||
* a new message to the user and set the room name appropriately, as in the
|
* a new message to the user and set the room name appropriately, as in the
|
||||||
* following code example:
|
* following code example:
|
||||||
|
@ -45,7 +45,7 @@ import org.xmlpull.v1.XmlPullParserException;
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* PacketFilter filter = new StanzaExtensionFilter("x", "jabber:x:conference");
|
* PacketFilter filter = new StanzaExtensionFilter("x", "jabber:x:conference");
|
||||||
* // Create a packet collector or packet listeners using the filter...
|
* // Create a stanza(/packet) collector or stanza(/packet) listeners using the filter...
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* <b>Note</b>: this protocol is outdated now that the Multi-User Chat (MUC) XEP is available
|
* <b>Note</b>: this protocol is outdated now that the Multi-User Chat (MUC) XEP is available
|
||||||
|
@ -58,12 +58,12 @@ import org.xmlpull.v1.XmlPullParserException;
|
||||||
public class GroupChatInvitation implements ExtensionElement {
|
public class GroupChatInvitation implements ExtensionElement {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Element name of the packet extension.
|
* Element name of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public static final String ELEMENT = "x";
|
public static final String ELEMENT = "x";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Namespace of the packet extension.
|
* Namespace of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public static final String NAMESPACE = "jabber:x:conference";
|
public static final String NAMESPACE = "jabber:x:conference";
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ import java.util.List;
|
||||||
import org.jivesoftware.smack.packet.IQ;
|
import org.jivesoftware.smack.packet.IQ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IQ packet that serves for kicking users, granting and revoking voice, banning users,
|
* IQ stanza(/packet) that serves for kicking users, granting and revoking voice, banning users,
|
||||||
* modifying the ban list, granting and revoking membership and granting and revoking
|
* modifying the ban list, granting and revoking membership and granting and revoking
|
||||||
* moderator privileges. All these operations are scoped by the
|
* moderator privileges. All these operations are scoped by the
|
||||||
* 'http://jabber.org/protocol/muc#admin' namespace.
|
* 'http://jabber.org/protocol/muc#admin' namespace.
|
||||||
|
|
|
@ -23,7 +23,7 @@ import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IQ packet that serves for granting and revoking ownership privileges, granting
|
* IQ stanza(/packet) that serves for granting and revoking ownership privileges, granting
|
||||||
* and revoking administrative privileges and destroying a room. All these operations
|
* and revoking administrative privileges and destroying a room. All these operations
|
||||||
* are scoped by the 'http://jabber.org/protocol/muc#owner' namespace.
|
* are scoped by the 'http://jabber.org/protocol/muc#owner' namespace.
|
||||||
*
|
*
|
||||||
|
|
|
@ -133,7 +133,7 @@ public class MUCUser implements ExtensionElement {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the notification that the room has been destroyed. After a room has been destroyed,
|
* Returns the notification that the room has been destroyed. After a room has been destroyed,
|
||||||
* the room occupants will receive a Presence packet of type 'unavailable' with the reason for
|
* the room occupants will receive a Presence stanza(/packet) of type 'unavailable' with the reason for
|
||||||
* the room destruction if provided by the room owner.
|
* the room destruction if provided by the room owner.
|
||||||
*
|
*
|
||||||
* @return a notification that the room has been destroyed.
|
* @return a notification that the room has been destroyed.
|
||||||
|
@ -203,7 +203,7 @@ public class MUCUser implements ExtensionElement {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the notification that the room has been destroyed. After a room has been destroyed,
|
* Sets the notification that the room has been destroyed. After a room has been destroyed,
|
||||||
* the room occupants will receive a Presence packet of type 'unavailable' with the reason for
|
* the room occupants will receive a Presence stanza(/packet) of type 'unavailable' with the reason for
|
||||||
* the room destruction if provided by the room owner.
|
* the room destruction if provided by the room owner.
|
||||||
*
|
*
|
||||||
* @param destroy the notification that the room has been destroyed.
|
* @param destroy the notification that the room has been destroyed.
|
||||||
|
|
|
@ -34,7 +34,7 @@ import org.xmlpull.v1.XmlPullParserException;
|
||||||
public class MUCUserProvider extends ExtensionElementProvider<MUCUser> {
|
public class MUCUserProvider extends ExtensionElementProvider<MUCUser> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a MUCUser packet (extension sub-packet).
|
* Parses a MUCUser stanza(/packet) (extension sub-packet).
|
||||||
*
|
*
|
||||||
* @param parser the XML parser, positioned at the starting element of the extension.
|
* @param parser the XML parser, positioned at the starting element of the extension.
|
||||||
* @return a PacketExtension.
|
* @return a PacketExtension.
|
||||||
|
|
|
@ -40,7 +40,7 @@ public class OfflineMessageInfo implements ExtensionElement {
|
||||||
* Returns the XML element name of the extension sub-packet root element.
|
* Returns the XML element name of the extension sub-packet root element.
|
||||||
* Always returns "offline"
|
* Always returns "offline"
|
||||||
*
|
*
|
||||||
* @return the XML element name of the packet extension.
|
* @return the XML element name of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getElementName() {
|
public String getElementName() {
|
||||||
return "offline";
|
return "offline";
|
||||||
|
@ -50,7 +50,7 @@ public class OfflineMessageInfo implements ExtensionElement {
|
||||||
* Returns the XML namespace of the extension sub-packet root element.
|
* Returns the XML namespace of the extension sub-packet root element.
|
||||||
* According the specification the namespace is always "http://jabber.org/protocol/offline"
|
* According the specification the namespace is always "http://jabber.org/protocol/offline"
|
||||||
*
|
*
|
||||||
* @return the XML namespace of the packet extension.
|
* @return the XML namespace of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getNamespace() {
|
public String getNamespace() {
|
||||||
return "http://jabber.org/protocol/offline";
|
return "http://jabber.org/protocol/offline";
|
||||||
|
@ -91,7 +91,7 @@ public class OfflineMessageInfo implements ExtensionElement {
|
||||||
public static class Provider extends ExtensionElementProvider<OfflineMessageInfo> {
|
public static class Provider extends ExtensionElementProvider<OfflineMessageInfo> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a OfflineMessageInfo packet (extension sub-packet).
|
* Parses a OfflineMessageInfo stanza(/packet) (extension sub-packet).
|
||||||
*
|
*
|
||||||
* @param parser the XML parser, positioned at the starting element of the extension.
|
* @param parser the XML parser, positioned at the starting element of the extension.
|
||||||
* @return a PacketExtension.
|
* @return a PacketExtension.
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class PEPEvent implements ExtensionElement {
|
||||||
* Returns the XML element name of the extension sub-packet root element.
|
* Returns the XML element name of the extension sub-packet root element.
|
||||||
* Always returns "x"
|
* Always returns "x"
|
||||||
*
|
*
|
||||||
* @return the XML element name of the packet extension.
|
* @return the XML element name of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getElementName() {
|
public String getElementName() {
|
||||||
return "event";
|
return "event";
|
||||||
|
@ -68,7 +68,7 @@ public class PEPEvent implements ExtensionElement {
|
||||||
* According the specification the namespace is always "jabber:x:roster"
|
* According the specification the namespace is always "jabber:x:roster"
|
||||||
* (which is not to be confused with the 'jabber:iq:roster' namespace
|
* (which is not to be confused with the 'jabber:iq:roster' namespace
|
||||||
*
|
*
|
||||||
* @return the XML namespace of the packet extension.
|
* @return the XML namespace of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getNamespace() {
|
public String getNamespace() {
|
||||||
return "http://jabber.org/protocol/pubsub";
|
return "http://jabber.org/protocol/pubsub";
|
||||||
|
|
|
@ -46,7 +46,7 @@ public abstract class PEPItem implements ExtensionElement {
|
||||||
* Returns the XML element name of the extension sub-packet root element.
|
* Returns the XML element name of the extension sub-packet root element.
|
||||||
* Always returns "x"
|
* Always returns "x"
|
||||||
*
|
*
|
||||||
* @return the XML element name of the packet extension.
|
* @return the XML element name of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getElementName() {
|
public String getElementName() {
|
||||||
return "item";
|
return "item";
|
||||||
|
@ -55,7 +55,7 @@ public abstract class PEPItem implements ExtensionElement {
|
||||||
/**
|
/**
|
||||||
* Returns the XML namespace of the extension sub-packet root element.
|
* Returns the XML namespace of the extension sub-packet root element.
|
||||||
*
|
*
|
||||||
* @return the XML namespace of the packet extension.
|
* @return the XML namespace of the stanza(/packet) extension.
|
||||||
*/
|
*/
|
||||||
public String getNamespace() {
|
public String getNamespace() {
|
||||||
return "http://jabber.org/protocol/pubsub";
|
return "http://jabber.org/protocol/pubsub";
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class PEPProvider extends ExtensionElementProvider<ExtensionElement> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a PEPEvent packet and extracts a PEPItem from it.
|
* Parses a PEPEvent stanza(/packet) and extracts a PEPItem from it.
|
||||||
* (There is only one per <event>.)
|
* (There is only one per <event>.)
|
||||||
*
|
*
|
||||||
* @param parser the XML parser, positioned at the starting element of the extension.
|
* @param parser the XML parser, positioned at the starting element of the extension.
|
||||||
|
|
|
@ -215,10 +215,10 @@ public class PrivacyListManager extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send the {@link Privacy} packet to the server in order to know some privacy content and then
|
* Send the {@link Privacy} stanza(/packet) to the server in order to know some privacy content and then
|
||||||
* waits for the answer.
|
* waits for the answer.
|
||||||
*
|
*
|
||||||
* @param requestPrivacy is the {@link Privacy} packet configured properly whose XML
|
* @param requestPrivacy is the {@link Privacy} stanza(/packet) configured properly whose XML
|
||||||
* will be sent to the server.
|
* will be sent to the server.
|
||||||
* @return a new {@link Privacy} with the data received from the server.
|
* @return a new {@link Privacy} with the data received from the server.
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
|
@ -234,10 +234,10 @@ public class PrivacyListManager extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send the {@link Privacy} packet to the server in order to modify the server privacy and waits
|
* Send the {@link Privacy} stanza(/packet) to the server in order to modify the server privacy and waits
|
||||||
* for the answer.
|
* for the answer.
|
||||||
*
|
*
|
||||||
* @param requestPrivacy is the {@link Privacy} packet configured properly whose xml will be
|
* @param requestPrivacy is the {@link Privacy} stanza(/packet) configured properly whose xml will be
|
||||||
* sent to the server.
|
* sent to the server.
|
||||||
* @return a new {@link Privacy} with the data received from the server.
|
* @return a new {@link Privacy} with the data received from the server.
|
||||||
* @throws XMPPErrorException
|
* @throws XMPPErrorException
|
||||||
|
|
|
@ -19,7 +19,7 @@ package org.jivesoftware.smackx.privacy.packet;
|
||||||
import org.jivesoftware.smack.util.NumberUtil;
|
import org.jivesoftware.smack.util.NumberUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A privacy item acts a rule that when matched defines if a packet should be blocked or not.
|
* A privacy item acts a rule that when matched defines if a stanza(/packet) should be blocked or not.
|
||||||
*
|
*
|
||||||
* Privacy Items can handle different kind of blocking communications based on JID, group,
|
* Privacy Items can handle different kind of blocking communications based on JID, group,
|
||||||
* subscription type or globally by:<ul>
|
* subscription type or globally by:<ul>
|
||||||
|
|
|
@ -19,7 +19,7 @@ package org.jivesoftware.smackx.pubsub;
|
||||||
import org.jivesoftware.smackx.xdata.Form;
|
import org.jivesoftware.smackx.xdata.Form;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic packet extension which represents any pubsub form that is
|
* Generic stanza(/packet) extension which represents any pubsub form that is
|
||||||
* parsed from the incoming stream or being sent out to the server.
|
* parsed from the incoming stream or being sent out to the server.
|
||||||
*
|
*
|
||||||
* Form types are defined in {@link FormNodeType}.
|
* Form types are defined in {@link FormNodeType}.
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue