mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-12-22 02:27:58 +01:00
Merge branch '4.2' into master-paul-merged
This commit is contained in:
commit
431e5b3c67
434 changed files with 1770 additions and 1517 deletions
|
@ -341,7 +341,7 @@ public abstract class ConnectionConfiguration {
|
|||
* An enumeration for TLS security modes that are available when making a connection
|
||||
* to the XMPP server.
|
||||
*/
|
||||
public static enum SecurityMode {
|
||||
public enum SecurityMode {
|
||||
|
||||
/**
|
||||
* Security via TLS encryption is required in order to connect. If the server
|
||||
|
@ -492,7 +492,7 @@ public abstract class ConnectionConfiguration {
|
|||
* <p>
|
||||
* This is an abstract class that uses the builder design pattern and the "getThis() trick" to recover the type of
|
||||
* the builder in a class hierarchies with a self-referential generic supertype. Otherwise chaining of build
|
||||
* instructions from the superclasses followed by build instructions of a sublcass would not be possible, because
|
||||
* instructions from the superclasses followed by build instructions of a subclass would not be possible, because
|
||||
* the superclass build instructions would return the builder of the superclass and not the one of the subclass. You
|
||||
* can read more about it a Angelika Langer's Generics FAQ, especially the entry <a
|
||||
* href="http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html#FAQ206">What is the
|
||||
|
@ -649,7 +649,7 @@ public abstract class ConnectionConfiguration {
|
|||
public B setPort(int port) {
|
||||
if (port < 0 || port > 65535) {
|
||||
throw new IllegalArgumentException(
|
||||
"Port must be a 16-bit unsiged integer (i.e. between 0-65535. Port was: " + port);
|
||||
"Port must be a 16-bit unsigned integer (i.e. between 0-65535. Port was: " + port);
|
||||
}
|
||||
this.port = port;
|
||||
return getThis();
|
||||
|
@ -938,7 +938,7 @@ public abstract class ConnectionConfiguration {
|
|||
Set<String> blacklistedMechanisms = SASLAuthentication.getBlacklistedSASLMechanisms();
|
||||
for (String mechanism : saslMechanisms) {
|
||||
if (!SASLAuthentication.isSaslMechanismRegistered(mechanism)) {
|
||||
throw new IllegalArgumentException("SASL " + mechanism + " is not avaiable. Consider registering it with Smack");
|
||||
throw new IllegalArgumentException("SASL " + mechanism + " is not available. Consider registering it with Smack");
|
||||
}
|
||||
if (blacklistedMechanisms.contains(mechanism)) {
|
||||
throw new IllegalArgumentException("SALS " + mechanism + " is blacklisted.");
|
||||
|
|
|
@ -33,6 +33,6 @@ public interface ConnectionCreationListener {
|
|||
*
|
||||
* @param connection the newly created connection.
|
||||
*/
|
||||
public void connectionCreated(XMPPConnection connection);
|
||||
void connectionCreated(XMPPConnection connection);
|
||||
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public interface ConnectionListener {
|
|||
*
|
||||
* @param connection the XMPPConnection which successfully connected to its endpoint.
|
||||
*/
|
||||
public void connected(XMPPConnection connection);
|
||||
void connected(XMPPConnection connection);
|
||||
|
||||
/**
|
||||
* Notification that the connection has been authenticated.
|
||||
|
@ -45,12 +45,12 @@ public interface ConnectionListener {
|
|||
* @param connection the XMPPConnection which successfully authenticated.
|
||||
* @param resumed true if a previous XMPP session's stream was resumed.
|
||||
*/
|
||||
public void authenticated(XMPPConnection connection, boolean resumed);
|
||||
void authenticated(XMPPConnection connection, boolean resumed);
|
||||
|
||||
/**
|
||||
* Notification that the connection was closed normally.
|
||||
*/
|
||||
public void connectionClosed();
|
||||
void connectionClosed();
|
||||
|
||||
/**
|
||||
* Notification that the connection was closed due to an exception. When
|
||||
|
@ -59,7 +59,7 @@ public interface ConnectionListener {
|
|||
*
|
||||
* @param e the exception.
|
||||
*/
|
||||
public void connectionClosedOnError(Exception e);
|
||||
void connectionClosedOnError(Exception e);
|
||||
|
||||
/**
|
||||
* The connection has reconnected successfully to the server. Connections will
|
||||
|
@ -68,7 +68,7 @@ public interface ConnectionListener {
|
|||
*/
|
||||
// TODO: Remove in Smack 4.3
|
||||
@Deprecated
|
||||
public void reconnectionSuccessful();
|
||||
void reconnectionSuccessful();
|
||||
|
||||
// The next two methods *must* only be invoked by ReconnectionManager
|
||||
|
||||
|
@ -83,7 +83,7 @@ public interface ConnectionListener {
|
|||
*/
|
||||
// TODO: Remove in Smack 4.3
|
||||
@Deprecated
|
||||
public void reconnectingIn(int seconds);
|
||||
void reconnectingIn(int seconds);
|
||||
|
||||
/**
|
||||
* An attempt to connect to the server has failed. The connection will keep trying reconnecting to the server in a
|
||||
|
@ -97,5 +97,5 @@ public interface ConnectionListener {
|
|||
*/
|
||||
// TODO: Remove in Smack 4.3
|
||||
@Deprecated
|
||||
public void reconnectionFailed(Exception e);
|
||||
void reconnectionFailed(Exception e);
|
||||
}
|
||||
|
|
|
@ -24,6 +24,6 @@ package org.jivesoftware.smack;
|
|||
@Deprecated
|
||||
public interface ExceptionCallback {
|
||||
|
||||
public void processException(Exception exception);
|
||||
void processException(Exception exception);
|
||||
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public abstract class Manager {
|
|||
public Manager(XMPPConnection connection) {
|
||||
Objects.requireNonNull(connection, "XMPPConnection must not be null");
|
||||
|
||||
weakConnection = new WeakReference<XMPPConnection>(connection);
|
||||
weakConnection = new WeakReference<>(connection);
|
||||
}
|
||||
|
||||
protected final XMPPConnection connection() {
|
||||
|
|
|
@ -34,7 +34,7 @@ public interface ReconnectionListener {
|
|||
*
|
||||
* @param seconds remaining seconds before attempting a reconnection.
|
||||
*/
|
||||
public void reconnectingIn(int seconds);
|
||||
void reconnectingIn(int seconds);
|
||||
|
||||
/**
|
||||
* An attempt to connect to the server has failed. The connection will keep trying reconnecting to the server in a
|
||||
|
@ -46,5 +46,5 @@ public interface ReconnectionListener {
|
|||
*
|
||||
* @param e the exception that caused the reconnection to fail.
|
||||
*/
|
||||
public void reconnectionFailed(Exception e);
|
||||
void reconnectionFailed(Exception e);
|
||||
}
|
||||
|
|
|
@ -189,7 +189,7 @@ public final class ReconnectionManager {
|
|||
private Thread reconnectionThread;
|
||||
|
||||
private ReconnectionManager(AbstractXMPPConnection connection) {
|
||||
weakRefConnection = new WeakReference<AbstractXMPPConnection>(connection);
|
||||
weakRefConnection = new WeakReference<>(connection);
|
||||
|
||||
reconnectionRunnable = new Runnable() {
|
||||
|
||||
|
|
|
@ -64,9 +64,9 @@ public final class SASLAuthentication {
|
|||
|
||||
private static final Logger LOGGER = Logger.getLogger(SASLAuthentication.class.getName());
|
||||
|
||||
private static final List<SASLMechanism> REGISTERED_MECHANISMS = new ArrayList<SASLMechanism>();
|
||||
private static final List<SASLMechanism> REGISTERED_MECHANISMS = new ArrayList<>();
|
||||
|
||||
private static final Set<String> BLACKLISTED_MECHANISMS = new HashSet<String>();
|
||||
private static final Set<String> BLACKLISTED_MECHANISMS = new HashSet<>();
|
||||
|
||||
static {
|
||||
// Blacklist SCRAM-SHA-1-PLUS for now.
|
||||
|
@ -91,7 +91,7 @@ public final class SASLAuthentication {
|
|||
* @return the registered SASLMechanism sorted by the level of preference.
|
||||
*/
|
||||
public static Map<String, String> getRegisterdSASLMechanisms() {
|
||||
Map<String, String> answer = new LinkedHashMap<String, String>();
|
||||
Map<String, String> answer = new LinkedHashMap<>();
|
||||
synchronized (REGISTERED_MECHANISMS) {
|
||||
for (SASLMechanism mechanism : REGISTERED_MECHANISMS) {
|
||||
answer.put(mechanism.getClass().getName(), mechanism.toString());
|
||||
|
@ -132,9 +132,9 @@ public final class SASLAuthentication {
|
|||
return false;
|
||||
}
|
||||
|
||||
public static boolean blacklistSASLMechanism(String mechansim) {
|
||||
public static boolean blacklistSASLMechanism(String mechanism) {
|
||||
synchronized (BLACKLISTED_MECHANISMS) {
|
||||
return BLACKLISTED_MECHANISMS.add(mechansim);
|
||||
return BLACKLISTED_MECHANISMS.add(mechanism);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -356,8 +356,8 @@ public final class SASLAuthentication {
|
|||
throw new SmackException(
|
||||
"No supported and enabled SASL Mechanism provided by server. " +
|
||||
"Server announced mechanisms: " + serverMechanisms + ". " +
|
||||
"Registerd SASL mechanisms with Smack: " + REGISTERED_MECHANISMS + ". " +
|
||||
"Enabled SASL mechansisms for this connection: " + configuration.getEnabledSaslMechanisms() + ". " +
|
||||
"Registered SASL mechanisms with Smack: " + REGISTERED_MECHANISMS + ". " +
|
||||
"Enabled SASL mechanisms for this connection: " + configuration.getEnabledSaslMechanisms() + ". " +
|
||||
"Blacklisted SASL mechanisms: " + BLACKLISTED_MECHANISMS + '.'
|
||||
);
|
||||
// @formatter;on
|
||||
|
|
|
@ -52,17 +52,17 @@ public final class SmackConfiguration {
|
|||
private static int defaultPacketReplyTimeout = 5000;
|
||||
private static int packetCollectorSize = 5000;
|
||||
|
||||
private static List<String> defaultMechs = new ArrayList<String>();
|
||||
private static List<String> defaultMechs = new ArrayList<>();
|
||||
|
||||
static Set<String> disabledSmackClasses = new HashSet<String>();
|
||||
static Set<String> disabledSmackClasses = new HashSet<>();
|
||||
|
||||
final static List<XMPPInputOutputStream> compressionHandlers = new ArrayList<XMPPInputOutputStream>(2);
|
||||
final static List<XMPPInputOutputStream> compressionHandlers = new ArrayList<>(2);
|
||||
|
||||
static boolean smackInitialized = false;
|
||||
|
||||
/**
|
||||
* Value that indicates whether debugging is enabled. When enabled, a debug
|
||||
* window will apear for each new connection that will contain the following
|
||||
* window will appear for each new connection that will contain the following
|
||||
* information:<ul>
|
||||
* <li> Client Traffic -- raw XML traffic generated by Smack and sent to the server.
|
||||
* <li> Server Traffic -- raw XML traffic sent by the server to the client.
|
||||
|
@ -248,8 +248,8 @@ public final class SmackConfiguration {
|
|||
compressionHandlers.add(xmppInputOutputStream);
|
||||
}
|
||||
|
||||
public static List<XMPPInputOutputStream> getCompresionHandlers() {
|
||||
List<XMPPInputOutputStream> res = new ArrayList<XMPPInputOutputStream>(compressionHandlers.size());
|
||||
public static List<XMPPInputOutputStream> getCompressionHandlers() {
|
||||
List<XMPPInputOutputStream> res = new ArrayList<>(compressionHandlers.size());
|
||||
for (XMPPInputOutputStream ios : compressionHandlers) {
|
||||
if (ios.isSupported()) {
|
||||
res.add(ios);
|
||||
|
@ -261,7 +261,7 @@ public final class SmackConfiguration {
|
|||
/**
|
||||
* Set the default HostnameVerifier that will be used by XMPP connections to verify the hostname
|
||||
* of a TLS certificate. XMPP connections are able to overwrite this settings by supplying a
|
||||
* HostnameVerifier in their ConnecitonConfiguration with
|
||||
* HostnameVerifier in their ConnectionConfiguration with
|
||||
* {@link ConnectionConfiguration.Builder#setHostnameVerifier(HostnameVerifier)}.
|
||||
*/
|
||||
public static void setDefaultHostnameVerifier(HostnameVerifier verifier) {
|
||||
|
|
|
@ -258,7 +258,7 @@ public class SmackException extends Exception {
|
|||
|
||||
public ConnectionException(Throwable wrappedThrowable) {
|
||||
super(wrappedThrowable);
|
||||
failedAddresses = new ArrayList<HostAddress>(0);
|
||||
failedAddresses = new ArrayList<>(0);
|
||||
}
|
||||
|
||||
private ConnectionException(String message, List<HostAddress> failedAddresses) {
|
||||
|
|
|
@ -40,7 +40,6 @@ import org.jivesoftware.smack.util.FileUtils;
|
|||
import org.jivesoftware.smack.util.StringUtils;
|
||||
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
import org.xmlpull.v1.XmlPullParserFactory;
|
||||
|
||||
|
||||
|
@ -71,7 +70,7 @@ public final class SmackInitialization {
|
|||
}
|
||||
} catch (Exception e) {
|
||||
LOGGER.log(Level.SEVERE, "Could not determine Smack version", e);
|
||||
smackVersion = "unkown";
|
||||
smackVersion = "unknown";
|
||||
}
|
||||
SMACK_VERSION = smackVersion;
|
||||
|
||||
|
@ -182,7 +181,7 @@ public final class SmackInitialization {
|
|||
|
||||
private static void parseClassesToLoad(XmlPullParser parser, boolean optional,
|
||||
Collection<Exception> exceptions, ClassLoader classLoader)
|
||||
throws XmlPullParserException, IOException, Exception {
|
||||
throws Exception {
|
||||
final String startName = parser.getName();
|
||||
int eventType;
|
||||
String name;
|
||||
|
|
|
@ -288,7 +288,7 @@ public class StanzaCollector {
|
|||
}
|
||||
}
|
||||
|
||||
private final void throwIfCancelled() {
|
||||
private void throwIfCancelled() {
|
||||
if (cancelled) {
|
||||
throw new IllegalStateException("Packet collector already cancelled");
|
||||
}
|
||||
|
|
|
@ -52,6 +52,6 @@ public interface StanzaListener {
|
|||
* @throws InterruptedException
|
||||
* @throws NotLoggedInException
|
||||
*/
|
||||
public void processStanza(Stanza packet) throws NotConnectedException, InterruptedException, NotLoggedInException;
|
||||
void processStanza(Stanza packet) throws NotConnectedException, InterruptedException, NotLoggedInException;
|
||||
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ public class XMPPConnectionRegistry {
|
|||
* A set of listeners which will be invoked if a new connection is created.
|
||||
*/
|
||||
private final static Set<ConnectionCreationListener> connectionEstablishedListeners =
|
||||
new CopyOnWriteArraySet<ConnectionCreationListener>();
|
||||
new CopyOnWriteArraySet<>();
|
||||
|
||||
/**
|
||||
* Adds a new listener that will be notified when new Connections are created. Note
|
||||
|
|
|
@ -30,10 +30,7 @@ public final class EmptyToMatcher implements StanzaFilter {
|
|||
@Override
|
||||
public boolean accept(Stanza packet) {
|
||||
Jid packetTo = packet.getTo();
|
||||
if (packetTo == null) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return packetTo == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -54,5 +54,5 @@ public interface StanzaFilter {
|
|||
* @param stanza the stanza(/packet) to test.
|
||||
* @return true if and only if <tt>stanza</tt> passes the filter.
|
||||
*/
|
||||
public boolean accept(Stanza stanza);
|
||||
boolean accept(Stanza stanza);
|
||||
}
|
||||
|
|
|
@ -30,5 +30,5 @@ import org.jivesoftware.smack.SmackConfiguration;
|
|||
*
|
||||
*/
|
||||
public interface SmackInitializer {
|
||||
public List<Exception> initialize();
|
||||
List<Exception> initialize();
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ import org.jivesoftware.smack.packet.IQ;
|
|||
*/
|
||||
public interface IQRequestHandler {
|
||||
|
||||
public enum Mode {
|
||||
enum Mode {
|
||||
/**
|
||||
* Process requests synchronously, i.e. in the order they arrive. Uses a single thread, which means that the other
|
||||
* requests have to wait until all previous synchronous requests have been handled. Use {@link #async} if
|
||||
|
@ -41,13 +41,13 @@ public interface IQRequestHandler {
|
|||
async,
|
||||
}
|
||||
|
||||
public IQ handleIQRequest(IQ iqRequest);
|
||||
IQ handleIQRequest(IQ iqRequest);
|
||||
|
||||
public Mode getMode();
|
||||
Mode getMode();
|
||||
|
||||
public IQ.Type getType();
|
||||
IQ.Type getType();
|
||||
|
||||
public String getElement();
|
||||
String getElement();
|
||||
|
||||
public String getNamespace();
|
||||
String getNamespace();
|
||||
}
|
||||
|
|
|
@ -28,5 +28,5 @@ public interface Element {
|
|||
*
|
||||
* @return the stanza(/packet) extension as XML.
|
||||
*/
|
||||
public CharSequence toXML();
|
||||
CharSequence toXML();
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ public class EmptyResultIQ extends IQ {
|
|||
|
||||
public EmptyResultIQ(IQ request) {
|
||||
this();
|
||||
initialzeAsResultFor(request);
|
||||
initializeAsResultFor(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -40,6 +40,6 @@ public interface ExtensionElement extends NamedElement {
|
|||
*
|
||||
* @return the namespace.
|
||||
*/
|
||||
public String getNamespace();
|
||||
String getNamespace();
|
||||
|
||||
}
|
||||
|
|
|
@ -215,7 +215,7 @@ public abstract class IQ extends Stanza {
|
|||
*/
|
||||
protected abstract IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml);
|
||||
|
||||
protected final void initialzeAsResultFor(IQ request) {
|
||||
protected final void initializeAsResultFor(IQ request) {
|
||||
if (!(request.getType() == Type.get || request.getType() == Type.set)) {
|
||||
throw new IllegalArgumentException(
|
||||
"IQ must be of type 'set' or 'get'. Original IQ: " + request.toXML());
|
||||
|
|
|
@ -28,6 +28,6 @@ public interface NamedElement extends Element {
|
|||
*
|
||||
* @return the element name.
|
||||
*/
|
||||
public String getElementName();
|
||||
String getElementName();
|
||||
|
||||
}
|
||||
|
|
|
@ -28,15 +28,15 @@ import java.util.Set;
|
|||
@Deprecated
|
||||
public interface Packet extends TopLevelStreamElement {
|
||||
|
||||
public static final String TEXT = "text";
|
||||
public static final String ITEM = "item";
|
||||
String TEXT = "text";
|
||||
String ITEM = "item";
|
||||
|
||||
/**
|
||||
* Returns the unique ID of the stanza. The returned value could be <code>null</code>.
|
||||
*
|
||||
* @return the packet's unique ID or <code>null</code> if the id is not available.
|
||||
*/
|
||||
public String getStanzaId();
|
||||
String getStanzaId();
|
||||
|
||||
/**
|
||||
* Get the stanza id.
|
||||
|
@ -44,7 +44,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @deprecated use {@link #getStanzaId()} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public String getPacketID();
|
||||
String getPacketID();
|
||||
|
||||
/**
|
||||
* Sets the unique ID of the packet. To indicate that a stanza(/packet) has no id
|
||||
|
@ -52,7 +52,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
*
|
||||
* @param id the unique ID for the packet.
|
||||
*/
|
||||
public void setStanzaId(String id);
|
||||
void setStanzaId(String id);
|
||||
|
||||
/**
|
||||
* Set the stanza ID.
|
||||
|
@ -60,7 +60,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @deprecated use {@link #setStanzaId(String)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public void setPacketID(String packetID);
|
||||
void setPacketID(String packetID);
|
||||
|
||||
/**
|
||||
* Returns who the stanza(/packet) is being sent "to", or <tt>null</tt> if
|
||||
|
@ -70,7 +70,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @return who the stanza(/packet) is being sent to, or <tt>null</tt> if the
|
||||
* value has not been set.
|
||||
*/
|
||||
public String getTo();
|
||||
String getTo();
|
||||
|
||||
/**
|
||||
* Sets who the stanza(/packet) is being sent "to". The XMPP protocol often makes
|
||||
|
@ -78,7 +78,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
*
|
||||
* @param to who the stanza(/packet) is being sent to.
|
||||
*/
|
||||
public void setTo(String to);
|
||||
void setTo(String to);
|
||||
|
||||
/**
|
||||
* Returns who the stanza(/packet) is being sent "from" or <tt>null</tt> if
|
||||
|
@ -88,7 +88,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @return who the stanza(/packet) is being sent from, or <tt>null</tt> if the
|
||||
* value has not been set.
|
||||
*/
|
||||
public String getFrom();
|
||||
String getFrom();
|
||||
|
||||
/**
|
||||
* Sets who the stanza(/packet) is being sent "from". The XMPP protocol often
|
||||
|
@ -97,7 +97,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
*
|
||||
* @param from who the stanza(/packet) is being sent to.
|
||||
*/
|
||||
public void setFrom(String from);
|
||||
void setFrom(String from);
|
||||
|
||||
/**
|
||||
* Returns the error associated with this packet, or <tt>null</tt> if there are
|
||||
|
@ -105,34 +105,34 @@ public interface Packet extends TopLevelStreamElement {
|
|||
*
|
||||
* @return the error sub-packet or <tt>null</tt> if there isn't an error.
|
||||
*/
|
||||
public XMPPError getError();
|
||||
XMPPError getError();
|
||||
/**
|
||||
* Sets the error for this packet.
|
||||
*
|
||||
* @param error the error to associate with this packet.
|
||||
*/
|
||||
public void setError(XMPPError error);
|
||||
void setError(XMPPError error);
|
||||
|
||||
/**
|
||||
* Returns the xml:lang of this Stanza, or null if one has not been set.
|
||||
*
|
||||
* @return the xml:lang of this Stanza, or null.
|
||||
*/
|
||||
public String getLanguage();
|
||||
String getLanguage();
|
||||
|
||||
/**
|
||||
* Sets the xml:lang of this Stanza.
|
||||
*
|
||||
* @param language the xml:lang of this Stanza.
|
||||
*/
|
||||
public void setLanguage(String language);
|
||||
void setLanguage(String language);
|
||||
|
||||
/**
|
||||
* Returns a copy of the stanza(/packet) extensions attached to the packet.
|
||||
*
|
||||
* @return the stanza(/packet) extensions.
|
||||
*/
|
||||
public List<ExtensionElement> getExtensions();
|
||||
List<ExtensionElement> getExtensions();
|
||||
|
||||
/**
|
||||
* Return a set of all extensions with the given element name <emph>and</emph> namespace.
|
||||
|
@ -145,7 +145,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @return a set of all matching extensions.
|
||||
* @since 4.1
|
||||
*/
|
||||
public Set<ExtensionElement> getExtensions(String elementName, String namespace);
|
||||
Set<ExtensionElement> getExtensions(String elementName, String namespace);
|
||||
|
||||
/**
|
||||
* Returns the first extension of this stanza(/packet) that has the given namespace.
|
||||
|
@ -156,7 +156,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @param namespace the namespace of the extension that is desired.
|
||||
* @return the stanza(/packet) extension with the given namespace.
|
||||
*/
|
||||
public ExtensionElement getExtension(String namespace);
|
||||
ExtensionElement getExtension(String namespace);
|
||||
|
||||
/**
|
||||
* Returns the first stanza(/packet) extension that matches the specified element name and
|
||||
|
@ -173,20 +173,20 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @param namespace the XML element namespace of the stanza(/packet) extension.
|
||||
* @return the extension, or <tt>null</tt> if it doesn't exist.
|
||||
*/
|
||||
public <PE extends ExtensionElement> PE getExtension(String elementName, String namespace);
|
||||
<PE extends ExtensionElement> PE getExtension(String elementName, String namespace);
|
||||
/**
|
||||
* Adds a stanza(/packet) extension to the packet. Does nothing if extension is null.
|
||||
*
|
||||
* @param extension a stanza(/packet) extension.
|
||||
*/
|
||||
public void addExtension(ExtensionElement extension);
|
||||
void addExtension(ExtensionElement extension);
|
||||
|
||||
/**
|
||||
* Adds a collection of stanza(/packet) extensions to the packet. Does nothing if extensions is null.
|
||||
*
|
||||
* @param extensions a collection of stanza(/packet) extensions
|
||||
*/
|
||||
public void addExtensions(Collection<ExtensionElement> extensions);
|
||||
void addExtensions(Collection<ExtensionElement> extensions);
|
||||
|
||||
/**
|
||||
* Check if a stanza(/packet) extension with the given element and namespace exists.
|
||||
|
@ -198,7 +198,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @param namespace
|
||||
* @return true if a stanza(/packet) extension exists, false otherwise.
|
||||
*/
|
||||
public boolean hasExtension(String elementName, String namespace);
|
||||
boolean hasExtension(String elementName, String namespace);
|
||||
|
||||
/**
|
||||
* Check if a stanza(/packet) extension with the given namespace exists.
|
||||
|
@ -206,7 +206,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @param namespace
|
||||
* @return true if a stanza(/packet) extension exists, false otherwise.
|
||||
*/
|
||||
public boolean hasExtension(String namespace);
|
||||
boolean hasExtension(String namespace);
|
||||
|
||||
/**
|
||||
* Remove the stanza(/packet) extension with the given elementName and namespace.
|
||||
|
@ -215,7 +215,7 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @param namespace
|
||||
* @return the removed stanza(/packet) extension or null.
|
||||
*/
|
||||
public ExtensionElement removeExtension(String elementName, String namespace);
|
||||
ExtensionElement removeExtension(String elementName, String namespace);
|
||||
|
||||
/**
|
||||
* Removes a stanza(/packet) extension from the packet.
|
||||
|
@ -223,10 +223,10 @@ public interface Packet extends TopLevelStreamElement {
|
|||
* @param extension the stanza(/packet) extension to remove.
|
||||
* @return the removed stanza(/packet) extension or null.
|
||||
*/
|
||||
public ExtensionElement removeExtension(ExtensionElement extension);
|
||||
ExtensionElement removeExtension(ExtensionElement extension);
|
||||
|
||||
@Override
|
||||
// NOTE When Smack is using Java 8, then this method should be moved in Element as "Default Method".
|
||||
public String toString();
|
||||
String toString();
|
||||
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
|||
|
||||
/**
|
||||
* Represents a stream error packet. Stream errors are unrecoverable errors where the server
|
||||
* will close the unrelying TCP connection after the stream error was sent to the client.
|
||||
* will close the underlying TCP connection after the stream error was sent to the client.
|
||||
* These is the list of stream errors as defined in the XMPP spec:<p>
|
||||
*
|
||||
* <table border=1>
|
||||
|
@ -174,7 +174,7 @@ public class StreamError extends AbstractError implements Nonza {
|
|||
restricted_xml,
|
||||
see_other_host,
|
||||
system_shutdown,
|
||||
undeficed_condition,
|
||||
undefined_condition,
|
||||
unsupported_encoding,
|
||||
unsupported_feature,
|
||||
unsupported_stanza_type,
|
||||
|
|
|
@ -39,6 +39,6 @@ public interface ParsingExceptionCallback {
|
|||
* @param stanzaData the raw stanza data that caused the exception
|
||||
* @throws Exception
|
||||
*/
|
||||
public void handleUnparsableStanza(UnparseableStanza stanzaData) throws Exception;
|
||||
void handleUnparsableStanza(UnparseableStanza stanzaData) throws Exception;
|
||||
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ import org.jxmpp.util.XmppStringUtils;
|
|||
* <li>jabber:iq:register</ul>
|
||||
*
|
||||
* Because many more IQ types are part of XMPP and its extensions, a pluggable IQ parsing
|
||||
* mechanism is provided. IQ providers are registered programatically or by creating a
|
||||
* mechanism is provided. IQ providers are registered programmatically or by creating a
|
||||
* providers file. The file is an XML
|
||||
* document that contains one or more iqProvider entries, as in the following example:
|
||||
*
|
||||
|
@ -100,7 +100,7 @@ import org.jxmpp.util.XmppStringUtils;
|
|||
* 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
|
||||
* 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
|
||||
* construct 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 stanza(/packet) extension sub-element. When an
|
||||
* 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
|
||||
|
@ -207,7 +207,7 @@ public final class ProviderManager {
|
|||
|
||||
/**
|
||||
* Removes an IQ provider with the specified element name and namespace. This
|
||||
* method is typically called to cleanup providers that are programatically added
|
||||
* method is typically called to cleanup providers that are programmatically added
|
||||
* using the {@link #addIQProvider(String, String, Object) addIQProvider} method.
|
||||
*
|
||||
* @param elementName the XML element name.
|
||||
|
@ -237,7 +237,7 @@ public final class ProviderManager {
|
|||
*
|
||||
* @param elementName element name associated with extension provider.
|
||||
* @param namespace namespace associated with extension provider.
|
||||
* @return the extenion provider.
|
||||
* @return the extension provider.
|
||||
*/
|
||||
public static ExtensionElementProvider<ExtensionElement> getExtensionProvider(String elementName, String namespace) {
|
||||
String key = getKey(elementName, namespace);
|
||||
|
@ -269,7 +269,7 @@ public final class ProviderManager {
|
|||
|
||||
/**
|
||||
* Removes an extension provider with the specified element name and namespace. This
|
||||
* method is typically called to cleanup providers that are programatically added
|
||||
* method is typically called to cleanup providers that are programmatically added
|
||||
* using the {@link #addExtensionProvider(String, String, Object) addExtensionProvider} method.
|
||||
*
|
||||
* @param elementName the XML element name.
|
||||
|
|
|
@ -78,7 +78,7 @@ class HTTPProxySocketConnection implements ProxySocketConnection {
|
|||
got.append(c);
|
||||
if (got.length() > 1024)
|
||||
{
|
||||
throw new ProxyException(ProxyInfo.ProxyType.HTTP, "Recieved " +
|
||||
throw new ProxyException(ProxyInfo.ProxyType.HTTP, "Received " +
|
||||
"header of >1024 characters from "
|
||||
+ proxyhost + ", cancelling connection");
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ package org.jivesoftware.smack.proxy;
|
|||
|
||||
public class ProxyInfo
|
||||
{
|
||||
public static enum ProxyType
|
||||
public enum ProxyType
|
||||
{
|
||||
HTTP,
|
||||
SOCKS4,
|
||||
|
|
|
@ -21,7 +21,7 @@ import java.net.Socket;
|
|||
|
||||
public interface ProxySocketConnection {
|
||||
|
||||
public void connect(Socket socket, String host, int port, int timeout)
|
||||
void connect(Socket socket, String host, int port, int timeout)
|
||||
throws IOException;
|
||||
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@ public class Socks4ProxySocketConnection implements ProxySocketConnection {
|
|||
|
||||
90: request granted
|
||||
91: request rejected or failed
|
||||
92: request rejected becasue SOCKS server cannot connect to
|
||||
92: request rejected because SOCKS server cannot connect to
|
||||
identd on the client
|
||||
93: request rejected because the client program and identd
|
||||
report different user-ids
|
||||
|
|
|
@ -246,7 +246,7 @@ public abstract class ScramMechanism extends SASLMechanism {
|
|||
return gs2Header;
|
||||
}
|
||||
|
||||
return ByteUtils.concact(gs2Header, cbindData);
|
||||
return ByteUtils.concat(gs2Header, cbindData);
|
||||
}
|
||||
|
||||
protected String getChannelBindingName() {
|
||||
|
@ -394,7 +394,7 @@ public abstract class ScramMechanism extends SASLMechanism {
|
|||
throw new AssertionError();
|
||||
}
|
||||
// U1 := HMAC(str, salt + INT(1))
|
||||
byte[] u = hmac(key, ByteUtils.concact(salt, ONE));
|
||||
byte[] u = hmac(key, ByteUtils.concat(salt, ONE));
|
||||
byte[] res = u.clone();
|
||||
for (int i = 1; i < iterations; i++) {
|
||||
u = hmac(key, u);
|
||||
|
|
|
@ -73,7 +73,7 @@ public class Async {
|
|||
if (e instanceof RuntimeException) {
|
||||
throw (RuntimeException) e;
|
||||
}
|
||||
LOGGER.log(Level.WARNING, "Catched Exception", e);
|
||||
LOGGER.log(Level.WARNING, "Caught Exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
package org.jivesoftware.smack.util;
|
||||
|
||||
public class ByteUtils {
|
||||
public static byte[] concact(byte[] arrayOne, byte[] arrayTwo) {
|
||||
public static byte[] concat(byte[] arrayOne, byte[] arrayTwo) {
|
||||
int combinedLength = arrayOne.length + arrayTwo.length;
|
||||
byte[] res = new byte[combinedLength];
|
||||
System.arraycopy(arrayOne, 0, res, 0, arrayOne.length);
|
||||
|
|
|
@ -29,7 +29,9 @@ public class IpAddressUtil {
|
|||
return false;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
assert matcher.groupCount() == 4;
|
||||
|
||||
for (int i = 1; i <= 4; i++) {
|
||||
String ipSegment = matcher.group(i);
|
||||
int ipSegmentInt;
|
||||
try {
|
||||
|
|
|
@ -35,7 +35,7 @@ public class LazyStringBuilder implements Appendable, CharSequence {
|
|||
}
|
||||
|
||||
public LazyStringBuilder() {
|
||||
list = new ArrayList<CharSequence>(20);
|
||||
list = new ArrayList<>(20);
|
||||
}
|
||||
|
||||
public LazyStringBuilder append(LazyStringBuilder lsb) {
|
||||
|
|
|
@ -90,19 +90,17 @@ public class ObservableWriter extends Writer {
|
|||
|
||||
/**
|
||||
* Notify that a new string has been written.
|
||||
*
|
||||
* @param str the written String to notify
|
||||
*/
|
||||
private void notifyListeners() {
|
||||
WriterListener[] writerListeners = null;
|
||||
WriterListener[] writerListeners;
|
||||
synchronized (listeners) {
|
||||
writerListeners = new WriterListener[listeners.size()];
|
||||
listeners.toArray(writerListeners);
|
||||
}
|
||||
String str = stringBuilder.toString();
|
||||
stringBuilder.setLength(0);
|
||||
for (int i = 0; i < writerListeners.length; i++) {
|
||||
writerListeners[i].write(str);
|
||||
for (WriterListener writerListener : writerListeners) {
|
||||
writerListener.write(str);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -229,7 +229,7 @@ public class PacketParserUtils {
|
|||
String language = getLanguageAttribute(parser);
|
||||
|
||||
// determine message's default language
|
||||
String defaultLanguage = null;
|
||||
String defaultLanguage;
|
||||
if (language != null && !"".equals(language.trim())) {
|
||||
message.setLanguage(language);
|
||||
defaultLanguage = language;
|
||||
|
@ -746,7 +746,7 @@ public class PacketParserUtils {
|
|||
public static Map<String, String> parseDescriptiveTexts(XmlPullParser parser, Map<String, String> descriptiveTexts)
|
||||
throws XmlPullParserException, IOException {
|
||||
if (descriptiveTexts == null) {
|
||||
descriptiveTexts = new HashMap<String, String>();
|
||||
descriptiveTexts = new HashMap<>();
|
||||
}
|
||||
String xmllang = getLanguageAttribute(parser);
|
||||
if (xmllang == null) {
|
||||
|
@ -805,7 +805,7 @@ public class PacketParserUtils {
|
|||
*/
|
||||
public static StreamError parseStreamError(XmlPullParser parser) throws Exception {
|
||||
final int initialDepth = parser.getDepth();
|
||||
List<ExtensionElement> extensions = new ArrayList<ExtensionElement>();
|
||||
List<ExtensionElement> extensions = new ArrayList<>();
|
||||
Map<String, String> descriptiveTexts = null;
|
||||
StreamError.Condition condition = null;
|
||||
String conditionText = null;
|
||||
|
@ -857,7 +857,7 @@ public class PacketParserUtils {
|
|||
throws Exception {
|
||||
final int initialDepth = parser.getDepth();
|
||||
Map<String, String> descriptiveTexts = null;
|
||||
List<ExtensionElement> extensions = new ArrayList<ExtensionElement>();
|
||||
List<ExtensionElement> extensions = new ArrayList<>();
|
||||
XMPPError.Builder builder = XMPPError.getBuilder();
|
||||
|
||||
// Parse the error header
|
||||
|
|
|
@ -32,7 +32,7 @@ public class PacketUtil {
|
|||
* @deprecated use {@link #extensionElementFrom(Collection, String, String)} instead
|
||||
*/
|
||||
@Deprecated
|
||||
public static <PE extends ExtensionElement> PE packetExtensionfromCollection(
|
||||
public static <PE extends ExtensionElement> PE packetExtensionFromCollection(
|
||||
Collection<ExtensionElement> collection, String element,
|
||||
String namespace) {
|
||||
return extensionElementFrom(collection, element, namespace);
|
||||
|
|
|
@ -138,11 +138,7 @@ public class ParserUtils {
|
|||
if (valueString == null)
|
||||
return null;
|
||||
valueString = valueString.toLowerCase(Locale.US);
|
||||
if (valueString.equals("true") || valueString.equals("0")) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return valueString.equals("true") || valueString.equals("0");
|
||||
}
|
||||
|
||||
public static boolean getBooleanAttribute(XmlPullParser parser, String name,
|
||||
|
@ -232,8 +228,7 @@ public class ParserUtils {
|
|||
|
||||
public static URI getUriFromNextText(XmlPullParser parser) throws XmlPullParserException, IOException, URISyntaxException {
|
||||
String uriString = parser.nextText();
|
||||
URI uri = new URI(uriString);
|
||||
return uri;
|
||||
return new URI(uriString);
|
||||
}
|
||||
|
||||
public static String getRequiredAttribute(XmlPullParser parser, String name) throws IOException {
|
||||
|
@ -253,7 +248,6 @@ public class ParserUtils {
|
|||
}
|
||||
|
||||
public static String getXmlLang(XmlPullParser parser) {
|
||||
String langString = parser.getAttributeValue("http://www.w3.org/XML/1998/namespace", "lang");
|
||||
return langString;
|
||||
return parser.getAttributeValue("http://www.w3.org/XML/1998/namespace", "lang");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,6 +33,6 @@ public interface ReaderListener {
|
|||
*
|
||||
* @param str the read String
|
||||
*/
|
||||
public abstract void read(String str);
|
||||
void read(String str);
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,6 @@ package org.jivesoftware.smack.util;
|
|||
|
||||
public interface StringTransformer {
|
||||
|
||||
public String transform(String string);
|
||||
String transform(String string);
|
||||
|
||||
}
|
||||
|
|
|
@ -431,10 +431,10 @@ public class StringUtils {
|
|||
}
|
||||
|
||||
public static boolean nullSafeCharSequenceEquals(CharSequence csOne, CharSequence csTwo) {
|
||||
return nullSafeCharSequenceComperator(csOne, csTwo) == 0;
|
||||
return nullSafeCharSequenceComparator(csOne, csTwo) == 0;
|
||||
}
|
||||
|
||||
public static int nullSafeCharSequenceComperator(CharSequence csOne, CharSequence csTwo) {
|
||||
public static int nullSafeCharSequenceComparator(CharSequence csOne, CharSequence csTwo) {
|
||||
if (csOne == null ^ csTwo == null) {
|
||||
return (csOne == null) ? -1 : 1;
|
||||
}
|
||||
|
|
|
@ -18,6 +18,6 @@ package org.jivesoftware.smack.util;
|
|||
|
||||
public interface SuccessCallback<T> {
|
||||
|
||||
public void onSuccess(T result);
|
||||
void onSuccess(T result);
|
||||
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ public class TLSUtils {
|
|||
* According to the <a
|
||||
* href="https://raw.githubusercontent.com/stpeter/manifesto/master/manifesto.txt">Encrypted
|
||||
* XMPP Manifesto</a>, TLSv1.2 shall be deployed, providing fallback support for SSLv3 and
|
||||
* TLSv1.1. This method goes one step boyond and upgrades the handshake to use TLSv1 or better.
|
||||
* TLSv1.1. This method goes one step beyond and upgrades the handshake to use TLSv1 or better.
|
||||
* This method requires the underlying OS to support all of TLSv1.2 , 1.1 and 1.0.
|
||||
* </p>
|
||||
*
|
||||
|
|
|
@ -29,6 +29,6 @@ public interface TypedCloneable<T> extends Cloneable {
|
|||
*
|
||||
* @return a cloned version of this instance.
|
||||
*/
|
||||
public T clone();
|
||||
T clone();
|
||||
|
||||
}
|
||||
|
|
|
@ -33,6 +33,6 @@ public interface WriterListener {
|
|||
*
|
||||
* @param str the written string
|
||||
*/
|
||||
public abstract void write(String str);
|
||||
void write(String str);
|
||||
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ public class XmlStringBuilder implements Appendable, CharSequence {
|
|||
|
||||
/**
|
||||
* Add a new element to this builder, with the {@link java.util.Date} instance as its content,
|
||||
* which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}.
|
||||
* which will get formatted with {@link XmppDateTime#formatXEP0082Date(Date)}.
|
||||
*
|
||||
* @param name element name
|
||||
* @param content content of element
|
||||
|
@ -123,7 +123,7 @@ public class XmlStringBuilder implements Appendable, CharSequence {
|
|||
|
||||
/**
|
||||
* Add a new element to this builder, with the {@link java.util.Date} instance as its content,
|
||||
* which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}
|
||||
* which will get formatted with {@link XmppDateTime#formatXEP0082Date(Date)}
|
||||
* if {@link java.util.Date} instance is not <code>null</code>.
|
||||
*
|
||||
* @param name element name
|
||||
|
@ -245,7 +245,7 @@ public class XmlStringBuilder implements Appendable, CharSequence {
|
|||
|
||||
/**
|
||||
* Add a new attribute to this builder, with the {@link java.util.Date} instance as its value,
|
||||
* which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}.
|
||||
* which will get formatted with {@link XmppDateTime#formatXEP0082Date(Date)}.
|
||||
*
|
||||
* @param name name of attribute
|
||||
* @param value value of attribute
|
||||
|
@ -280,7 +280,7 @@ public class XmlStringBuilder implements Appendable, CharSequence {
|
|||
|
||||
/**
|
||||
* Add a new attribute to this builder, with the {@link java.util.Date} instance as its value,
|
||||
* which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}
|
||||
* which will get formatted with {@link XmppDateTime#formatXEP0082Date(Date)}
|
||||
* if {@link java.util.Date} instance is not <code>null</code>.
|
||||
*
|
||||
* @param name attribute name
|
||||
|
|
|
@ -20,6 +20,7 @@ import java.net.InetAddress;
|
|||
import java.net.UnknownHostException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.jivesoftware.smack.ConnectionConfiguration.DnssecMode;
|
||||
|
@ -91,6 +92,22 @@ public abstract class DNSResolver {
|
|||
return Arrays.asList(inetAddressArray);
|
||||
}
|
||||
|
||||
protected final boolean shouldContinue(CharSequence name, CharSequence hostname, List<InetAddress> hostAddresses) {
|
||||
if (hostAddresses == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// If hostAddresses is not null but empty, then the DNS resolution was successful but the domain did not
|
||||
// have any A or AAAA resource records.
|
||||
if (hostAddresses.isEmpty()) {
|
||||
LOGGER.log(Level.INFO, "The DNS name " + name + ", points to a hostname (" + hostname
|
||||
+ ") which has neither A or AAAA resource records. This is an indication of a broken DNS setup.");
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private final void checkIfDnssecRequestedAndSupported(DnssecMode dnssecMode) {
|
||||
if (dnssecMode != DnssecMode.disabled && !supportsDnssec) {
|
||||
throw new UnsupportedOperationException("This resolver does not support DNSSEC");
|
||||
|
|
|
@ -43,7 +43,7 @@ public class HostAddress {
|
|||
public HostAddress(String fqdn, int port, List<InetAddress> inetAddresses) {
|
||||
if (port < 0 || port > 65535)
|
||||
throw new IllegalArgumentException(
|
||||
"Port must be a 16-bit unsiged integer (i.e. between 0-65535. Port was: " + port);
|
||||
"Port must be a 16-bit unsigned integer (i.e. between 0-65535. Port was: " + port);
|
||||
if (StringUtils.isNotEmpty(fqdn) && fqdn.charAt(fqdn.length() - 1) == '.') {
|
||||
this.fqdn = fqdn.substring(0, fqdn.length() - 1);
|
||||
}
|
||||
|
|
|
@ -48,12 +48,12 @@ public class SRVRecord extends HostAddress implements Comparable<SRVRecord> {
|
|||
StringUtils.requireNotNullOrEmpty(fqdn, "The FQDN must not be null");
|
||||
if (weight < 0 || weight > 65535)
|
||||
throw new IllegalArgumentException(
|
||||
"DNS SRV records weight must be a 16-bit unsiged integer (i.e. between 0-65535. Weight was: "
|
||||
"DNS SRV records weight must be a 16-bit unsigned integer (i.e. between 0-65535. Weight was: "
|
||||
+ weight);
|
||||
|
||||
if (priority < 0 || priority > 65535)
|
||||
throw new IllegalArgumentException(
|
||||
"DNS SRV records priority must be a 16-bit unsiged integer (i.e. between 0-65535. Priority was: "
|
||||
"DNS SRV records priority must be a 16-bit unsigned integer (i.e. between 0-65535. Priority was: "
|
||||
+ priority);
|
||||
|
||||
this.priority = priority;
|
||||
|
|
|
@ -105,7 +105,7 @@ public class StanzaCollectorTest
|
|||
@Override
|
||||
public void run()
|
||||
{
|
||||
Stanza p = null;
|
||||
Stanza p;
|
||||
|
||||
do
|
||||
{
|
||||
|
@ -134,7 +134,7 @@ public class StanzaCollectorTest
|
|||
@Override
|
||||
public void run()
|
||||
{
|
||||
Stanza p = null;
|
||||
Stanza p;
|
||||
|
||||
do
|
||||
{
|
||||
|
|
|
@ -37,8 +37,8 @@ import org.jivesoftware.smack.packet.Stanza;
|
|||
public class ThreadedDummyConnection extends DummyConnection {
|
||||
private static final Logger LOGGER = Logger.getLogger(ThreadedDummyConnection.class.getName());
|
||||
|
||||
private BlockingQueue<IQ> replyQ = new ArrayBlockingQueue<IQ>(1);
|
||||
private BlockingQueue<Stanza> messageQ = new LinkedBlockingQueue<Stanza>(5);
|
||||
private final BlockingQueue<IQ> replyQ = new ArrayBlockingQueue<>(1);
|
||||
private final BlockingQueue<Stanza> messageQ = new LinkedBlockingQueue<>(5);
|
||||
private volatile boolean timeout = false;
|
||||
|
||||
@Override
|
||||
|
|
|
@ -142,7 +142,7 @@ public class MessageTest {
|
|||
XmlUnitUtils.assertSimilar(control, message.toXML());
|
||||
|
||||
Collection<String> languages = message.getBodyLanguages();
|
||||
List<String> controlLanguages = new ArrayList<String>();
|
||||
List<String> controlLanguages = new ArrayList<>();
|
||||
controlLanguages.add(lang2);
|
||||
controlLanguages.add(lang3);
|
||||
controlLanguages.removeAll(languages);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*/
|
||||
package org.jivesoftware.smack.parsing;
|
||||
|
||||
import static org.jivesoftware.smack.test.util.CharsequenceEquals.equalsCharSequence;
|
||||
import static org.jivesoftware.smack.test.util.CharSequenceEquals.equalsCharSequence;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
import org.jivesoftware.smack.SmackException;
|
||||
|
|
|
@ -24,7 +24,6 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
|
||||
import org.jivesoftware.smack.SmackException;
|
||||
import org.jivesoftware.smack.SmackException.NotConnectedException;
|
||||
import org.jivesoftware.smack.util.StringUtils;
|
||||
|
||||
import org.jxmpp.jid.EntityBareJid;
|
||||
|
@ -40,7 +39,7 @@ public class DigestMd5SaslTest extends AbstractSaslTest {
|
|||
super(saslMechanism);
|
||||
}
|
||||
|
||||
protected void runTest(boolean useAuthzid) throws NotConnectedException, SmackException, InterruptedException, XmppStringprepException, UnsupportedEncodingException {
|
||||
protected void runTest(boolean useAuthzid) throws SmackException, InterruptedException, XmppStringprepException, UnsupportedEncodingException {
|
||||
EntityBareJid authzid = null;
|
||||
if (useAuthzid) {
|
||||
authzid = JidCreate.entityBareFrom("shazbat@xmpp.org");
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
/**
|
||||
*
|
||||
* Copyright © 2014 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jivesoftware.smack.test.util;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Factory;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
|
||||
public class CharSequenceEquals extends TypeSafeMatcher<CharSequence> {
|
||||
|
||||
private final String charSequenceString;
|
||||
|
||||
public CharSequenceEquals(CharSequence charSequence) {
|
||||
charSequenceString = charSequence.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void describeTo(Description description) {
|
||||
description.appendText("Does not match CharSequence ").appendValue(charSequenceString);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean matchesSafely(CharSequence item) {
|
||||
String itemString = item.toString();
|
||||
return charSequenceString.equals(itemString);
|
||||
}
|
||||
|
||||
@Factory
|
||||
public static Matcher<CharSequence> equalsCharSequence(CharSequence charSequence) {
|
||||
return new CharSequenceEquals(charSequence);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2017 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jivesoftware.smack.util;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class IpAddressUtilTest {
|
||||
|
||||
@Test
|
||||
public void isIpV4AddressTest() {
|
||||
String ipv4 = "122.20.221.11";
|
||||
boolean isIpV4 = IpAddressUtil.isIPv4LiteralAddress(ipv4);
|
||||
assertTrue(isIpV4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isInvalidIpV4AddressTest() {
|
||||
String ipv4 = "122.20.221.11.1";
|
||||
boolean isIpV4 = IpAddressUtil.isIPv4LiteralAddress(ipv4);
|
||||
assertFalse(isIpV4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isInvalidIpV4AddressTest2() {
|
||||
String ipv4 = "122.20.256.11";
|
||||
boolean isIpV4 = IpAddressUtil.isIPv4LiteralAddress(ipv4);
|
||||
assertFalse(isIpV4);
|
||||
}
|
||||
}
|
|
@ -809,7 +809,7 @@ public class PacketParserUtilsTest {
|
|||
IOException, TransformerException, SAXException {
|
||||
// @formatter:off
|
||||
final String stanza = XMLBuilder.create("outer", "outerNamespace").a("outerAttribute", "outerValue")
|
||||
.element("inner", "innerNamespace").a("innverAttribute", "innerValue")
|
||||
.element("inner", "innerNamespace").a("innerAttribute", "innerValue")
|
||||
.element("innermost")
|
||||
.t("some text")
|
||||
.asString();
|
||||
|
|
|
@ -240,7 +240,7 @@ public final class EnhancedDebuggerWindow {
|
|||
JPanel iqProvidersPanel = new JPanel();
|
||||
iqProvidersPanel.setLayout(new GridLayout(1, 1));
|
||||
iqProvidersPanel.setBorder(BorderFactory.createTitledBorder("Installed IQ Providers"));
|
||||
Vector<String> providers = new Vector<String>();
|
||||
Vector<String> providers = new Vector<>();
|
||||
for (Object provider : ProviderManager.getIQProviders()) {
|
||||
if (provider.getClass() == Class.class) {
|
||||
providers.add(((Class<?>) provider).getName());
|
||||
|
@ -259,7 +259,7 @@ public final class EnhancedDebuggerWindow {
|
|||
JPanel extensionProvidersPanel = new JPanel();
|
||||
extensionProvidersPanel.setLayout(new GridLayout(1, 1));
|
||||
extensionProvidersPanel.setBorder(BorderFactory.createTitledBorder("Installed Extension Providers"));
|
||||
providers = new Vector<String>();
|
||||
providers = new Vector<>();
|
||||
for (Object provider : ProviderManager.getExtensionProviders()) {
|
||||
if (provider.getClass() == Class.class) {
|
||||
providers.add(((Class<?>) provider).getName());
|
||||
|
@ -305,7 +305,7 @@ public final class EnhancedDebuggerWindow {
|
|||
menuItem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ArrayList<EnhancedDebugger> debuggersToRemove = new ArrayList<EnhancedDebugger>();
|
||||
ArrayList<EnhancedDebugger> debuggersToRemove = new ArrayList<>();
|
||||
// Remove all the debuggers of which their connections are no longer valid
|
||||
for (int index = 0; index < tabbedPane.getComponentCount() - 1; index++) {
|
||||
EnhancedDebugger debugger = debuggers.get(index);
|
||||
|
|
|
@ -123,7 +123,7 @@ public class CarbonExtension implements ExtensionElement {
|
|||
/**
|
||||
* Defines the direction of a {@link CarbonExtension} message.
|
||||
*/
|
||||
public static enum Direction {
|
||||
public enum Direction {
|
||||
received,
|
||||
sent
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ public class ExplicitMessageEncryptionElement implements ExtensionElement {
|
|||
private final String namespace;
|
||||
private final String name;
|
||||
|
||||
private ExplicitMessageEncryptionProtocol(String namespace, String name) {
|
||||
ExplicitMessageEncryptionProtocol(String namespace, String name) {
|
||||
this.namespace = namespace;
|
||||
this.name = name;
|
||||
PROTOCOL_LUT.put(namespace, this);
|
||||
|
|
|
@ -90,7 +90,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
|
|||
/**
|
||||
* A builder for XMPP connection configurations.
|
||||
* <p>
|
||||
* See ConnectionConfiguration Buidler for more details.
|
||||
* See ConnectionConfiguration Builder for more details.
|
||||
* </p>
|
||||
*
|
||||
* @param <B> the builder type parameter.
|
||||
|
|
|
@ -64,7 +64,18 @@ import org.jxmpp.jid.DomainBareJid;
|
|||
*/
|
||||
public final class HttpFileUploadManager extends Manager {
|
||||
|
||||
/**
|
||||
* Namespace of XEP-0363 v0.4 or higher. Constant value {@value #NAMESPACE}.
|
||||
*
|
||||
* @see <a href="https://xmpp.org/extensions/attic/xep-0363-0.4.0.html">XEP-0363 v0.4.0</a>
|
||||
*/
|
||||
public static final String NAMESPACE = "urn:xmpp:http:upload:0";
|
||||
|
||||
/**
|
||||
* Namespace of XEP-0363 v0.2 or lower. Constant value {@value #NAMESPACE_0_2}.
|
||||
*
|
||||
* @see <a href="https://xmpp.org/extensions/attic/xep-0363-0.2.5.html">XEP-0363 v0.2.5</a>
|
||||
*/
|
||||
public static final String NAMESPACE_0_2 = "urn:xmpp:http:upload";
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(HttpFileUploadManager.class.getName());
|
||||
|
@ -459,6 +470,22 @@ public final class HttpFileUploadManager extends Manager {
|
|||
}
|
||||
}
|
||||
|
||||
public static UploadService.Version namespaceToVersion(String namespace) {
|
||||
UploadService.Version version;
|
||||
switch (namespace) {
|
||||
case NAMESPACE:
|
||||
version = Version.v0_3;
|
||||
break;
|
||||
case NAMESPACE_0_2:
|
||||
version = Version.v0_2;
|
||||
break;
|
||||
default:
|
||||
version = null;
|
||||
break;
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
private static boolean containsHttpFileUploadNamespace(DiscoverInfo discoverInfo) {
|
||||
return discoverInfo.containsFeature(NAMESPACE) || discoverInfo.containsFeature(NAMESPACE_0_2);
|
||||
}
|
||||
|
|
|
@ -22,8 +22,19 @@ import org.jxmpp.jid.DomainBareJid;
|
|||
|
||||
public class UploadService {
|
||||
|
||||
enum Version {
|
||||
public enum Version {
|
||||
/**
|
||||
* Upload service as specified in XEP-0363 v0.2 or lower.
|
||||
*
|
||||
* @see <a href="https://xmpp.org/extensions/attic/xep-0363-0.2.5.html">XEP-0363 v0.2.5</a>
|
||||
*/
|
||||
v0_2,
|
||||
|
||||
/**
|
||||
* Upload service as specified in XEP-0363 v0.3 or higher.
|
||||
*
|
||||
* @see <a href="https://xmpp.org/extensions/attic/xep-0363-0.4.0.html">XEP-0363 v0.4.0</a>
|
||||
*/
|
||||
v0_3,
|
||||
}
|
||||
|
||||
|
|
|
@ -33,8 +33,9 @@ public class Slot extends IQ {
|
|||
public static final String ELEMENT = "slot";
|
||||
public static final String NAMESPACE = SlotRequest.NAMESPACE;
|
||||
|
||||
private final URL putUrl;
|
||||
private final URL getUrl;
|
||||
protected final URL putUrl;
|
||||
protected final URL getUrl;
|
||||
|
||||
private final Map<String, String> headers;
|
||||
|
||||
public Slot(URL putUrl, URL getUrl) {
|
||||
|
@ -73,12 +74,21 @@ public class Slot extends IQ {
|
|||
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
|
||||
xml.rightAngleBracket();
|
||||
|
||||
xml.element("put", putUrl.toString());
|
||||
xml.element("get", getUrl.toString());
|
||||
for (Map.Entry<String, String> entry : getHeaders().entrySet()) {
|
||||
xml.openElement("header").attribute(entry.getKey(), entry.getValue());
|
||||
xml.halfOpenElement("put").attribute("url", putUrl.toString());
|
||||
if (headers.isEmpty()) {
|
||||
xml.closeEmptyElement();
|
||||
} else {
|
||||
xml.rightAngleBracket();
|
||||
for (Map.Entry<String, String> entry : getHeaders().entrySet()) {
|
||||
xml.halfOpenElement("header").attribute("name", entry.getKey()).rightAngleBracket();
|
||||
xml.escape(entry.getValue());
|
||||
xml.closeElement("header");
|
||||
}
|
||||
xml.closeElement("put");
|
||||
}
|
||||
|
||||
xml.halfOpenElement("get").attribute("url", getUrl.toString()).closeEmptyElement();
|
||||
|
||||
return xml;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,4 +28,13 @@ public class Slot_V0_2 extends Slot {
|
|||
super(putUrl, getUrl, null, NAMESPACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
|
||||
xml.rightAngleBracket();
|
||||
|
||||
xml.element("put", putUrl.toString());
|
||||
xml.element("get", getUrl.toString());
|
||||
|
||||
return xml;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright © 2017 Grigory Fedorov
|
||||
* Copyright © 2017 Grigory Fedorov, Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -25,6 +25,8 @@ import org.jivesoftware.smack.SmackException;
|
|||
import org.jivesoftware.smack.provider.IQProvider;
|
||||
import org.jivesoftware.smack.util.ParserUtils;
|
||||
|
||||
import org.jivesoftware.smackx.httpfileupload.HttpFileUploadManager;
|
||||
import org.jivesoftware.smackx.httpfileupload.UploadService;
|
||||
import org.jivesoftware.smackx.httpfileupload.element.Slot;
|
||||
import org.jivesoftware.smackx.httpfileupload.element.Slot_V0_2;
|
||||
|
||||
|
@ -42,9 +44,13 @@ public class SlotProvider extends IQProvider<Slot> {
|
|||
@Override
|
||||
public Slot parse(XmlPullParser parser, int initialDepth) throws XmlPullParserException, IOException, SmackException {
|
||||
final String namespace = parser.getNamespace();
|
||||
|
||||
final UploadService.Version version = HttpFileUploadManager.namespaceToVersion(namespace);
|
||||
assert version != null;
|
||||
|
||||
URL putUrl = null;
|
||||
URL getUrl = null;
|
||||
Map<String, String> headers = null;
|
||||
PutElement_V0_4_Content putElementV04Content = null;
|
||||
|
||||
outerloop: while (true) {
|
||||
int event = parser.next();
|
||||
|
@ -53,19 +59,33 @@ public class SlotProvider extends IQProvider<Slot> {
|
|||
case XmlPullParser.START_TAG:
|
||||
String name = parser.getName();
|
||||
switch (name) {
|
||||
case "put":
|
||||
putUrl = new URL(parser.nextText());
|
||||
break;
|
||||
case "get":
|
||||
getUrl = new URL(parser.nextText());
|
||||
break;
|
||||
case "header":
|
||||
String headerName = ParserUtils.getRequiredAttribute(parser, "name");
|
||||
String headerValue = ParserUtils.getRequiredNextText(parser);
|
||||
if (headers == null) {
|
||||
headers = new HashMap<>();
|
||||
case "put": {
|
||||
switch (version) {
|
||||
case v0_2:
|
||||
String putUrlString = parser.nextText();
|
||||
putUrl = new URL(putUrlString);
|
||||
break;
|
||||
case v0_3:
|
||||
putElementV04Content = parsePutElement_V0_4(parser);
|
||||
break;
|
||||
default:
|
||||
throw new AssertionError();
|
||||
}
|
||||
headers.put(headerName, headerValue);
|
||||
break;
|
||||
}
|
||||
case "get":
|
||||
String getUrlString;
|
||||
switch (version) {
|
||||
case v0_2:
|
||||
getUrlString = parser.nextText();
|
||||
break;
|
||||
case v0_3:
|
||||
getUrlString = parser.getAttributeValue(null, "url");
|
||||
break;
|
||||
default:
|
||||
throw new AssertionError();
|
||||
}
|
||||
getUrl = new URL(getUrlString);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -77,13 +97,67 @@ public class SlotProvider extends IQProvider<Slot> {
|
|||
}
|
||||
}
|
||||
|
||||
switch (namespace) {
|
||||
case Slot.NAMESPACE:
|
||||
return new Slot(putUrl, getUrl, headers);
|
||||
case Slot_V0_2.NAMESPACE:
|
||||
switch (version) {
|
||||
case v0_3:
|
||||
return new Slot(putElementV04Content.putUrl, getUrl, putElementV04Content.headers);
|
||||
case v0_2:
|
||||
return new Slot_V0_2(putUrl, getUrl);
|
||||
default:
|
||||
throw new AssertionError();
|
||||
}
|
||||
}
|
||||
|
||||
public static PutElement_V0_4_Content parsePutElement_V0_4(XmlPullParser parser) throws XmlPullParserException, IOException {
|
||||
final int initialDepth = parser.getDepth();
|
||||
|
||||
String putUrlString = parser.getAttributeValue(null, "url");
|
||||
URL putUrl = new URL(putUrlString);
|
||||
|
||||
Map<String, String> headers = null;
|
||||
outerloop: while (true) {
|
||||
int next = parser.next();
|
||||
switch (next) {
|
||||
case XmlPullParser.START_TAG:
|
||||
String name = parser.getName();
|
||||
switch (name) {
|
||||
case "header":
|
||||
String headerName = ParserUtils.getRequiredAttribute(parser, "name");
|
||||
String headerValue = ParserUtils.getRequiredNextText(parser);
|
||||
if (headers == null) {
|
||||
headers = new HashMap<>();
|
||||
}
|
||||
headers.put(headerName, headerValue);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case XmlPullParser.END_TAG:
|
||||
if (parser.getDepth() == initialDepth) {
|
||||
break outerloop;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return new PutElement_V0_4_Content(putUrl, headers);
|
||||
}
|
||||
|
||||
public static final class PutElement_V0_4_Content {
|
||||
private final URL putUrl;
|
||||
private final Map<String, String> headers;
|
||||
|
||||
private PutElement_V0_4_Content(URL putUrl, Map<String, String> headers) {
|
||||
this.putUrl = putUrl;
|
||||
this.headers = headers;
|
||||
}
|
||||
|
||||
public URL getPutUrl() {
|
||||
return putUrl;
|
||||
}
|
||||
|
||||
public Map<String, String> getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,6 @@ import org.jxmpp.jid.Jid;
|
|||
|
||||
public interface ThingControlRequest {
|
||||
|
||||
public void processRequest(Jid from, Collection<SetData> setData) throws XMPPErrorException;
|
||||
void processRequest(Jid from, Collection<SetData> setData) throws XMPPErrorException;
|
||||
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ public class IoTSetResponse extends IQ {
|
|||
|
||||
public IoTSetResponse(IoTSetRequest iotSetRequest) {
|
||||
this();
|
||||
initialzeAsResultFor(iotSetRequest);
|
||||
initializeAsResultFor(iotSetRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -32,7 +32,7 @@ public abstract class SetData implements NamedElement {
|
|||
|
||||
private final String toStringCache;
|
||||
|
||||
private Type() {
|
||||
Type() {
|
||||
toStringCache = this.name().toLowerCase(Locale.US);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,6 @@ package org.jivesoftware.smackx.iot.data;
|
|||
|
||||
public interface ThingMomentaryReadOutRequest {
|
||||
|
||||
public void momentaryReadOutRequest(ThingMomentaryReadOutResult callback);
|
||||
void momentaryReadOutRequest(ThingMomentaryReadOutResult callback);
|
||||
|
||||
}
|
||||
|
|
|
@ -22,6 +22,6 @@ import org.jivesoftware.smackx.iot.data.element.IoTDataField;
|
|||
|
||||
public interface ThingMomentaryReadOutResult {
|
||||
|
||||
public void momentaryReadOut(List<? extends IoTDataField> results);
|
||||
void momentaryReadOut(List<? extends IoTDataField> results);
|
||||
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ public class IoTDataRequest extends IQ {
|
|||
public static final String NAMESPACE = Constants.IOT_SENSORDATA_NAMESPACE;
|
||||
|
||||
/**
|
||||
* The sequence nummber. According to XEP-0323 an xs:int.
|
||||
* The sequence number. According to XEP-0323 an xs:int.
|
||||
*/
|
||||
private final int seqNr;
|
||||
|
||||
|
|
|
@ -20,6 +20,6 @@ import org.jxmpp.jid.BareJid;
|
|||
|
||||
public interface ThingStateChangeListener {
|
||||
|
||||
public void owned(BareJid owner);
|
||||
void owned(BareJid owner);
|
||||
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ public class Tag implements NamedElement {
|
|||
|
||||
public enum Type {
|
||||
str,
|
||||
num;
|
||||
num
|
||||
}
|
||||
|
||||
private final String name;
|
||||
|
|
|
@ -161,8 +161,8 @@ public final class IoTProvisioningManager extends Manager {
|
|||
// Notify the recommended friend that we will now accept his
|
||||
// friendship requests.
|
||||
final XMPPConnection connection = connection();
|
||||
Friend friendNotifiacation = new Friend(connection.getUser().asBareJid());
|
||||
Message notificationMessage = new Message(friendJid, friendNotifiacation);
|
||||
Friend friendNotification = new Friend(connection.getUser().asBareJid());
|
||||
Message notificationMessage = new Message(friendJid, friendNotification);
|
||||
connection.sendStanza(notificationMessage);
|
||||
} else {
|
||||
// Check is the message was send from a thing we previously
|
||||
|
@ -236,7 +236,7 @@ public final class IoTProvisioningManager extends Manager {
|
|||
}
|
||||
catch (NoResponseException | XMPPErrorException | NotConnectedException | InterruptedException e) {
|
||||
LOGGER.log(Level.WARNING,
|
||||
"Could not determine privisioning server. Ignoring friend request from " + from, e);
|
||||
"Could not determine provisioning server. Ignoring friend request from " + from, e);
|
||||
}
|
||||
if (provisioningServer == null) {
|
||||
return null;
|
||||
|
@ -420,7 +420,7 @@ public final class IoTProvisioningManager extends Manager {
|
|||
if (!provisioningServer.equals(stanza.getFrom())) {
|
||||
if (log) {
|
||||
LOGGER.warning("Ignoring request '" + stanza
|
||||
+ "' because not from provising server '" + provisioningServer
|
||||
+ "' because not from provisioning server '" + provisioningServer
|
||||
+ "'.");
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -239,11 +239,11 @@ public final class MamManager extends Manager {
|
|||
|
||||
|
||||
/**
|
||||
* Query an message archive like a MUC archive or a pubsub node archive, addressed by an archiveAddress, applying
|
||||
* Query an message archive like a MUC archive or a PubSub node archive, addressed by an archiveAddress, applying
|
||||
* filters: max count, start date, end date, from/to JID and with additional fields. When archiveAddress is null the
|
||||
* default, the server will be requested.
|
||||
*
|
||||
* @param node The Pubsub node name, can be null
|
||||
* @param node The PubSub node name, can be null
|
||||
* @param max
|
||||
* @param start
|
||||
* @param end
|
||||
|
@ -346,7 +346,7 @@ public final class MamManager extends Manager {
|
|||
/**
|
||||
* Returns a page of the archive.
|
||||
*
|
||||
* @param node The Pubsub node name, can be null
|
||||
* @param node The PubSub node name, can be null
|
||||
* @param dataForm
|
||||
* @param rsmSet
|
||||
* @return the MAM query result
|
||||
|
@ -498,7 +498,7 @@ public final class MamManager extends Manager {
|
|||
/**
|
||||
* Get the form fields supported by the server.
|
||||
*
|
||||
* @param node The Pubsub node name, can be null
|
||||
* @param node The PubSub node name, can be null
|
||||
* @return the list of form fields.
|
||||
* @throws NoResponseException
|
||||
* @throws XMPPErrorException
|
||||
|
@ -521,7 +521,7 @@ public final class MamManager extends Manager {
|
|||
private MamQueryResult queryArchive(MamQueryIQ mamQueryIq) throws NoResponseException, XMPPErrorException,
|
||||
NotConnectedException, InterruptedException, NotLoggedInException {
|
||||
final XMPPConnection connection = getAuthenticatedConnectionOrThrow();
|
||||
MamFinIQ mamFinIQ = null;
|
||||
MamFinIQ mamFinIQ;
|
||||
|
||||
StanzaCollector mamFinIQCollector = connection.createStanzaCollector(new IQReplyFilter(mamQueryIq, connection));
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ public class MultiUserChatLight {
|
|||
* Same as {@link #fromRoomFilter} together with
|
||||
* {@link MessageTypeFilter#GROUPCHAT}.
|
||||
*/
|
||||
private final StanzaFilter fromRoomGroupchatFilter;
|
||||
private final StanzaFilter fromRoomGroupChatFilter;
|
||||
|
||||
private final StanzaListener messageListener;
|
||||
|
||||
|
@ -93,7 +93,7 @@ public class MultiUserChatLight {
|
|||
this.room = room;
|
||||
|
||||
fromRoomFilter = FromMatchesFilter.create(room);
|
||||
fromRoomGroupchatFilter = new AndFilter(fromRoomFilter, MessageTypeFilter.GROUPCHAT);
|
||||
fromRoomGroupChatFilter = new AndFilter(fromRoomFilter, MessageTypeFilter.GROUPCHAT);
|
||||
|
||||
messageListener = new StanzaListener() {
|
||||
@Override
|
||||
|
@ -105,7 +105,7 @@ public class MultiUserChatLight {
|
|||
}
|
||||
};
|
||||
|
||||
connection.addSyncStanzaListener(messageListener, fromRoomGroupchatFilter);
|
||||
connection.addSyncStanzaListener(messageListener, fromRoomGroupChatFilter);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -266,7 +266,7 @@ public class MultiUserChatLight {
|
|||
throws Exception {
|
||||
MUCLightCreateIQ createMUCLightIQ = new MUCLightCreateIQ(room, roomName, occupants);
|
||||
|
||||
messageCollector = connection.createStanzaCollector(fromRoomGroupchatFilter);
|
||||
messageCollector = connection.createStanzaCollector(fromRoomGroupChatFilter);
|
||||
|
||||
try {
|
||||
connection.createStanzaCollectorAndSend(createMUCLightIQ).nextResultOrThrow();
|
||||
|
|
|
@ -96,7 +96,7 @@ public final class MultiUserChatLightManager extends Manager {
|
|||
|
||||
private MultiUserChatLight createNewMucLightAndAddToMap(EntityBareJid jid) {
|
||||
MultiUserChatLight multiUserChatLight = new MultiUserChatLight(connection(), jid);
|
||||
multiUserChatLights.put(jid, new WeakReference<MultiUserChatLight>(multiUserChatLight));
|
||||
multiUserChatLights.put(jid, new WeakReference<>(multiUserChatLight));
|
||||
return multiUserChatLight;
|
||||
}
|
||||
|
||||
|
@ -193,11 +193,11 @@ public final class MultiUserChatLightManager extends Manager {
|
|||
*/
|
||||
public List<Jid> getRoomsBlocked(DomainBareJid mucLightService)
|
||||
throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||
MUCLightBlockingIQ muclIghtBlockingIQResult = getBlockingList(mucLightService);
|
||||
MUCLightBlockingIQ mucLightBlockingIQResult = getBlockingList(mucLightService);
|
||||
|
||||
List<Jid> jids = new ArrayList<>();
|
||||
if (muclIghtBlockingIQResult.getRooms() != null) {
|
||||
jids.addAll(muclIghtBlockingIQResult.getRooms().keySet());
|
||||
if (mucLightBlockingIQResult.getRooms() != null) {
|
||||
jids.addAll(mucLightBlockingIQResult.getRooms().keySet());
|
||||
}
|
||||
|
||||
return jids;
|
||||
|
@ -215,11 +215,11 @@ public final class MultiUserChatLightManager extends Manager {
|
|||
*/
|
||||
public List<Jid> getUsersBlocked(DomainBareJid mucLightService)
|
||||
throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
|
||||
MUCLightBlockingIQ muclIghtBlockingIQResult = getBlockingList(mucLightService);
|
||||
MUCLightBlockingIQ mucLightBlockingIQResult = getBlockingList(mucLightService);
|
||||
|
||||
List<Jid> jids = new ArrayList<>();
|
||||
if (muclIghtBlockingIQResult.getUsers() != null) {
|
||||
jids.addAll(muclIghtBlockingIQResult.getUsers().keySet());
|
||||
if (mucLightBlockingIQResult.getUsers() != null) {
|
||||
jids.addAll(mucLightBlockingIQResult.getUsers().keySet());
|
||||
}
|
||||
|
||||
return jids;
|
||||
|
@ -234,9 +234,9 @@ public final class MultiUserChatLightManager extends Manager {
|
|||
StanzaFilter responseFilter = new IQReplyFilter(mucLightBlockingIQ, connection());
|
||||
IQ responseIq = connection().createStanzaCollectorAndSend(responseFilter, mucLightBlockingIQ)
|
||||
.nextResultOrThrow();
|
||||
MUCLightBlockingIQ muclIghtBlockingIQResult = (MUCLightBlockingIQ) responseIq;
|
||||
MUCLightBlockingIQ mucLightBlockingIQResult = (MUCLightBlockingIQ) responseIq;
|
||||
|
||||
return muclIghtBlockingIQResult;
|
||||
return mucLightBlockingIQResult;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -254,7 +254,7 @@
|
|||
<namespace>urn:xmpp:hints</namespace>
|
||||
<className>org.jivesoftware.smackx.hints.provider.StoreHintProvider</className>
|
||||
</extensionProvider>
|
||||
g
|
||||
|
||||
<!-- XEP-0363: HTTP File Upload -->
|
||||
<iqProvider>
|
||||
<elementName>slot</elementName>
|
||||
|
|
|
@ -27,7 +27,7 @@ import org.junit.Test;
|
|||
public class ExperimentalInitializerTest {
|
||||
|
||||
@Test
|
||||
public void testExperimentalInitialzer() {
|
||||
public void testExperimentalInitializer() {
|
||||
ExperimentalInitializer epi = new ExperimentalInitializer();
|
||||
List<Exception> exceptions = epi.initialize();
|
||||
assertTrue(exceptions.size() == 0);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*/
|
||||
package org.jivesoftware.smackx.carbons;
|
||||
|
||||
import static org.jivesoftware.smack.test.util.CharsequenceEquals.equalsCharSequence;
|
||||
import static org.jivesoftware.smack.test.util.CharSequenceEquals.equalsCharSequence;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ public class AcknowledgedExtensionTest {
|
|||
AcknowledgedExtension acknowledgedExtension1 = new AcknowledgedProvider().parse(parser);
|
||||
Assert.assertEquals("message-1", acknowledgedExtension1.getId());
|
||||
|
||||
Message message = (Message) PacketParserUtils.parseStanza(acknowledgedMessageStanza);
|
||||
Message message = PacketParserUtils.parseStanza(acknowledgedMessageStanza);
|
||||
AcknowledgedExtension acknowledgedExtension2 = AcknowledgedExtension.from(message);
|
||||
Assert.assertEquals("message-1", acknowledgedExtension2.getId());
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class DisplayedExtensionTest {
|
|||
DisplayedExtension displayedExtension1 = new DisplayedProvider().parse(parser);
|
||||
Assert.assertEquals("message-1", displayedExtension1.getId());
|
||||
|
||||
Message message = (Message) PacketParserUtils.parseStanza(displayedMessageStanza);
|
||||
Message message = PacketParserUtils.parseStanza(displayedMessageStanza);
|
||||
DisplayedExtension displayedExtension2 = DisplayedExtension.from(message);
|
||||
Assert.assertEquals("message-1", displayedExtension2.getId());
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ public class MarkableExtensionTest {
|
|||
MarkableExtension markableExtension1 = new MarkableProvider().parse(parser);
|
||||
Assert.assertEquals(markableExtension, markableExtension1.toXML().toString());
|
||||
|
||||
Message message = (Message) PacketParserUtils.parseStanza(markableMessageStanza);
|
||||
Message message = PacketParserUtils.parseStanza(markableMessageStanza);
|
||||
MarkableExtension markableExtension2 = MarkableExtension.from(message);
|
||||
Assert.assertEquals(markableExtension, markableExtension2.toXML().toString());
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class ReceivedExtensionTest {
|
|||
ReceivedExtension receivedExtension1 = new ReceivedProvider().parse(parser);
|
||||
Assert.assertEquals("message-1", receivedExtension1.getId());
|
||||
|
||||
Message message = (Message) PacketParserUtils.parseStanza(receivedMessageStanza);
|
||||
Message message = PacketParserUtils.parseStanza(receivedMessageStanza);
|
||||
ReceivedExtension receivedExtension2 = ReceivedExtension.from(message);
|
||||
Assert.assertEquals("message-1", receivedExtension2.getId());
|
||||
}
|
||||
|
|
|
@ -72,7 +72,6 @@ public class HttpOverXmppReqProviderTest {
|
|||
XmlPullParser parser = PacketParserUtils.getParserFor(string);
|
||||
IQ iq = provider.parse(parser);
|
||||
assertTrue(iq instanceof HttpOverXmppReq);
|
||||
HttpOverXmppReq castedIq = (HttpOverXmppReq) iq;
|
||||
return castedIq;
|
||||
return (HttpOverXmppReq) iq;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ import org.junit.Assert;
|
|||
import org.junit.Test;
|
||||
|
||||
public class FileTooLargeErrorCreateTest {
|
||||
String fileTooLargeErrorExtensionExample
|
||||
private static final String fileTooLargeErrorExtensionExample
|
||||
= "<file-too-large xmlns='urn:xmpp:http:upload:0'>"
|
||||
+ "<max-file-size>20000</max-file-size>"
|
||||
+ "</file-too-large>";
|
||||
|
|
|
@ -16,23 +16,26 @@
|
|||
*/
|
||||
package org.jivesoftware.smackx.httpfileupload;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
import org.jivesoftware.smackx.httpfileupload.element.Slot;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class SlotCreateTest {
|
||||
String testSlot
|
||||
private static final String testSlot
|
||||
= "<slot xmlns='urn:xmpp:http:upload:0'>"
|
||||
+ "<put>https://upload.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png</put>"
|
||||
+ "<get>https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png</get>"
|
||||
+ "<put url='https://upload.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png'></put>"
|
||||
+ "<get url='https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png'></get>"
|
||||
+ "</slot>";
|
||||
|
||||
@Test
|
||||
public void checkSlotRequestCreation() throws MalformedURLException {
|
||||
public void checkSlotRequestCreation() throws SAXException, IOException {
|
||||
Slot slot = new Slot(new URL("https://upload.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png"),
|
||||
new URL("https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png"));
|
||||
|
||||
|
@ -41,6 +44,6 @@ public class SlotCreateTest {
|
|||
Assert.assertEquals(new URL("https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png"),
|
||||
slot.getGetUrl());
|
||||
|
||||
Assert.assertEquals(testSlot, slot.getChildElementXML().toString());
|
||||
assertXMLEqual(testSlot, slot.getChildElementXML().toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,14 +29,14 @@ import org.xml.sax.SAXException;
|
|||
|
||||
public class SlotRequestCreateTest {
|
||||
|
||||
String testRequest
|
||||
private static final String testRequest
|
||||
= "<request xmlns='urn:xmpp:http:upload:0'"
|
||||
+ " filename='my_juliet.png'"
|
||||
+ " size='23456'"
|
||||
+ " content-type='image/jpeg'"
|
||||
+ "/>";
|
||||
|
||||
String testRequestWithoutContentType
|
||||
private static final String testRequestWithoutContentType
|
||||
= "<request xmlns='urn:xmpp:http:upload:0'"
|
||||
+ " filename='my_romeo.png'"
|
||||
+ " size='52523'"
|
||||
|
|
|
@ -30,7 +30,7 @@ public class FileTooLargeErrorProviderTest {
|
|||
* Example 7. Alternative response by the upload service if the file size was too large
|
||||
* @see <a href="http://xmpp.org/extensions/xep-0363.html#errors">XEP-0363: HTTP File Upload 5. Error conditions</a>
|
||||
*/
|
||||
String slotErrorFileToLarge
|
||||
private static final String slotErrorFileToLarge
|
||||
= "<iq from='upload.montague.tld' "
|
||||
+ "id='step_03' "
|
||||
+ "to='romeo@montague.tld/garden' "
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright © 2017 Grigory Fedorov
|
||||
* Copyright © 2017 Grigory Fedorov, Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -16,42 +16,108 @@
|
|||
*/
|
||||
package org.jivesoftware.smackx.httpfileupload.provider;
|
||||
|
||||
import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
import org.jivesoftware.smack.packet.IQ;
|
||||
import org.jivesoftware.smack.util.PacketParserUtils;
|
||||
|
||||
import org.jivesoftware.smackx.httpfileupload.element.Slot;
|
||||
import org.jivesoftware.smackx.httpfileupload.element.Slot_V0_2;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
|
||||
public class SlotProviderTest {
|
||||
|
||||
private static final String PUT_URL_STRING = "https://upload.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png";
|
||||
|
||||
private static final String GET_URL_STRING = "https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png";
|
||||
|
||||
private static final URL PUT_URL = urlFromString(PUT_URL_STRING);
|
||||
private static final URL GET_URL = urlFromString(GET_URL_STRING);
|
||||
|
||||
private static URL urlFromString(String urlString) {
|
||||
try {
|
||||
return new URL(urlString);
|
||||
}
|
||||
catch (MalformedURLException e) {
|
||||
throw new Error(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Example 6. The upload service responds with a slot
|
||||
* @see <a href="http://xmpp.org/extensions/xep-0363.html#request">XEP-0363: HTTP File Upload 4. Requesting a slot</a>
|
||||
*/
|
||||
String slotExample
|
||||
private static final String SLOT_IQ
|
||||
= "<iq from='upload.montague.tld' "
|
||||
+ "id='step_03' "
|
||||
+ "to='romeo@montague.tld/garden' "
|
||||
+ "type='result'>"
|
||||
+ "<slot xmlns='urn:xmpp:http:upload:0'>"
|
||||
+ "<put>https://upload.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png</put>"
|
||||
+ "<get>https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png</get>"
|
||||
+ "<put url='" + PUT_URL_STRING + "'></put>"
|
||||
+ "<get url='" + GET_URL_STRING + "'></get>"
|
||||
+ "</slot>"
|
||||
+ "</iq>";
|
||||
|
||||
@Test
|
||||
public void checkSlotProvider() throws Exception {
|
||||
Slot slot = PacketParserUtils.parseStanza(slotExample);
|
||||
Slot slot = PacketParserUtils.parseStanza(SLOT_IQ);
|
||||
|
||||
Assert.assertEquals(IQ.Type.result, slot.getType());
|
||||
Assert.assertEquals(new URL("https://upload.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png"),
|
||||
slot.getPutUrl());
|
||||
Assert.assertEquals(new URL("https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png"),
|
||||
slot.getGetUrl());
|
||||
checkUrls(slot);
|
||||
|
||||
assertXMLEqual(SLOT_IQ, slot.toXML().toString());
|
||||
}
|
||||
|
||||
private static final String SLOT_V0_2_IQ =
|
||||
"<iq from='upload.montague.tld' " +
|
||||
"id='step_03' " +
|
||||
"to='romeo@montague.tld/garden' " +
|
||||
"type='result'>" +
|
||||
"<slot xmlns='urn:xmpp:http:upload'>" +
|
||||
"<put>" + PUT_URL_STRING + "</put>" +
|
||||
"<get>" + GET_URL_STRING + "</get>" +
|
||||
"</slot>" +
|
||||
"</iq>";
|
||||
|
||||
@Test
|
||||
public void checkSlotV0_2Provider() throws Exception {
|
||||
Slot_V0_2 slot = PacketParserUtils.parseStanza(SLOT_V0_2_IQ);
|
||||
|
||||
checkUrls(slot);
|
||||
|
||||
String slotXml = slot.toXML().toString();
|
||||
assertXMLEqual(SLOT_V0_2_IQ, slotXml);
|
||||
}
|
||||
|
||||
private static final String SLOT_WITH_HEADERS_IQ =
|
||||
"<iq from='upload.montague.tld' " +
|
||||
"id='step_03' " +
|
||||
"to='romeo@montague.tld/garden' " +
|
||||
"type='result'>" +
|
||||
"<slot xmlns='urn:xmpp:http:upload:0'>" +
|
||||
"<put url='" + PUT_URL_STRING + "'>" +
|
||||
"<header name='Authorization'>Basic Base64String==</header>" +
|
||||
"<header name='Host'>montague.tld</header>" +
|
||||
"</put>" +
|
||||
"<get url='" + GET_URL_STRING + "' />" +
|
||||
"</slot>" +
|
||||
"</iq>";
|
||||
|
||||
@Test
|
||||
public void checkSlotWithHeaders() throws Exception {
|
||||
Slot slot = PacketParserUtils.parseStanza(SLOT_WITH_HEADERS_IQ);
|
||||
|
||||
checkUrls(slot);
|
||||
|
||||
String slotXml = slot.toXML().toString();
|
||||
assertXMLEqual(SLOT_WITH_HEADERS_IQ, slotXml);
|
||||
}
|
||||
|
||||
private static void checkUrls(Slot slot) {
|
||||
assertEquals(PUT_URL, slot.getPutUrl());
|
||||
assertEquals(GET_URL, slot.getGetUrl());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ public class MamFinProviderTest extends MamTest {
|
|||
+ "</iq>";
|
||||
// @formatter:on
|
||||
|
||||
IQ iq = (IQ) PacketParserUtils.parseStanza(IQ_LIMITED_RESULTS_EXAMPLE);
|
||||
IQ iq = PacketParserUtils.parseStanza(IQ_LIMITED_RESULTS_EXAMPLE);
|
||||
|
||||
MamFinIQ mamFinIQ = (MamFinIQ) iq;
|
||||
Assert.assertEquals(mamFinIQ.getType(), Type.result);
|
||||
|
|
|
@ -31,18 +31,18 @@ import org.xmlpull.v1.XmlPullParser;
|
|||
|
||||
public class MamPrefIQProviderTest extends MamTest {
|
||||
|
||||
String exampleMamPrefsIQ1 = "<iq type='set' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:1' default='roster'>"
|
||||
private static final String exampleMamPrefsIQ1 = "<iq type='set' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:1' default='roster'>"
|
||||
+ "<always>" + "<jid>romeo@montague.lit</jid>" + "</always>" + "<never>"
|
||||
+ "<jid>montague@montague.lit</jid>" + "</never>" + "</prefs>" + "</iq>";
|
||||
|
||||
String exampleMamPrefsIQ2 = "<iq type='set' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:1' default='roster'>"
|
||||
private static final String exampleMamPrefsIQ2 = "<iq type='set' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:1' default='roster'>"
|
||||
+ "<always>" + "<jid>romeo@montague.lit</jid>" + "<jid>montague@montague.lit</jid>" + "</always>"
|
||||
+ "<never>" + "</never>" + "</prefs>" + "</iq>";
|
||||
|
||||
String exampleMamPrefsIQ3 = "<iq type='get' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:1'>" + "</prefs>"
|
||||
private static final String exampleMamPrefsIQ3 = "<iq type='get' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:1'>" + "</prefs>"
|
||||
+ "</iq>";
|
||||
|
||||
String exampleMamPrefsResultIQ = "<iq type='result' id='juliet3'>"
|
||||
private static final String exampleMamPrefsResultIQ = "<iq type='result' id='juliet3'>"
|
||||
+ "<prefs xmlns='urn:xmpp:mam:1' default='roster'>" + "<always>" + "<jid>romeo@montague.lit</jid>"
|
||||
+ "</always>" + "<never>" + "<jid>sarasa@montague.lit</jid>" + "<jid>montague@montague.lit</jid>"
|
||||
+ "</never>" + "</prefs>" + "</iq>";
|
||||
|
@ -53,14 +53,14 @@ public class MamPrefIQProviderTest extends MamTest {
|
|||
MamPrefsIQ mamPrefIQ1 = new MamPrefsIQProvider().parse(parser1);
|
||||
|
||||
Assert.assertEquals(IQ.Type.set, mamPrefIQ1.getType());
|
||||
Assert.assertEquals(mamPrefIQ1.getAlwaysJids().get(0), "romeo@montague.lit");
|
||||
Assert.assertEquals(mamPrefIQ1.getNeverJids().get(0), "montague@montague.lit");
|
||||
Assert.assertEquals(mamPrefIQ1.getAlwaysJids().get(0).toString(), "romeo@montague.lit");
|
||||
Assert.assertEquals(mamPrefIQ1.getNeverJids().get(0).toString(), "montague@montague.lit");
|
||||
|
||||
XmlPullParser parser2 = PacketParserUtils.getParserFor(exampleMamPrefsIQ2);
|
||||
MamPrefsIQ mamPrefIQ2 = new MamPrefsIQProvider().parse(parser2);
|
||||
Assert.assertEquals(IQ.Type.set, mamPrefIQ2.getType());
|
||||
Assert.assertEquals(mamPrefIQ2.getAlwaysJids().get(0), "romeo@montague.lit");
|
||||
Assert.assertEquals(mamPrefIQ2.getAlwaysJids().get(1), "montague@montague.lit");
|
||||
Assert.assertEquals(mamPrefIQ2.getAlwaysJids().get(0).toString(), "romeo@montague.lit");
|
||||
Assert.assertEquals(mamPrefIQ2.getAlwaysJids().get(1).toString(), "montague@montague.lit");
|
||||
Assert.assertTrue(mamPrefIQ2.getNeverJids().isEmpty());
|
||||
|
||||
XmlPullParser parser3 = PacketParserUtils.getParserFor(exampleMamPrefsIQ3);
|
||||
|
@ -70,7 +70,7 @@ public class MamPrefIQProviderTest extends MamTest {
|
|||
|
||||
@Test
|
||||
public void checkMamPrefResult() throws Exception {
|
||||
IQ iq = (IQ) PacketParserUtils.parseStanza(exampleMamPrefsResultIQ);
|
||||
IQ iq = PacketParserUtils.parseStanza(exampleMamPrefsResultIQ);
|
||||
|
||||
MamPrefsIQ mamPrefsIQ = (MamPrefsIQ) iq;
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ import org.junit.Test;
|
|||
|
||||
public class MamQueryIQProviderTest {
|
||||
|
||||
String exampleMamQueryIQ1 = "<iq type='set' id='query4'>" + "<query xmlns='urn:xmpp:mam:1' queryid='test'>"
|
||||
private static final String exampleMamQueryIQ1 = "<iq type='set' id='query4'>" + "<query xmlns='urn:xmpp:mam:1' queryid='test'>"
|
||||
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field type='hidden' var='FORM_TYPE'>"
|
||||
+ "<value>urn:xmpp:mam:1</value>" + "</field>"
|
||||
+ "<field type='text-single' var='urn:example:xmpp:free-text-search'>"
|
||||
|
@ -41,7 +41,7 @@ public class MamQueryIQProviderTest {
|
|||
+ "<value>{http://jabber.org/protocol/mood}mood/lonely</value>" + "</field>" + "</x>" + "</query>"
|
||||
+ "</iq>";
|
||||
|
||||
String exampleMamQueryIQ2 = "<iq type='result' id='form1'>" + "<query xmlns='urn:xmpp:mam:1'>"
|
||||
private static final String exampleMamQueryIQ2 = "<iq type='result' id='form1'>" + "<query xmlns='urn:xmpp:mam:1'>"
|
||||
+ "<x xmlns='jabber:x:data' type='form'>" + "<field type='hidden' var='FORM_TYPE'>"
|
||||
+ "<value>urn:xmpp:mam:1</value>" + "</field>" + "<field type='jid-single' var='with'/>"
|
||||
+ "<field type='text-single' var='start'/>" + "<field type='text-single' var='end'/>"
|
||||
|
@ -51,7 +51,7 @@ public class MamQueryIQProviderTest {
|
|||
@Test
|
||||
public void checkMamQueryIQProvider() throws Exception {
|
||||
// example 1
|
||||
IQ iq1 = (IQ) PacketParserUtils.parseStanza(exampleMamQueryIQ1);
|
||||
IQ iq1 = PacketParserUtils.parseStanza(exampleMamQueryIQ1);
|
||||
MamQueryIQ mamQueryIQ1 = (MamQueryIQ) iq1;
|
||||
|
||||
Assert.assertEquals(mamQueryIQ1.getType(), Type.set);
|
||||
|
@ -67,7 +67,7 @@ public class MamQueryIQProviderTest {
|
|||
Assert.assertEquals(fields1.get(2).getValues().get(0), "{http://jabber.org/protocol/mood}mood/lonely");
|
||||
|
||||
// example2
|
||||
IQ iq2 = (IQ) PacketParserUtils.parseStanza(exampleMamQueryIQ2);
|
||||
IQ iq2 = PacketParserUtils.parseStanza(exampleMamQueryIQ2);
|
||||
MamQueryIQ mamQueryIQ2 = (MamQueryIQ) iq2;
|
||||
|
||||
Assert.assertEquals(mamQueryIQ2.getType(), Type.result);
|
||||
|
|
|
@ -33,14 +33,14 @@ import org.xmlpull.v1.XmlPullParser;
|
|||
|
||||
public class MamResultProviderTest {
|
||||
|
||||
String exampleMamResultXml = "<result xmlns='urn:xmpp:mam:1' queryid='f27' id='28482-98726-73623'>"
|
||||
private static final String exampleMamResultXml = "<result xmlns='urn:xmpp:mam:1' queryid='f27' id='28482-98726-73623'>"
|
||||
+ "<forwarded xmlns='urn:xmpp:forward:0'>" + "<delay xmlns='urn:xmpp:delay' stamp='2010-07-10T23:08:25Z'/>"
|
||||
+ "<message xmlns='jabber:client'" + "to='juliet@capulet.lit/balcony'" + "from='romeo@montague.lit/orchard'"
|
||||
+ "type='chat'>"
|
||||
+ "<body>Call me but love, and I'll be new baptized; Henceforth I never will be Romeo.</body>"
|
||||
+ "</message>" + "</forwarded>" + "</result>";
|
||||
|
||||
String exampleResultMessage = "<message id='aeb213' to='juliet@capulet.lit/chamber'>"
|
||||
private static final String exampleResultMessage = "<message id='aeb213' to='juliet@capulet.lit/chamber'>"
|
||||
+ "<result xmlns='urn:xmpp:mam:1' queryid='f27' id='28482-98726-73623'>"
|
||||
+ "<forwarded xmlns='urn:xmpp:forward:0'>" + "<delay xmlns='urn:xmpp:delay' stamp='2010-07-10T23:08:25Z'/>"
|
||||
+ "<message xmlns='jabber:client' from='witch@shakespeare.lit' to='macbeth@shakespeare.lit'>"
|
||||
|
@ -62,15 +62,15 @@ public class MamResultProviderTest {
|
|||
Assert.assertEquals(forwarded.getDelayInformation().getStamp(), date);
|
||||
|
||||
Message message = (Message) forwarded.getForwardedStanza();
|
||||
Assert.assertEquals(message.getFrom(), "romeo@montague.lit/orchard");
|
||||
Assert.assertEquals(message.getTo(), "juliet@capulet.lit/balcony");
|
||||
Assert.assertEquals(message.getFrom().toString(), "romeo@montague.lit/orchard");
|
||||
Assert.assertEquals(message.getTo().toString(), "juliet@capulet.lit/balcony");
|
||||
Assert.assertEquals(message.getBody(),
|
||||
"Call me but love, and I'll be new baptized; Henceforth I never will be Romeo.");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkResultsParse() throws Exception {
|
||||
Message message = (Message) PacketParserUtils.parseStanza(exampleResultMessage);
|
||||
Message message = PacketParserUtils.parseStanza(exampleResultMessage);
|
||||
MamResultExtension mamResultExtension = MamResultExtension.from(message);
|
||||
|
||||
Assert.assertEquals(mamResultExtension.getQueryId(), "f27");
|
||||
|
@ -84,8 +84,8 @@ public class MamResultProviderTest {
|
|||
Assert.assertEquals(forwarded.getDelayInformation().getStamp(), date);
|
||||
|
||||
Message forwardedMessage = (Message) forwarded.getForwardedStanza();
|
||||
Assert.assertEquals(forwardedMessage.getFrom(), "witch@shakespeare.lit");
|
||||
Assert.assertEquals(forwardedMessage.getTo(), "macbeth@shakespeare.lit");
|
||||
Assert.assertEquals(forwardedMessage.getFrom().toString(), "witch@shakespeare.lit");
|
||||
Assert.assertEquals(forwardedMessage.getTo().toString(), "macbeth@shakespeare.lit");
|
||||
Assert.assertEquals(forwardedMessage.getBody(), "Hail to thee");
|
||||
}
|
||||
|
||||
|
|
|
@ -30,10 +30,10 @@ import org.jxmpp.jid.impl.JidCreate;
|
|||
|
||||
public class PreferencesTest {
|
||||
|
||||
String retrievePrefsStanzaExample = "<iq id='sarasa' type='get'>" + "<prefs xmlns='" + MamElements.NAMESPACE
|
||||
private static final String retrievePrefsStanzaExample = "<iq id='sarasa' type='get'>" + "<prefs xmlns='" + MamElements.NAMESPACE
|
||||
+ "'/>" + "</iq>";
|
||||
|
||||
String updatePrefsStanzaExample = "<iq id='sarasa' type='set'>" + "<prefs xmlns='" + MamElements.NAMESPACE
|
||||
private static final String updatePrefsStanzaExample = "<iq id='sarasa' type='set'>" + "<prefs xmlns='" + MamElements.NAMESPACE
|
||||
+ "' default='roster'>" + "<always>" + "<jid>romeo@montague.lit</jid>" + "<jid>other@montague.lit</jid>"
|
||||
+ "</always>" + "<never>" + "<jid>montague@montague.lit</jid>" + "</never>" + "</prefs>" + "</iq>";
|
||||
|
||||
|
|
|
@ -37,11 +37,11 @@ import org.jxmpp.jid.impl.JidCreate;
|
|||
|
||||
public class QueryArchiveTest extends MamTest {
|
||||
|
||||
String mamSimpleQueryIQ = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:1' queryid='testid'>"
|
||||
private static final String mamSimpleQueryIQ = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:1' queryid='testid'>"
|
||||
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field var='FORM_TYPE' type='hidden'>" + "<value>"
|
||||
+ MamElements.NAMESPACE + "</value>" + "</field>" + "</x>" + "</query>" + "</iq>";
|
||||
|
||||
String mamQueryResultExample = "<message to='hag66@shakespeare.lit/pda' from='coven@chat.shakespeare.lit' id='iasd207'>"
|
||||
private static final String mamQueryResultExample = "<message to='hag66@shakespeare.lit/pda' from='coven@chat.shakespeare.lit' id='iasd207'>"
|
||||
+ "<result xmlns='urn:xmpp:mam:1' queryid='g27' id='34482-21985-73620'>"
|
||||
+ "<forwarded xmlns='urn:xmpp:forward:0'>"
|
||||
+ "<delay xmlns='urn:xmpp:delay' stamp='2002-10-13T23:58:37.000+00:00'></delay>" + "<message "
|
||||
|
|
|
@ -29,7 +29,7 @@ import org.junit.Test;
|
|||
|
||||
public class ResultsLimitTest extends MamTest {
|
||||
|
||||
String resultsLimitStanza = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:1' queryid='testid'>"
|
||||
private static final String resultsLimitStanza = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:1' queryid='testid'>"
|
||||
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field var='FORM_TYPE' type='hidden'>" + "<value>"
|
||||
+ MamElements.NAMESPACE + "</value>" + "</field>" + "</x>" + "<set xmlns='http://jabber.org/protocol/rsm'>"
|
||||
+ "<max>10</max>" + "</set>" + "</query>" + "</iq>";
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue