1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-24 15:22:07 +01:00

Merge branch '4.2' into master-paul-merged

This commit is contained in:
Florian Schmaus 2017-12-17 11:16:02 +01:00
commit 431e5b3c67
434 changed files with 1770 additions and 1517 deletions

View file

@ -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.");

View file

@ -33,6 +33,6 @@ public interface ConnectionCreationListener {
*
* @param connection the newly created connection.
*/
public void connectionCreated(XMPPConnection connection);
void connectionCreated(XMPPConnection connection);
}

View file

@ -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);
}

View file

@ -24,6 +24,6 @@ package org.jivesoftware.smack;
@Deprecated
public interface ExceptionCallback {
public void processException(Exception exception);
void processException(Exception exception);
}

View file

@ -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() {

View file

@ -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);
}

View file

@ -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() {

View file

@ -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

View file

@ -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) {

View file

@ -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) {

View file

@ -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;

View file

@ -288,7 +288,7 @@ public class StanzaCollector {
}
}
private final void throwIfCancelled() {
private void throwIfCancelled() {
if (cancelled) {
throw new IllegalStateException("Packet collector already cancelled");
}

View file

@ -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;
}

View file

@ -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

View file

@ -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

View file

@ -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);
}

View file

@ -30,5 +30,5 @@ import org.jivesoftware.smack.SmackConfiguration;
*
*/
public interface SmackInitializer {
public List<Exception> initialize();
List<Exception> initialize();
}

View file

@ -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();
}

View file

@ -28,5 +28,5 @@ public interface Element {
*
* @return the stanza(/packet) extension as XML.
*/
public CharSequence toXML();
CharSequence toXML();
}

View file

@ -25,7 +25,7 @@ public class EmptyResultIQ extends IQ {
public EmptyResultIQ(IQ request) {
this();
initialzeAsResultFor(request);
initializeAsResultFor(request);
}
@Override

View file

@ -40,6 +40,6 @@ public interface ExtensionElement extends NamedElement {
*
* @return the namespace.
*/
public String getNamespace();
String getNamespace();
}

View file

@ -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());

View file

@ -28,6 +28,6 @@ public interface NamedElement extends Element {
*
* @return the element name.
*/
public String getElementName();
String getElementName();
}

View file

@ -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();
}

View file

@ -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,

View file

@ -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;
}

View file

@ -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.

View file

@ -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");
}

View file

@ -25,7 +25,7 @@ package org.jivesoftware.smack.proxy;
public class ProxyInfo
{
public static enum ProxyType
public enum ProxyType
{
HTTP,
SOCKS4,

View file

@ -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;
}

View file

@ -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

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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);

View file

@ -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 {

View file

@ -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) {

View file

@ -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);
}
}

View file

@ -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

View file

@ -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);

View file

@ -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");
}
}

View file

@ -33,6 +33,6 @@ public interface ReaderListener {
*
* @param str the read String
*/
public abstract void read(String str);
void read(String str);
}

View file

@ -18,6 +18,6 @@ package org.jivesoftware.smack.util;
public interface StringTransformer {
public String transform(String string);
String transform(String string);
}

View file

@ -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;
}

View file

@ -18,6 +18,6 @@ package org.jivesoftware.smack.util;
public interface SuccessCallback<T> {
public void onSuccess(T result);
void onSuccess(T result);
}

View file

@ -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>
*

View file

@ -29,6 +29,6 @@ public interface TypedCloneable<T> extends Cloneable {
*
* @return a cloned version of this instance.
*/
public T clone();
T clone();
}

View file

@ -33,6 +33,6 @@ public interface WriterListener {
*
* @param str the written string
*/
public abstract void write(String str);
void write(String str);
}

View file

@ -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

View file

@ -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");

View file

@ -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);
}

View file

@ -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;

View file

@ -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
{

View file

@ -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

View file

@ -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);

View file

@ -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;

View file

@ -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");

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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();

View file

@ -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);

View file

@ -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
}

View file

@ -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);

View file

@ -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.

View file

@ -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);
}

View file

@ -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,
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}
}

View file

@ -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;
}

View file

@ -29,7 +29,7 @@ public class IoTSetResponse extends IQ {
public IoTSetResponse(IoTSetRequest iotSetRequest) {
this();
initialzeAsResultFor(iotSetRequest);
initializeAsResultFor(iotSetRequest);
}
@Override

View file

@ -32,7 +32,7 @@ public abstract class SetData implements NamedElement {
private final String toStringCache;
private Type() {
Type() {
toStringCache = this.name().toLowerCase(Locale.US);
}

View file

@ -18,6 +18,6 @@ package org.jivesoftware.smackx.iot.data;
public interface ThingMomentaryReadOutRequest {
public void momentaryReadOutRequest(ThingMomentaryReadOutResult callback);
void momentaryReadOutRequest(ThingMomentaryReadOutResult callback);
}

View file

@ -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);
}

View file

@ -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;

View file

@ -20,6 +20,6 @@ import org.jxmpp.jid.BareJid;
public interface ThingStateChangeListener {
public void owned(BareJid owner);
void owned(BareJid owner);
}

View file

@ -25,7 +25,7 @@ public class Tag implements NamedElement {
public enum Type {
str,
num;
num
}
private final String name;

View file

@ -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;

View file

@ -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));

View file

@ -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();

View file

@ -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;
}
/**

View file

@ -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>

View file

@ -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);

View file

@ -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;

View file

@ -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());
}

View file

@ -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());
}

View file

@ -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());
}

View file

@ -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());
}

View file

@ -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;
}
}

View file

@ -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>";

View file

@ -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());
}
}

View file

@ -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'"

View file

@ -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' "

View file

@ -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());
}
}

View file

@ -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);

View file

@ -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;

View file

@ -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);

View file

@ -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");
}

View file

@ -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>";

View file

@ -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 "

View file

@ -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