mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-24 15:22:07 +01:00
Add support for XEP-360: Nonzas
SMACK-682
This commit is contained in:
parent
734695c80e
commit
710948c8f7
20 changed files with 126 additions and 86 deletions
|
@ -9,6 +9,13 @@ for many of the protocol extensions.
|
||||||
This manual provides details about each of the "smackx" extensions, including
|
This manual provides details about each of the "smackx" extensions, including
|
||||||
what it is, how to use it, and some simple example code.
|
what it is, how to use it, and some simple example code.
|
||||||
|
|
||||||
|
Currently supported XEPs of Smack (all subprojects)
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
| Name | XEP | Description |
|
||||||
|
|---------------------------------------------|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
|
||||||
|
| Nonzas | [XEP-0360](http://xmpp.org/extensions/xep-0360.html) | Defines the term "Nonza", describing every top level stream element that is not a Stanza. |
|
||||||
|
|
||||||
Currently supported XEPs of smack-tcp
|
Currently supported XEPs of smack-tcp
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
|
@ -17,8 +24,8 @@ Currently supported XEPs of smack-tcp
|
||||||
| [Stream Management](streammanagement.md) | [XEP-0198](http://xmpp.org/extensions/xep-0198.html) | Allows active management of an XML Stream between two XMPP entities (stanza acknowledgement, stream resumption). |
|
| [Stream Management](streammanagement.md) | [XEP-0198](http://xmpp.org/extensions/xep-0198.html) | Allows active management of an XML Stream between two XMPP entities (stanza acknowledgement, stream resumption). |
|
||||||
|
|
||||||
|
|
||||||
Smack Extensions and currently supported XEPs by Smack (smack-extensions)
|
Smack Extensions and currently supported XEPs of smack-extensions
|
||||||
-------------------------------------------------------------------------
|
-----------------------------------------------------------------
|
||||||
|
|
||||||
| Name | XEP | Description |
|
| Name | XEP | Description |
|
||||||
|---------------------------------------------|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
|
|---------------------------------------------|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
|
||||||
|
@ -63,8 +70,8 @@ Smack Extensions and currently supported XEPs by Smack (smack-extensions)
|
||||||
| [Jive Properties](properties.md) | n/a | TODO |
|
| [Jive Properties](properties.md) | n/a | TODO |
|
||||||
|
|
||||||
|
|
||||||
Experimental Smack Extensions and currently supported XEPs by Smack (smack-experimental)
|
Experimental Smack Extensions and currently supported XEPs of smack-experimental
|
||||||
----------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
| Name | XEP | Description |
|
| Name | XEP | Description |
|
||||||
|---------------------------------------------|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
|
|---------------------------------------------|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
|
||||||
|
@ -75,8 +82,8 @@ Experimental Smack Extensions and currently supported XEPs by Smack (smack-exper
|
||||||
| Client State Indication | [XEP-0352](http://xmpp.org/extensions/xep-0352.html) | A way for the client to indicate its active/inactive state. |
|
| Client State Indication | [XEP-0352](http://xmpp.org/extensions/xep-0352.html) | A way for the client to indicate its active/inactive state. |
|
||||||
|
|
||||||
|
|
||||||
Legacy Smack Extensions and currently supported XEPs by Smack (smack-legacy)
|
Legacy Smack Extensions and currently supported XEPs of smack-legacy
|
||||||
----------------------------------------------------------------------------
|
--------------------------------------------------------------------
|
||||||
|
|
||||||
If a XEP becomes 'Deprecated' or 'Obsolete' the code will be moved to the *smack-legacy* subproject.
|
If a XEP becomes 'Deprecated' or 'Obsolete' the code will be moved to the *smack-legacy* subproject.
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ import org.jivesoftware.smack.packet.Element;
|
||||||
import org.jivesoftware.smack.packet.IQ;
|
import org.jivesoftware.smack.packet.IQ;
|
||||||
import org.jivesoftware.smack.packet.Message;
|
import org.jivesoftware.smack.packet.Message;
|
||||||
import org.jivesoftware.smack.packet.Stanza;
|
import org.jivesoftware.smack.packet.Stanza;
|
||||||
import org.jivesoftware.smack.packet.PlainStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
import org.jivesoftware.smack.packet.Presence;
|
import org.jivesoftware.smack.packet.Presence;
|
||||||
import org.jivesoftware.smack.sasl.packet.SaslStreamElements.SASLFailure;
|
import org.jivesoftware.smack.sasl.packet.SaslStreamElements.SASLFailure;
|
||||||
import org.jivesoftware.smack.sasl.packet.SaslStreamElements.Success;
|
import org.jivesoftware.smack.sasl.packet.SaslStreamElements.Success;
|
||||||
|
@ -222,7 +222,7 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void send(PlainStreamElement element) throws NotConnectedException {
|
public void sendNonza(Nonza element) throws NotConnectedException {
|
||||||
if (done) {
|
if (done) {
|
||||||
throw new NotConnectedException();
|
throw new NotConnectedException();
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
import org.jivesoftware.smack.packet.Presence;
|
import org.jivesoftware.smack.packet.Presence;
|
||||||
import org.jivesoftware.smack.packet.Session;
|
import org.jivesoftware.smack.packet.Session;
|
||||||
import org.jivesoftware.smack.packet.StartTls;
|
import org.jivesoftware.smack.packet.StartTls;
|
||||||
import org.jivesoftware.smack.packet.PlainStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
import org.jivesoftware.smack.packet.StreamError;
|
import org.jivesoftware.smack.packet.StreamError;
|
||||||
import org.jivesoftware.smack.packet.XMPPError;
|
import org.jivesoftware.smack.packet.XMPPError;
|
||||||
import org.jivesoftware.smack.parsing.ParsingExceptionCallback;
|
import org.jivesoftware.smack.parsing.ParsingExceptionCallback;
|
||||||
|
@ -340,7 +340,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
|
||||||
protected abstract void sendStanzaInternal(Stanza packet) throws NotConnectedException, InterruptedException;
|
protected abstract void sendStanzaInternal(Stanza packet) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract void send(PlainStreamElement element) throws NotConnectedException, InterruptedException;
|
public abstract void sendNonza(Nonza element) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract boolean isUsingCompression();
|
public abstract boolean isUsingCompression();
|
||||||
|
|
|
@ -24,7 +24,7 @@ import org.jivesoftware.smack.SmackException.NoResponseException;
|
||||||
import org.jivesoftware.smack.SmackException.NotConnectedException;
|
import org.jivesoftware.smack.SmackException.NotConnectedException;
|
||||||
import org.jivesoftware.smack.packet.TopLevelStreamElement;
|
import org.jivesoftware.smack.packet.TopLevelStreamElement;
|
||||||
import org.jivesoftware.smack.packet.Stanza;
|
import org.jivesoftware.smack.packet.Stanza;
|
||||||
import org.jivesoftware.smack.packet.PlainStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
|
|
||||||
public class SynchronizationPoint<E extends Exception> {
|
public class SynchronizationPoint<E extends Exception> {
|
||||||
|
|
||||||
|
@ -79,8 +79,8 @@ public class SynchronizationPoint<E extends Exception> {
|
||||||
if (request instanceof Stanza) {
|
if (request instanceof Stanza) {
|
||||||
connection.sendStanza((Stanza) request);
|
connection.sendStanza((Stanza) request);
|
||||||
}
|
}
|
||||||
else if (request instanceof PlainStreamElement){
|
else if (request instanceof Nonza){
|
||||||
connection.send((PlainStreamElement) request);
|
connection.sendNonza((Nonza) request);
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalStateException("Unsupported element type");
|
throw new IllegalStateException("Unsupported element type");
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ public class SynchronizationPoint<E extends Exception> {
|
||||||
* @throws NoResponseException if no response was received.
|
* @throws NoResponseException if no response was received.
|
||||||
* @throws NotConnectedException if the connection is not connected.
|
* @throws NotConnectedException if the connection is not connected.
|
||||||
*/
|
*/
|
||||||
public void sendAndWaitForResponseOrThrow(PlainStreamElement request) throws E, NoResponseException,
|
public void sendAndWaitForResponseOrThrow(Nonza request) throws E, NoResponseException,
|
||||||
NotConnectedException, InterruptedException {
|
NotConnectedException, InterruptedException {
|
||||||
sendAndWaitForResponse(request);
|
sendAndWaitForResponse(request);
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ import org.jivesoftware.smack.iqrequest.IQRequestHandler;
|
||||||
import org.jivesoftware.smack.packet.IQ;
|
import org.jivesoftware.smack.packet.IQ;
|
||||||
import org.jivesoftware.smack.packet.Stanza;
|
import org.jivesoftware.smack.packet.Stanza;
|
||||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
import org.jivesoftware.smack.packet.PlainStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
import org.jxmpp.jid.DomainBareJid;
|
import org.jxmpp.jid.DomainBareJid;
|
||||||
import org.jxmpp.jid.EntityFullJid;
|
import org.jxmpp.jid.EntityFullJid;
|
||||||
|
|
||||||
|
@ -186,18 +186,18 @@ public interface XMPPConnection {
|
||||||
public void sendStanza(Stanza stanza) throws NotConnectedException, InterruptedException;
|
public void sendStanza(Stanza stanza) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a PlainStreamElement.
|
* Send a Nonza.
|
||||||
* <p>
|
* <p>
|
||||||
* <b>This method is not meant for end-user usage!</b> It allows sending plain stream elements, which should not be
|
* <b>This method is not meant for end-user usage!</b> It allows sending plain stream elements, which should not be
|
||||||
* done by a user manually. <b>Doing so may result in a unstable or unusable connection.</b> Certain Smack APIs use
|
* done by a user manually. <b>Doing so may result in a unstable or unusable connection.</b> Certain Smack APIs use
|
||||||
* this method to send plain stream elements.
|
* this method to send plain stream elements.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param element
|
* @param nonza the Nonza to send.
|
||||||
* @throws NotConnectedException
|
* @throws NotConnectedException
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException
|
||||||
*/
|
*/
|
||||||
public void send(PlainStreamElement element) throws NotConnectedException, InterruptedException;
|
public void sendNonza(Nonza nonza) throws NotConnectedException, InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a connection listener to this connection that will be notified when
|
* Adds a connection listener to this connection that will be notified when
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2014 Florian Schmaus
|
* Copyright © 2014-2015 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -19,11 +19,11 @@ package org.jivesoftware.smack.compress.packet;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.FullStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
import org.jivesoftware.smack.util.XmlStringBuilder;
|
import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
|
|
||||||
public class Compress extends FullStreamElement {
|
public class Compress implements Nonza {
|
||||||
|
|
||||||
public static final String ELEMENT = "compress";
|
public static final String ELEMENT = "compress";
|
||||||
public static final String NAMESPACE = "http://jabber.org/protocol/compress";
|
public static final String NAMESPACE = "http://jabber.org/protocol/compress";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2014 Florian Schmaus
|
* Copyright © 2014-2015 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -16,9 +16,9 @@
|
||||||
*/
|
*/
|
||||||
package org.jivesoftware.smack.compress.packet;
|
package org.jivesoftware.smack.compress.packet;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.FullStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
|
|
||||||
public final class Compressed extends FullStreamElement {
|
public final class Compressed implements Nonza {
|
||||||
|
|
||||||
public static final String ELEMENT = "compressed";
|
public static final String ELEMENT = "compressed";
|
||||||
public static final String NAMESPACE = Compress.NAMESPACE;
|
public static final String NAMESPACE = Compress.NAMESPACE;
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 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.packet;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base class for Stream elements. Everything that is not a stanza (RFC 6120 8.), ie. message,
|
|
||||||
* presence and iq, should sublcass this class instead of {@link Stanza}.
|
|
||||||
*
|
|
||||||
* @author Florian Schmaus
|
|
||||||
*/
|
|
||||||
public abstract class FullStreamElement implements PlainStreamElement, ExtensionElement {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2014 Florian Schmaus
|
* Copyright © 2014-2015 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
package org.jivesoftware.smack.packet;
|
package org.jivesoftware.smack.packet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plain stream elements, ie. everything that is <b>not a stanza</b> as defined
|
* A Nonza, i.e everything that is <b>not a stanza</b> as defined
|
||||||
* RFC 6120 8. Stanzas are {@link Message}, {@link Presence} and {@link IQ}.
|
* RFC 6120 8. Stanzas are {@link Message}, {@link Presence} and {@link IQ}.
|
||||||
* Everything else should sublcass this class instead of {@link Stanza}.
|
* Everything else should sublcass this class instead of {@link Stanza}.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -28,7 +28,8 @@ package org.jivesoftware.smack.packet;
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author Florian Schmaus
|
* @author Florian Schmaus
|
||||||
|
* @see <a href="http://xmpp.org/extensions/xep-0360.html">XEP-0360: Nonzas (are not Stanzas)</a>
|
||||||
*/
|
*/
|
||||||
public interface PlainStreamElement extends TopLevelStreamElement {
|
public interface Nonza extends TopLevelStreamElement, ExtensionElement {
|
||||||
|
|
||||||
}
|
}
|
|
@ -18,7 +18,7 @@ package org.jivesoftware.smack.packet;
|
||||||
|
|
||||||
import org.jivesoftware.smack.util.XmlStringBuilder;
|
import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
|
|
||||||
public class StartTls extends FullStreamElement {
|
public class StartTls implements Nonza {
|
||||||
|
|
||||||
public static final String ELEMENT = "starttls";
|
public static final String ELEMENT = "starttls";
|
||||||
public static final String NAMESPACE = "urn:ietf:params:xml:ns:xmpp-tls";
|
public static final String NAMESPACE = "urn:ietf:params:xml:ns:xmpp-tls";
|
||||||
|
|
|
@ -97,7 +97,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
*
|
*
|
||||||
* @author Gaston Dombiak
|
* @author Gaston Dombiak
|
||||||
*/
|
*/
|
||||||
public class StreamError extends AbstractError implements PlainStreamElement {
|
public class StreamError extends AbstractError implements Nonza {
|
||||||
|
|
||||||
public static final String ELEMENT = "stream:error";
|
public static final String ELEMENT = "stream:error";
|
||||||
public static final String NAMESPACE = "urn:ietf:params:xml:ns:xmpp-streams";
|
public static final String NAMESPACE = "urn:ietf:params:xml:ns:xmpp-streams";
|
||||||
|
@ -197,4 +197,14 @@ public class StreamError extends AbstractError implements PlainStreamElement {
|
||||||
return condition;
|
return condition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamespace() {
|
||||||
|
return NAMESPACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getElementName() {
|
||||||
|
return ELEMENT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
/**
|
/**
|
||||||
* The stream open <b>tag</b>.
|
* The stream open <b>tag</b>.
|
||||||
*/
|
*/
|
||||||
public class StreamOpen extends FullStreamElement {
|
public class StreamOpen implements Nonza {
|
||||||
|
|
||||||
public static final String ELEMENT = "stream:stream";
|
public static final String ELEMENT = "stream:stream";
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ package org.jivesoftware.smack.packet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A XMPP top level stream element. This is either a stanza ({@link Stanza}) or
|
* A XMPP top level stream element. This is either a stanza ({@link Stanza}) or
|
||||||
* just a plain stream element ({@link PlainStreamElement}).
|
* just a plain stream element ({@link Nonza}).
|
||||||
*/
|
*/
|
||||||
public interface TopLevelStreamElement extends Element {
|
public interface TopLevelStreamElement extends Element {
|
||||||
|
|
||||||
|
|
|
@ -213,7 +213,7 @@ public abstract class SASLMechanism implements Comparable<SASLMechanism> {
|
||||||
authenticationText = "=";
|
authenticationText = "=";
|
||||||
}
|
}
|
||||||
// Send the authentication to the server
|
// Send the authentication to the server
|
||||||
connection.send(new AuthMechanism(getName(), authenticationText));
|
connection.sendNonza(new AuthMechanism(getName(), authenticationText));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -252,7 +252,7 @@ public abstract class SASLMechanism implements Comparable<SASLMechanism> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the authentication to the server
|
// Send the authentication to the server
|
||||||
connection.send(responseStanza);
|
connection.sendNonza(responseStanza);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -19,7 +19,7 @@ package org.jivesoftware.smack.sasl.packet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.AbstractError;
|
import org.jivesoftware.smack.packet.AbstractError;
|
||||||
import org.jivesoftware.smack.packet.PlainStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
import org.jivesoftware.smack.sasl.SASLError;
|
import org.jivesoftware.smack.sasl.SASLError;
|
||||||
import org.jivesoftware.smack.util.Objects;
|
import org.jivesoftware.smack.util.Objects;
|
||||||
import org.jivesoftware.smack.util.StringUtils;
|
import org.jivesoftware.smack.util.StringUtils;
|
||||||
|
@ -31,7 +31,7 @@ public class SaslStreamElements {
|
||||||
/**
|
/**
|
||||||
* Initiating SASL authentication by select a mechanism.
|
* Initiating SASL authentication by select a mechanism.
|
||||||
*/
|
*/
|
||||||
public static class AuthMechanism implements PlainStreamElement {
|
public static class AuthMechanism implements Nonza {
|
||||||
public static final String ELEMENT = "auth";
|
public static final String ELEMENT = "auth";
|
||||||
|
|
||||||
private final String mechanism;
|
private final String mechanism;
|
||||||
|
@ -59,12 +59,22 @@ public class SaslStreamElements {
|
||||||
public String getAuthenticationText() {
|
public String getAuthenticationText() {
|
||||||
return authenticationText;
|
return authenticationText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamespace() {
|
||||||
|
return NAMESPACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getElementName() {
|
||||||
|
return ELEMENT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A SASL challenge stream element.
|
* A SASL challenge stream element.
|
||||||
*/
|
*/
|
||||||
public static class Challenge implements PlainStreamElement {
|
public static class Challenge implements Nonza {
|
||||||
public static final String ELEMENT = "challenge";
|
public static final String ELEMENT = "challenge";
|
||||||
|
|
||||||
private final String data;
|
private final String data;
|
||||||
|
@ -81,12 +91,22 @@ public class SaslStreamElements {
|
||||||
xml.closeElement(ELEMENT);
|
xml.closeElement(ELEMENT);
|
||||||
return xml;
|
return xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamespace() {
|
||||||
|
return NAMESPACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getElementName() {
|
||||||
|
return ELEMENT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A SASL response stream element.
|
* A SASL response stream element.
|
||||||
*/
|
*/
|
||||||
public static class Response implements PlainStreamElement {
|
public static class Response implements Nonza {
|
||||||
public static final String ELEMENT = "response";
|
public static final String ELEMENT = "response";
|
||||||
|
|
||||||
private final String authenticationText;
|
private final String authenticationText;
|
||||||
|
@ -111,12 +131,22 @@ public class SaslStreamElements {
|
||||||
public String getAuthenticationText() {
|
public String getAuthenticationText() {
|
||||||
return authenticationText;
|
return authenticationText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamespace() {
|
||||||
|
return NAMESPACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getElementName() {
|
||||||
|
return ELEMENT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A SASL success stream element.
|
* A SASL success stream element.
|
||||||
*/
|
*/
|
||||||
public static class Success implements PlainStreamElement {
|
public static class Success implements Nonza {
|
||||||
public static final String ELEMENT = "success";
|
public static final String ELEMENT = "success";
|
||||||
|
|
||||||
final private String data;
|
final private String data;
|
||||||
|
@ -148,13 +178,23 @@ public class SaslStreamElements {
|
||||||
xml.closeElement(ELEMENT);
|
xml.closeElement(ELEMENT);
|
||||||
return xml;
|
return xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamespace() {
|
||||||
|
return NAMESPACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getElementName() {
|
||||||
|
return ELEMENT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A SASL failure stream element, also called "SASL Error".
|
* A SASL failure stream element, also called "SASL Error".
|
||||||
* @see <a href="http://xmpp.org/rfcs/rfc6120.html#sasl-errors">RFC 6120 6.5 SASL Errors</a>
|
* @see <a href="http://xmpp.org/rfcs/rfc6120.html#sasl-errors">RFC 6120 6.5 SASL Errors</a>
|
||||||
*/
|
*/
|
||||||
public static class SASLFailure extends AbstractError implements PlainStreamElement {
|
public static class SASLFailure extends AbstractError implements Nonza {
|
||||||
public static final String ELEMENT = "failure";
|
public static final String ELEMENT = "failure";
|
||||||
|
|
||||||
private final SASLError saslError;
|
private final SASLError saslError;
|
||||||
|
@ -209,5 +249,15 @@ public class SaslStreamElements {
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return toXML().toString();
|
return toXML().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamespace() {
|
||||||
|
return NAMESPACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getElementName() {
|
||||||
|
return ELEMENT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
import org.jivesoftware.smack.packet.Stanza;
|
import org.jivesoftware.smack.packet.Stanza;
|
||||||
import org.jivesoftware.smack.packet.PlainStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
import org.jivesoftware.smack.packet.TopLevelStreamElement;
|
import org.jivesoftware.smack.packet.TopLevelStreamElement;
|
||||||
import org.jxmpp.jid.EntityFullJid;
|
import org.jxmpp.jid.EntityFullJid;
|
||||||
import org.jxmpp.jid.JidTestUtil;
|
import org.jxmpp.jid.JidTestUtil;
|
||||||
|
@ -124,7 +124,7 @@ public class DummyConnection extends AbstractXMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void send(PlainStreamElement element) {
|
public void sendNonza(Nonza element) {
|
||||||
queue.add(element);
|
queue.add(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,12 +30,12 @@ public class ClientStateIndicationManager {
|
||||||
|
|
||||||
public static void active(XMPPConnection connection) throws NotConnectedException, InterruptedException {
|
public static void active(XMPPConnection connection) throws NotConnectedException, InterruptedException {
|
||||||
throwIaeIfNotSupported(connection);
|
throwIaeIfNotSupported(connection);
|
||||||
connection.send(ClientStateIndication.Active.INSTANCE);
|
connection.sendNonza(ClientStateIndication.Active.INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void inactive(XMPPConnection connection) throws NotConnectedException, InterruptedException {
|
public static void inactive(XMPPConnection connection) throws NotConnectedException, InterruptedException {
|
||||||
throwIaeIfNotSupported(connection);
|
throwIaeIfNotSupported(connection);
|
||||||
connection.send(ClientStateIndication.Inactive.INSTANCE);
|
connection.sendNonza(ClientStateIndication.Inactive.INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isSupported(XMPPConnection connection) {
|
public static boolean isSupported(XMPPConnection connection) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2014 Florian Schmaus
|
* Copyright © 2014-2015 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.jivesoftware.smackx.csi.packet;
|
package org.jivesoftware.smackx.csi.packet;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.FullStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,7 +27,7 @@ import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
public class ClientStateIndication {
|
public class ClientStateIndication {
|
||||||
public static final String NAMESPACE = "urn:xmpp:csi:0";
|
public static final String NAMESPACE = "urn:xmpp:csi:0";
|
||||||
|
|
||||||
public static final class Active extends FullStreamElement {
|
public static final class Active implements Nonza {
|
||||||
public static final Active INSTANCE = new Active();
|
public static final Active INSTANCE = new Active();
|
||||||
public static final String ELEMENT = "active";
|
public static final String ELEMENT = "active";
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ public class ClientStateIndication {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class Inactive extends FullStreamElement {
|
public static final class Inactive implements Nonza {
|
||||||
public static final Inactive INSTANCE = new Inactive();
|
public static final Inactive INSTANCE = new Inactive();
|
||||||
public static final String ELEMENT = "inactive";
|
public static final String ELEMENT = "inactive";
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.jivesoftware.smack.sm.packet;
|
package org.jivesoftware.smack.sm.packet;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.FullStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
import org.jivesoftware.smack.packet.XMPPError;
|
import org.jivesoftware.smack.packet.XMPPError;
|
||||||
import org.jivesoftware.smack.util.XmlStringBuilder;
|
import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
|
@ -50,7 +50,7 @@ public class StreamManagement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static abstract class AbstractEnable extends FullStreamElement {
|
private static abstract class AbstractEnable implements Nonza {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Preferred maximum resumption time in seconds (optional).
|
* Preferred maximum resumption time in seconds (optional).
|
||||||
|
@ -186,7 +186,7 @@ public class StreamManagement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Failed extends FullStreamElement {
|
public static class Failed implements Nonza {
|
||||||
public static final String ELEMENT = "failed";
|
public static final String ELEMENT = "failed";
|
||||||
|
|
||||||
private XMPPError.Condition condition;
|
private XMPPError.Condition condition;
|
||||||
|
@ -229,7 +229,7 @@ public class StreamManagement {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static abstract class AbstractResume extends FullStreamElement {
|
private static abstract class AbstractResume implements Nonza {
|
||||||
|
|
||||||
private final long handledCount;
|
private final long handledCount;
|
||||||
private final String previd;
|
private final String previd;
|
||||||
|
@ -288,7 +288,7 @@ public class StreamManagement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class AckAnswer extends FullStreamElement {
|
public static class AckAnswer implements Nonza {
|
||||||
public static final String ELEMENT = "a";
|
public static final String ELEMENT = "a";
|
||||||
|
|
||||||
private final long handledCount;
|
private final long handledCount;
|
||||||
|
@ -320,7 +320,7 @@ public class StreamManagement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class AckRequest extends FullStreamElement {
|
public static final class AckRequest implements Nonza {
|
||||||
public static final String ELEMENT = "r";
|
public static final String ELEMENT = "r";
|
||||||
public static final AckRequest INSTANCE = new AckRequest();
|
public static final AckRequest INSTANCE = new AckRequest();
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ import org.jivesoftware.smack.sm.packet.StreamManagement.Resumed;
|
||||||
import org.jivesoftware.smack.sm.packet.StreamManagement.StreamManagementFeature;
|
import org.jivesoftware.smack.sm.packet.StreamManagement.StreamManagementFeature;
|
||||||
import org.jivesoftware.smack.sm.predicates.Predicate;
|
import org.jivesoftware.smack.sm.predicates.Predicate;
|
||||||
import org.jivesoftware.smack.sm.provider.ParseStreamManagement;
|
import org.jivesoftware.smack.sm.provider.ParseStreamManagement;
|
||||||
import org.jivesoftware.smack.packet.PlainStreamElement;
|
import org.jivesoftware.smack.packet.Nonza;
|
||||||
import org.jivesoftware.smack.packet.XMPPError;
|
import org.jivesoftware.smack.packet.XMPPError;
|
||||||
import org.jivesoftware.smack.util.ArrayBlockingQueueWithShutdown;
|
import org.jivesoftware.smack.util.ArrayBlockingQueueWithShutdown;
|
||||||
import org.jivesoftware.smack.util.Async;
|
import org.jivesoftware.smack.util.Async;
|
||||||
|
@ -511,7 +511,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void send(PlainStreamElement element) throws NotConnectedException, InterruptedException {
|
public void sendNonza(Nonza element) throws NotConnectedException, InterruptedException {
|
||||||
packetWriter.sendStreamElement(element);
|
packetWriter.sendStreamElement(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -847,7 +847,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.getSecurityMode() != ConnectionConfiguration.SecurityMode.disabled) {
|
if (config.getSecurityMode() != ConnectionConfiguration.SecurityMode.disabled) {
|
||||||
send(new StartTls());
|
sendNonza(new StartTls());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If TLS is required but the server doesn't offer it, disconnect
|
// If TLS is required but the server doesn't offer it, disconnect
|
||||||
|
@ -886,7 +886,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
|
||||||
from = XmppStringUtils.completeJidFrom(localpart, to);
|
from = XmppStringUtils.completeJidFrom(localpart, to);
|
||||||
}
|
}
|
||||||
String id = getStreamId();
|
String id = getStreamId();
|
||||||
send(new StreamOpen(to, from, id));
|
sendNonza(new StreamOpen(to, from, id));
|
||||||
try {
|
try {
|
||||||
packetReader.parser = PacketParserUtils.newXmppParser(reader);
|
packetReader.parser = PacketParserUtils.newXmppParser(reader);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue