diff --git a/.travis.yml b/.travis.yml index 76b041f70..d8223459f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,8 +35,7 @@ install: gradle assemble --stacktrace # archive to additionaly test if artifact creation is # functional. Which hasn't always be the case in the past, see # 90cbcaebc7a89f4f771f733a33ac9f389df85be2 -# Also run javadocAll to ensure it works. -script: gradle check install javadocAll --stacktrace +script: gradle check install --stacktrace after_success: - JAVAC_VERSION=$((javac -version) 2>&1) diff --git a/build.gradle b/build.gradle index 2c9ba38b2..c59d49903 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ buildscript { plugins { id 'ru.vyarus.animalsniffer' version '1.5.0' - id 'net.ltgt.errorprone' version '0.8.1' + id 'net.ltgt.errorprone' version '0.8' } apply plugin: 'org.kordamp.gradle.markdown' @@ -203,11 +203,7 @@ allprojects { '-Werror', ] options.errorprone { - error( - "UnusedVariable", - "UnusedMethod", - "MethodCanBeStatic", - ) + error("UnusedVariable", "UnusedMethod") errorproneArgs = [ // Disable errorprone checks '-Xep:TypeParameterUnusedInFormals:OFF', @@ -297,25 +293,13 @@ task copyAllJavadocDocFiles(type: Copy) { task javadocAll(type: Javadoc, dependsOn: copyAllJavadocDocFiles) { source javadocAllProjects.collect {project -> - project.sourceSets.main.allJava.findAll { - // Filter out symbolic links to avoid - // "warning: a package-info.java file has already been seen for package" - // javadoc warnings. - !java.nio.file.Files.isSymbolicLink(it.toPath()) - } - } + project.sourceSets.main.allJava } destinationDir = javadocAllDir // Might need a classpath classpath = files(subprojects.collect {project -> project.sourceSets.main.compileClasspath}) classpath += files(androidBootClasspath) options { - // Add source compatiblitiy statement to work around bug in JDK 11 - // See - // - https://bugs.openjdk.java.net/browse/JDK-8217177 - // - http://hg.openjdk.java.net/jdk/jdk/rev/8ce4083fc831 - // - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=920020 - source = sourceCompatibility linkSource = true use = true links = [ diff --git a/documentation/extensions/index.md b/documentation/extensions/index.md index b5c279f7d..2adcb5170 100644 --- a/documentation/extensions/index.md +++ b/documentation/extensions/index.md @@ -90,7 +90,6 @@ Experimental Smack Extensions and currently supported XEPs of smack-experimental | [Internet of Things - Sensor Data](iot.md) | [XEP-0323](https://xmpp.org/extensions/xep-0323.html) | n/a | Sensor data interchange over XMPP. | | [Internet of Things - Provisioning](iot.md) | [XEP-0324](https://xmpp.org/extensions/xep-0324.html) | n/a | Provisioning, access rights and user privileges for the Internet of Things. | | [Internet of Things - Control](iot.md) | [XEP-0325](https://xmpp.org/extensions/xep-0325.html) | n/a | Describes how to control devices or actuators in an XMPP-based sensor network. | -| Jid Prep | [XEP-0328](https://xmpp.org/extensions/xep-0328.html) | 0.1 | Describes a way for an XMPP client to request an XMPP server to prep and normalize a given JID. | | [HTTP over XMPP transport](hoxt.md) | [XEP-0332](https://xmpp.org/extensions/xep-0332.html) | n/a | Allows to transport HTTP communication over XMPP peer-to-peer networks. | | Chat Markers | [XEP-0333](https://xmpp.org/extensions/xep-0333.html) | n/a | A solution of marking the last received, displayed and acknowledged message in a chat. | | Message Processing Hints | [XEP-0334](https://xmpp.org/extensions/xep-0334.html) | n/a | Hints to entities routing or receiving a message. | diff --git a/smack-android-extensions/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-android-extensions/src/main/java/org/jivesoftware/smackx/package-info.java deleted file mode 120000 index f0646658f..000000000 --- a/smack-android-extensions/src/main/java/org/jivesoftware/smackx/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../smack-extensions/src/main/java/org/jivesoftware/smackx/package-info.java \ No newline at end of file diff --git a/smack-android-extensions/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-android-extensions/src/main/java/org/jivesoftware/smackx/package-info.java new file mode 100644 index 000000000..01e4ee051 --- /dev/null +++ b/smack-android-extensions/src/main/java/org/jivesoftware/smackx/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smackx; diff --git a/smack-android-extensions/src/main/java/org/jivesoftware/smackx/ping/package-info.java b/smack-android-extensions/src/main/java/org/jivesoftware/smackx/ping/package-info.java deleted file mode 120000 index edea7d8fd..000000000 --- a/smack-android-extensions/src/main/java/org/jivesoftware/smackx/ping/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../smack-extensions/src/main/java/org/jivesoftware/smackx/ping/package-info.java \ No newline at end of file diff --git a/smack-android-extensions/src/main/java/org/jivesoftware/smackx/ping/package-info.java b/smack-android-extensions/src/main/java/org/jivesoftware/smackx/ping/package-info.java new file mode 100644 index 000000000..92e6a80e4 --- /dev/null +++ b/smack-android-extensions/src/main/java/org/jivesoftware/smackx/ping/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smackx.ping; diff --git a/smack-android/src/main/java/org/jivesoftware/smack/package-info.java b/smack-android/src/main/java/org/jivesoftware/smack/package-info.java deleted file mode 120000 index a3d8f86a1..000000000 --- a/smack-android/src/main/java/org/jivesoftware/smack/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/package-info.java \ No newline at end of file diff --git a/smack-android/src/main/java/org/jivesoftware/smack/package-info.java b/smack-android/src/main/java/org/jivesoftware/smack/package-info.java new file mode 100644 index 000000000..78d959e23 --- /dev/null +++ b/smack-android/src/main/java/org/jivesoftware/smack/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smack; diff --git a/smack-android/src/main/java/org/jivesoftware/smack/util/package-info.java b/smack-android/src/main/java/org/jivesoftware/smack/util/package-info.java deleted file mode 120000 index 6c269f201..000000000 --- a/smack-android/src/main/java/org/jivesoftware/smack/util/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/util/package-info.java \ No newline at end of file diff --git a/smack-android/src/main/java/org/jivesoftware/smack/util/package-info.java b/smack-android/src/main/java/org/jivesoftware/smack/util/package-info.java new file mode 100644 index 000000000..9ad9b1354 --- /dev/null +++ b/smack-android/src/main/java/org/jivesoftware/smack/util/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smack.util; diff --git a/smack-android/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java b/smack-android/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java deleted file mode 120000 index 1843c7f20..000000000 --- a/smack-android/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java \ No newline at end of file diff --git a/smack-android/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java b/smack-android/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java new file mode 100644 index 000000000..8609a8018 --- /dev/null +++ b/smack-android/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smack.util.stringencoder; diff --git a/smack-android/src/main/java/org/jivesoftware/smackx/debugger/package-info.java b/smack-android/src/main/java/org/jivesoftware/smackx/debugger/package-info.java deleted file mode 120000 index ff0f3fb31..000000000 --- a/smack-android/src/main/java/org/jivesoftware/smackx/debugger/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../smack-debug/src/main/java/org/jivesoftware/smackx/debugger/package-info.java \ No newline at end of file diff --git a/smack-android/src/main/java/org/jivesoftware/smackx/debugger/package-info.java b/smack-android/src/main/java/org/jivesoftware/smackx/debugger/package-info.java new file mode 100644 index 000000000..a6e02ba25 --- /dev/null +++ b/smack-android/src/main/java/org/jivesoftware/smackx/debugger/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Smack optional Debuggers. + */ +package org.jivesoftware.smackx.debugger; diff --git a/smack-android/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-android/src/main/java/org/jivesoftware/smackx/package-info.java deleted file mode 120000 index f0646658f..000000000 --- a/smack-android/src/main/java/org/jivesoftware/smackx/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../smack-extensions/src/main/java/org/jivesoftware/smackx/package-info.java \ No newline at end of file diff --git a/smack-android/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-android/src/main/java/org/jivesoftware/smackx/package-info.java new file mode 100644 index 000000000..01e4ee051 --- /dev/null +++ b/smack-android/src/main/java/org/jivesoftware/smackx/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smackx; diff --git a/smack-compression-jzlib/build.gradle b/smack-compression-jzlib/build.gradle index b9aeb8b84..9f449f88e 100644 --- a/smack-compression-jzlib/build.gradle +++ b/smack-compression-jzlib/build.gradle @@ -3,6 +3,6 @@ Compression with jzlib Allow to compress the XMPP stream with help of jzlib.""" dependencies { - compile project(':smack-core') + compile project(path: ':smack-core') compile 'com.jcraft:jzlib:[1.1,1.2)' } diff --git a/smack-compression-jzlib/src/main/java/org/jivesoftware/smack/compression/package-info.java b/smack-compression-jzlib/src/main/java/org/jivesoftware/smack/compression/package-info.java deleted file mode 120000 index c88ae8f0b..000000000 --- a/smack-compression-jzlib/src/main/java/org/jivesoftware/smack/compression/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/compression/package-info.java \ No newline at end of file diff --git a/smack-compression-jzlib/src/main/java/org/jivesoftware/smack/compression/package-info.java b/smack-compression-jzlib/src/main/java/org/jivesoftware/smack/compression/package-info.java new file mode 100644 index 000000000..a6f2a8bb9 --- /dev/null +++ b/smack-compression-jzlib/src/main/java/org/jivesoftware/smack/compression/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Classes and interfaces for XMPP stream compression (XEP-138). + */ +package org.jivesoftware.smack.compression; diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractError.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractError.java index 3b5fe6b0e..d6a0d56a2 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractError.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractError.java @@ -114,7 +114,9 @@ public class AbstractError { xml.escape(text); xml.closeElement("text"); } - xml.append(extensions); + for (ExtensionElement packetExtension : extensions) { + xml.append(packetExtension.toXML()); + } } public abstract static class Builder> { diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractTextElement.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractTextElement.java index 00e82d704..b60f66e40 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractTextElement.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractTextElement.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2017-2019 Florian Schmaus + * 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. @@ -38,7 +38,8 @@ public abstract class AbstractTextElement implements ExtensionElement { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); + xml.optXmlLangAttribute(lang); xml.rightAngleBracket(); xml.escape(text); xml.closeElement(this); @@ -49,19 +50,6 @@ public abstract class AbstractTextElement implements ExtensionElement { return text; } - @Override - public final String getLanguage() { - return lang; - } - - /** - * Deprecated. - * - * @return deprecated - * @deprecated use {@link #getLanguage()} instead. - */ - @Deprecated - // TODO: Remove in Smack 4.5. public final String getLang() { return lang; } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/FullyQualifiedElement.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/FullyQualifiedElement.java index 2e93d23bd..1ed979548 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/FullyQualifiedElement.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/FullyQualifiedElement.java @@ -32,13 +32,4 @@ public interface FullyQualifiedElement extends NamedElement { String localPart = getElementName(); return new QName(namespaceURI, localPart); } - - /** - * Returns the xml:lang of this XML element, or null if one has not been set. - * - * @return the xml:lang of this XML element, or null. - */ - default String getLanguage() { - return null; - } } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java index 3d875b7e1..5bbfa9d17 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java @@ -62,6 +62,10 @@ public abstract class IQ extends Stanza { this.childElementQName = iq.childElementQName; } + protected IQ(String childElementName) { + this(childElementName, null); + } + protected IQ(String childElementName, String childElementNamespace) { this.childElementName = childElementName; this.childElementNamespace = childElementNamespace; @@ -132,11 +136,6 @@ public abstract class IQ extends Stanza { return childElementNamespace; } - @Override - public final String getElementName() { - return IQ_ELEMENT; - } - @Override public final String toString() { StringBuilder sb = new StringBuilder(); @@ -151,8 +150,9 @@ public abstract class IQ extends Stanza { @Override public final XmlStringBuilder toXML(XmlEnvironment enclosingXmlEnvironment) { - XmlStringBuilder buf = new XmlStringBuilder(this, enclosingXmlEnvironment); - addCommonAttributes(buf); + XmlStringBuilder buf = new XmlStringBuilder(enclosingXmlEnvironment); + buf.halfOpenElement(IQ_ELEMENT); + addCommonAttributes(buf, enclosingXmlEnvironment); if (type == null) { buf.attribute("type", "get"); } @@ -160,7 +160,7 @@ public abstract class IQ extends Stanza { buf.attribute("type", type.toString()); } buf.rightAngleBracket(); - appendInnerXml(buf); + buf.append(getChildElementXML(enclosingXmlEnvironment)); buf.closeElement(IQ_ELEMENT); return buf; } @@ -171,52 +171,44 @@ public abstract class IQ extends Stanza { * * @return the child element section of the IQ XML. */ - // TODO: This method should not be part of the public API as it is mostly used for testing purposes, with the one - // exception of AdHocCommand.getRaw(). public final XmlStringBuilder getChildElementXML() { - XmlStringBuilder xml = new XmlStringBuilder(); - appendInnerXml(xml); - return xml; + return getChildElementXML(null); } /** - * Append the sub-element XML section of the IQ stanza. + * Returns the sub-element XML section of the IQ packet, or the empty String if there + * isn't one. * - * @param xml the XmlStringBuilder to append to. + * @param enclosingXmlEnvironment the enclosing XML namespace. + * @return the child element section of the IQ XML. + * @since 4.3.0 */ - private void appendInnerXml(XmlStringBuilder xml) { + public final XmlStringBuilder getChildElementXML(XmlEnvironment enclosingXmlEnvironment) { + XmlStringBuilder xml = new XmlStringBuilder(); if (type == Type.error) { // Add the error sub-packet, if there is one. - appendErrorIfExists(xml); - return; - } - if (childElementName == null) { - return; + appendErrorIfExists(xml, enclosingXmlEnvironment); } + else if (childElementName != null) { + // Add the query section if there is one. + IQChildElementXmlStringBuilder iqChildElement = getIQChildElementBuilder(new IQChildElementXmlStringBuilder(this)); + if (iqChildElement != null) { + xml.append(iqChildElement); - // Add the query section if there is one. - IQChildElementXmlStringBuilder iqChildElement = getIQChildElementBuilder( - new IQChildElementXmlStringBuilder(this)); - // TOOD: Document the cases where iqChildElement is null but childElementName not. And if there are none, change - // the logic. - if (iqChildElement == null) { - return; - } - - xml.append(iqChildElement); - - List extensionsXml = getExtensions(); - if (iqChildElement.isEmptyElement) { - if (extensionsXml.isEmpty()) { - xml.closeEmptyElement(); - return; + List extensionsXml = getExtensions(); + if (iqChildElement.isEmptyElement) { + if (extensionsXml.isEmpty()) { + xml.closeEmptyElement(); + return xml; + } else { + xml.rightAngleBracket(); + } + } + xml.append(extensionsXml); + xml.closeElement(iqChildElement.element); } - - xml.rightAngleBracket(); } - - xml.append(extensionsXml); - xml.closeElement(iqChildElement.element); + return xml; } /** diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java index b6f426139..c1f8f3f1f 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java @@ -467,11 +467,6 @@ public final class Message extends Stanza implements TypedCloneable { return language; } - @Override - public String getElementName() { - return ELEMENT; - } - @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -486,8 +481,9 @@ public final class Message extends Stanza implements TypedCloneable { @Override public XmlStringBuilder toXML(XmlEnvironment enclosingXmlEnvironment) { - XmlStringBuilder buf = new XmlStringBuilder(this, enclosingXmlEnvironment); - addCommonAttributes(buf); + XmlStringBuilder buf = new XmlStringBuilder(enclosingXmlEnvironment); + buf.halfOpenElement(ELEMENT); + enclosingXmlEnvironment = addCommonAttributes(buf, enclosingXmlEnvironment); buf.optAttribute("type", type); buf.rightAngleBracket(); @@ -501,16 +497,16 @@ public final class Message extends Stanza implements TypedCloneable { // Skip the default language if (subject.equals(defaultSubject)) continue; - buf.append(subject); + buf.append(subject.toXML()); } buf.optElement("thread", thread); // Append the error subpacket if the message type is an error. if (type == Type.error) { - appendErrorIfExists(buf); + appendErrorIfExists(buf, enclosingXmlEnvironment); } // Add extension elements, if any are defined. - buf.append(getExtensions()); + buf.append(getExtensions(), enclosingXmlEnvironment); buf.closeElement(ELEMENT); return buf; @@ -548,7 +544,11 @@ public final class Message extends Stanza implements TypedCloneable { this.subject = subject; } - @Override + /** + * Returns the language of this message subject. + * + * @return the language of this message subject. + */ public String getLanguage() { return language; } @@ -592,8 +592,8 @@ public final class Message extends Stanza implements TypedCloneable { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); - xml.rightAngleBracket(); + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(getElementName()).optXmlLangAttribute(getLanguage()).rightAngleBracket(); xml.escape(subject); xml.closeElement(getElementName()); return xml; @@ -642,7 +642,12 @@ public final class Message extends Stanza implements TypedCloneable { this.namespace = Objects.requireNonNull(namespace); } - @Override + /** + * Returns the language of this message body or {@code null} if the body extension element does not explicitly + * set a language, but instead inherits it from the outer element (usually a {@link Message} stanza). + * + * @return the language of this message body or {@code null}. + */ public String getLanguage() { return language; } @@ -687,7 +692,7 @@ public final class Message extends Stanza implements TypedCloneable { @Override public XmlStringBuilder toXML(XmlEnvironment enclosingXmlEnvironment) { XmlStringBuilder xml = new XmlStringBuilder(this, enclosingXmlEnvironment); - xml.rightAngleBracket(); + xml.optXmlLangAttribute(getLanguage()).rightAngleBracket(); xml.escape(message); xml.closeElement(getElementName()); return xml; diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/NamedElement.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/NamedElement.java index 219b35ad1..bdfa0e2cf 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/NamedElement.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/NamedElement.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2014-2019 Florian Schmaus + * 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. @@ -18,13 +18,8 @@ package org.jivesoftware.smack.packet; /** - * Interface to represent a XML element. This is similar to {@link ExtensionElement}, but does not carry a single - * namespace, but instead is used with multiple namespaces. Examples for this include MUC's <destroy/> element. - *

- * Please note that usage of this interface is discouraged. The reason is that every XML element is fully - * qualified, i.e., it is qualified by a namespace. The namespace may not be explicitly given, but instead, is inherited - * from an outer element. Use {@link FullyQualifiedElement} instead when possible. - *

+ * Interface to represent a XML element. This is similar to {@link ExtensionElement}, but does not + * carry a namespace and is usually included as child element of an stanza extension. */ public interface NamedElement extends Element { diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Nonza.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Nonza.java index a86a4e1db..6e2435637 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Nonza.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Nonza.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2014-2019 Florian Schmaus + * Copyright © 2014-2015 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,6 +30,6 @@ package org.jivesoftware.smack.packet; * @author Florian Schmaus * @see XEP-0360: Nonzas (are not Stanzas) */ -public interface Nonza extends TopLevelStreamElement { +public interface Nonza extends TopLevelStreamElement, FullyQualifiedElement { } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Packet.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Packet.java index 2a97d0eae..d82209ac3 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Packet.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Packet.java @@ -113,7 +113,11 @@ public interface Packet extends TopLevelStreamElement { */ void setError(StanzaError error); - @Override + /** + * Returns the xml:lang of this Stanza, or null if one has not been set. + * + * @return the xml:lang of this Stanza, or null. + */ String getLanguage(); /** diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java index 62630ecfb..ae6de5573 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java @@ -256,11 +256,6 @@ public final class Presence extends Stanza implements TypedCloneable { this.mode = mode; } - @Override - public String getElementName() { - return ELEMENT; - } - @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -282,8 +277,9 @@ public final class Presence extends Stanza implements TypedCloneable { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder buf = new XmlStringBuilder(this, enclosingNamespace); - addCommonAttributes(buf); + XmlStringBuilder buf = new XmlStringBuilder(enclosingNamespace); + buf.halfOpenElement(ELEMENT); + addCommonAttributes(buf, enclosingNamespace); if (type != Type.available) { buf.attribute("type", type); } @@ -295,10 +291,10 @@ public final class Presence extends Stanza implements TypedCloneable { buf.element("show", mode); } - buf.append(getExtensions()); + buf.append(getExtensions(), enclosingNamespace); // Add the error sub-packet, if there is one. - appendErrorIfExists(buf); + appendErrorIfExists(buf, enclosingNamespace); buf.closeElement(ELEMENT); diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java index d4906ff91..d1362bea9 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java @@ -59,10 +59,6 @@ public abstract class Stanza implements TopLevelStreamElement { private final MultiMap extensionElements = new MultiMap<>(); - // Assume that all stanzas Smack handles are in the client namespace, since Smack is an XMPP client library. We can - // change this behavior later if it is required. - private final String namespace = StreamOpen.CLIENT_NAMESPACE; - private String id = null; private Jid to; private Jid from; @@ -287,7 +283,11 @@ public abstract class Stanza implements TopLevelStreamElement { error = xmppErrorBuilder.build(); } - @Override + /** + * 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() { return language; } @@ -491,11 +491,6 @@ public abstract class Stanza implements TopLevelStreamElement { @Override public abstract String toString(); - @Override - public final String getNamespace() { - return namespace; - } - /** * Returns the default language used for all messages containing localized content. * @@ -506,14 +501,33 @@ public abstract class Stanza implements TopLevelStreamElement { } /** - * Add to, from, and id attributes. + * Add to, from, id and 'xml:lang' attributes * * @param xml the {@link XmlStringBuilder}. + * @param enclosingXmlEnvironment the enclosing XML namespace. + * @return the XML environment for this stanza. */ - protected final void addCommonAttributes(XmlStringBuilder xml) { + protected XmlEnvironment addCommonAttributes(XmlStringBuilder xml, XmlEnvironment enclosingXmlEnvironment) { + String language = getLanguage(); + String namespace = StreamOpen.CLIENT_NAMESPACE; + if (enclosingXmlEnvironment != null) { + String effectiveEnclosingNamespace = enclosingXmlEnvironment.getEffectiveNamespaceOrUse(namespace); + switch (effectiveEnclosingNamespace) { + case StreamOpen.CLIENT_NAMESPACE: + case StreamOpen.SERVER_NAMESPACE: + break; + default: + namespace = effectiveEnclosingNamespace; + } + } + + xml.xmlnsAttribute(namespace); xml.optAttribute("to", getTo()); xml.optAttribute("from", getFrom()); xml.optAttribute("id", getStanzaId()); + xml.xmllangAttribute(language); + + return new XmlEnvironment(namespace, language); } protected void logCommonAttributes(StringBuilder sb) { @@ -532,11 +546,12 @@ public abstract class Stanza implements TopLevelStreamElement { * Append an XMPPError is this stanza has one set. * * @param xml the XmlStringBuilder to append the error to. + * @param enclosingXmlEnvironment the enclosing XML environment. */ - protected void appendErrorIfExists(XmlStringBuilder xml) { + protected void appendErrorIfExists(XmlStringBuilder xml, XmlEnvironment enclosingXmlEnvironment) { StanzaError error = getError(); if (error != null) { - xml.append(error); + xml.append(error.toXML(enclosingXmlEnvironment)); } } } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/TopLevelStreamElement.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/TopLevelStreamElement.java index 7cca472ca..b952a5d54 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/TopLevelStreamElement.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/TopLevelStreamElement.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2014-2019 Florian Schmaus + * Copyright © 2014-2018 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,6 @@ package org.jivesoftware.smack.packet; * A XMPP top level stream element. This is either a stanza ({@link Stanza}) or * just a plain stream element ({@link Nonza}). */ -public interface TopLevelStreamElement extends FullyQualifiedElement { +public interface TopLevelStreamElement extends Element { } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/XmlEnvironment.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/XmlEnvironment.java index 4abc3eb06..0e713a04c 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/XmlEnvironment.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/XmlEnvironment.java @@ -106,29 +106,6 @@ public class XmlEnvironment { return effectiveLanguage; } - public boolean effectiveLanguageEquals(String language) { - String effectiveLanguage = getEffectiveLanguage(); - if (effectiveLanguage == null) { - return false; - } - return effectiveLanguage.equals(language); - } - - private transient String toStringCache; - - @Override - public String toString() { - if (toStringCache == null) { - StringBuilder sb = new StringBuilder(); - sb.append(XmlEnvironment.class.getSimpleName()).append(' '); - sb.append("xmlns=").append(getEffectiveNamespace()).append(' '); - sb.append("xmllang=").append(getEffectiveLanguage()).append(' '); - - toStringCache = sb.toString(); - } - return toStringCache; - } - public static XmlEnvironment from(XmlPullParser parser) { return from(parser, null); } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java index a71361af1..3b30e8463 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java @@ -91,7 +91,7 @@ public class PacketParserUtils { @SuppressWarnings("unchecked") public static S parseStanza(String stanza) throws XmlPullParserException, SmackParsingException, IOException { - return (S) parseStanza(getParserFor(stanza), XmlEnvironment.EMPTY); + return (S) parseStanza(getParserFor(stanza), null); } /** @@ -121,22 +121,8 @@ public class PacketParserUtils { } } - private static void parseCommonStanzaAttributes(Stanza stanza, XmlPullParser parser, XmlEnvironment xmlEnvironment) throws XmppStringprepException { - String id = parser.getAttributeValue("id"); - stanza.setStanzaId(id); - - Jid to = ParserUtils.getJidAttribute(parser, "to"); - stanza.setTo(to); - - Jid from = ParserUtils.getJidAttribute(parser, "from"); - stanza.setFrom(from); - - String language = ParserUtils.getXmlLang(parser, xmlEnvironment); - stanza.setLanguage(language); - } - public static Message parseMessage(XmlPullParser parser) throws XmlPullParserException, IOException, SmackParsingException { - return parseMessage(parser, XmlEnvironment.EMPTY); + return parseMessage(parser, null); } /** @@ -156,11 +142,15 @@ public class PacketParserUtils { XmlEnvironment messageXmlEnvironment = XmlEnvironment.from(parser, outerXmlEnvironment); final int initialDepth = parser.getDepth(); Message message = new Message(); - parseCommonStanzaAttributes(message, parser, outerXmlEnvironment); + message.setStanzaId(parser.getAttributeValue("", "id")); + message.setTo(ParserUtils.getJidAttribute(parser, "to")); + message.setFrom(ParserUtils.getJidAttribute(parser, "from")); String typeString = parser.getAttributeValue("", "type"); if (typeString != null) { message.setType(Message.Type.fromString(typeString)); } + String language = ParserUtils.getXmlLang(parser); + message.setLanguage(language); // Parse sub-elements. We include extra logic to make sure the values // are only read once. This is because it's possible for the names to appear @@ -419,7 +409,7 @@ public class PacketParserUtils { } public static Presence parsePresence(XmlPullParser parser) throws XmlPullParserException, IOException, SmackParsingException { - return parsePresence(parser, XmlEnvironment.EMPTY); + return parsePresence(parser, null); } /** @@ -443,7 +433,14 @@ public class PacketParserUtils { type = Presence.Type.fromString(typeString); } Presence presence = new Presence(type); - parseCommonStanzaAttributes(presence, parser, outerXmlEnvironment); + presence.setTo(ParserUtils.getJidAttribute(parser, "to")); + presence.setFrom(ParserUtils.getJidAttribute(parser, "from")); + presence.setStanzaId(parser.getAttributeValue("", "id")); + + String language = ParserUtils.getXmlLang(parser); + if (language != null && !"".equals(language.trim())) { + presence.setLanguage(language); + } // Parse sub-elements outerloop: while (true) { diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/ParserUtils.java b/smack-core/src/main/java/org/jivesoftware/smack/util/ParserUtils.java index 3486b372d..81d232f10 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/ParserUtils.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/ParserUtils.java @@ -27,7 +27,6 @@ import javax.xml.namespace.QName; import org.jivesoftware.smack.datatypes.UInt16; import org.jivesoftware.smack.datatypes.UInt32; -import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.parsing.SmackParsingException.SmackTextParseException; import org.jivesoftware.smack.parsing.SmackParsingException.SmackUriSyntaxParsingException; @@ -342,14 +341,6 @@ public class ParserUtils { return text; } - public static String getXmlLang(XmlPullParser parser, XmlEnvironment xmlEnvironment) { - String currentXmlLang = getXmlLang(parser); - if (currentXmlLang != null) { - return currentXmlLang; - } - return xmlEnvironment.getEffectiveLanguage(); - } - public static String getXmlLang(XmlPullParser parser) { return parser.getAttributeValue("http://www.w3.org/XML/1998/namespace", "lang"); } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java b/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java index acf5ac1b4..c033a84b2 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java @@ -38,12 +38,17 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { private final XmlEnvironment effectiveXmlEnvironment; public XmlStringBuilder() { + this((XmlEnvironment) null); + } + + public XmlStringBuilder(XmlEnvironment effectiveXmlEnvironment) { sb = new LazyStringBuilder(); - effectiveXmlEnvironment = null; + this.effectiveXmlEnvironment = effectiveXmlEnvironment; } public XmlStringBuilder(ExtensionElement pe) { - this(pe, null); + this(); + prelude(pe); } public XmlStringBuilder(NamedElement e) { @@ -51,29 +56,9 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { halfOpenElement(e.getElementName()); } - public XmlStringBuilder(FullyQualifiedElement element, XmlEnvironment enclosingXmlEnvironment) { - sb = new LazyStringBuilder(); - halfOpenElement(element); - - String xmlNs = element.getNamespace(); - String xmlLang = element.getLanguage(); - if (enclosingXmlEnvironment == null) { - xmlnsAttribute(xmlNs); - xmllangAttribute(xmlLang); - } else { - if (!enclosingXmlEnvironment.effectiveNamespaceEquals(xmlNs)) { - xmlnsAttribute(xmlNs); - } - if (!enclosingXmlEnvironment.effectiveLanguageEquals(xmlLang)) { - xmllangAttribute(xmlLang); - } - } - - effectiveXmlEnvironment = XmlEnvironment.builder() - .withNamespace(xmlNs) - .withLanguage(xmlLang) - .withNext(enclosingXmlEnvironment) - .build(); + public XmlStringBuilder(FullyQualifiedElement ee, XmlEnvironment enclosingXmlEnvironment) { + this(enclosingXmlEnvironment); + prelude(ee); } public XmlStringBuilder escapedElement(String name, String escapedContent) { @@ -131,15 +116,6 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { return this; } - /** - * Deprecated. - * - * @param element deprecated. - * @return deprecated. - * @deprecated use {@link #append(Element)} instead. - */ - @Deprecated - // TODO: Remove in Smack 4.5. public XmlStringBuilder element(Element element) { assert element != null; return append(element.toXML()); @@ -177,7 +153,7 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { public XmlStringBuilder optElement(Element element) { if (element != null) { - append(element); + append(element.toXML()); } return this; } @@ -451,7 +427,6 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { } public XmlStringBuilder xmllangAttribute(String value) { - // TODO: This should probably be attribute(), not optAttribute(). optAttribute("xml:lang", value); return this; } @@ -486,11 +461,11 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { return escape(text.toString()); } - protected XmlStringBuilder prelude(FullyQualifiedElement pe) { + public XmlStringBuilder prelude(FullyQualifiedElement pe) { return prelude(pe.getElementName(), pe.getNamespace()); } - protected XmlStringBuilder prelude(String elementName, String namespace) { + public XmlStringBuilder prelude(String elementName, String namespace) { halfOpenElement(elementName); xmlnsAttribute(namespace); return this; @@ -516,13 +491,13 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { return this; } - public XmlStringBuilder append(Element element) { - return append(element.toXML(effectiveXmlEnvironment)); + public XmlStringBuilder append(Collection elements) { + return append(elements, null); } - public XmlStringBuilder append(Collection elements) { + public XmlStringBuilder append(Collection elements, XmlEnvironment enclosingXmlEnvironment) { for (Element element : elements) { - append(element); + append(element.toXML(enclosingXmlEnvironment)); } return this; } @@ -616,10 +591,21 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { * @throws IOException if an I/O error occured. */ public void write(Writer writer, String enclosingNamespace) throws IOException { - XmlEnvironment enclosingXmlEnvironment = XmlEnvironment.builder() - .withNamespace(enclosingNamespace) - .build(); - appendXmlTo(writer, enclosingXmlEnvironment); + for (CharSequence csq : sb.getAsList()) { + if (csq instanceof XmlStringBuilder) { + ((XmlStringBuilder) csq).write(writer, enclosingNamespace); + } + else if (csq instanceof XmlNsAttribute) { + XmlNsAttribute xmlNsAttribute = (XmlNsAttribute) csq; + if (!xmlNsAttribute.value.equals(enclosingNamespace)) { + writer.write(xmlNsAttribute.toString()); + enclosingNamespace = xmlNsAttribute.value; + } + } + else { + writer.write(csq.toString()); + } + } } public Iterator getCharSequenceIterator() { @@ -629,19 +615,14 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { @Override public CharSequence toXML(XmlEnvironment enclosingXmlEnvironment) { StringBuilder res = new StringBuilder(); - try { - appendXmlTo(res, enclosingXmlEnvironment); - } catch (IOException e) { - // Should never happen. - throw new AssertionError(e); - } + appendXmlTo(res, enclosingXmlEnvironment); return res; } - private void appendXmlTo(Appendable appendable, XmlEnvironment enclosingXmlEnvironment) throws IOException { + private void appendXmlTo(StringBuilder res, XmlEnvironment enclosingXmlEnvironment) { for (CharSequence csq : sb.getAsList()) { if (csq instanceof XmlStringBuilder) { - ((XmlStringBuilder) csq).appendXmlTo(appendable, enclosingXmlEnvironment); + ((XmlStringBuilder) csq).appendXmlTo(res, enclosingXmlEnvironment); } else if (csq instanceof XmlNsAttribute) { XmlNsAttribute xmlNsAttribute = (XmlNsAttribute) csq; @@ -651,7 +632,7 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { } } else { - appendable.append(csq); + res.append(csq); } } } diff --git a/smack-core/src/test/java/org/jivesoftware/smack/StanzaCollectorTest.java b/smack-core/src/test/java/org/jivesoftware/smack/StanzaCollectorTest.java index 4eeb028ce..988cbafef 100644 --- a/smack-core/src/test/java/org/jivesoftware/smack/StanzaCollectorTest.java +++ b/smack-core/src/test/java/org/jivesoftware/smack/StanzaCollectorTest.java @@ -188,10 +188,5 @@ public class StanzaCollectorTest { public String toString() { return toXML().toString(); } - - @Override - public String getElementName() { - return "packetId"; - } } } diff --git a/smack-core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java b/smack-core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java index 76f0d996a..8518c1188 100644 --- a/smack-core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java +++ b/smack-core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java @@ -738,6 +738,10 @@ public class PacketParserUtilsTest { .a("type", "chat") .a("xml:lang", "en") .e("body") + // TODO: Remove the following xml:lang once Smack's serialization toXml() API is aware of a potential + // scoping xml:lang value. The out message stanza already declares an xml:lang with the exact same + // value, hence this statement is redundant. + .a("xml:lang", "en") .t("This is a test of the emergency broadcast system, 1.") .up() .e("body") diff --git a/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/debugger/package-info.java b/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/debugger/package-info.java deleted file mode 120000 index ff0f3fb31..000000000 --- a/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/debugger/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../smack-debug/src/main/java/org/jivesoftware/smackx/debugger/package-info.java \ No newline at end of file diff --git a/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/debugger/package-info.java b/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/debugger/package-info.java new file mode 100644 index 000000000..a6e02ba25 --- /dev/null +++ b/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/debugger/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Smack optional Debuggers. + */ +package org.jivesoftware.smackx.debugger; diff --git a/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/package-info.java deleted file mode 120000 index f0646658f..000000000 --- a/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../smack-extensions/src/main/java/org/jivesoftware/smackx/package-info.java \ No newline at end of file diff --git a/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/package-info.java new file mode 100644 index 000000000..01e4ee051 --- /dev/null +++ b/smack-debug-slf4j/src/main/java/org/jivesoftware/smackx/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smackx; diff --git a/smack-debug/src/main/java/org/jivesoftware/smackx/debugger/EnhancedDebugger.java b/smack-debug/src/main/java/org/jivesoftware/smackx/debugger/EnhancedDebugger.java index c30f0aaf4..958117672 100644 --- a/smack-debug/src/main/java/org/jivesoftware/smackx/debugger/EnhancedDebugger.java +++ b/smack-debug/src/main/java/org/jivesoftware/smackx/debugger/EnhancedDebugger.java @@ -943,11 +943,6 @@ public class EnhancedDebugger extends SmackDebugger { public String toString() { return toXML((XmlEnvironment) null); } - - @Override - public String getElementName() { - return null; - } } /** diff --git a/smack-debug/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-debug/src/main/java/org/jivesoftware/smackx/package-info.java deleted file mode 120000 index f0646658f..000000000 --- a/smack-debug/src/main/java/org/jivesoftware/smackx/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../smack-extensions/src/main/java/org/jivesoftware/smackx/package-info.java \ No newline at end of file diff --git a/smack-debug/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-debug/src/main/java/org/jivesoftware/smackx/package-info.java new file mode 100644 index 000000000..01e4ee051 --- /dev/null +++ b/smack-debug/src/main/java/org/jivesoftware/smackx/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smackx; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/packet/AbstractHttpOverXmpp.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/packet/AbstractHttpOverXmpp.java index 735807f4b..1a5e88c43 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/packet/AbstractHttpOverXmpp.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/packet/AbstractHttpOverXmpp.java @@ -16,7 +16,6 @@ */ package org.jivesoftware.smackx.hoxt.packet; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.Objects; @@ -146,19 +145,12 @@ public abstract class AbstractHttpOverXmpp extends IQ { protected abstract B getThis(); } - private abstract static class HoxExtensionElement implements ExtensionElement { - @Override - public final String getNamespace() { - return NAMESPACE; - } - } - /** * Representation of Data element. *

* This class is immutable. */ - public static class Data extends HoxExtensionElement { + public static class Data implements NamedElement { public static final String ELEMENT = "data"; @@ -180,9 +172,9 @@ public abstract class AbstractHttpOverXmpp extends IQ { */ @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.rightAngleBracket(); - xml.append(child); + xml.element(child); xml.closeElement(this); return xml; } @@ -207,7 +199,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { *

* This class is immutable. */ - public static class Text extends HoxExtensionElement { + public static class Text implements NamedElement { public static final String ELEMENT = "text"; @@ -224,7 +216,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.rightAngleBracket(); xml.optAppend(text); xml.closeElement(this); @@ -251,7 +243,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { *

* This class is immutable. */ - public static class Base64 extends HoxExtensionElement { + public static class Base64 implements NamedElement { public static final String ELEMENT = "base64"; @@ -268,7 +260,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.rightAngleBracket(); xml.optAppend(text); xml.closeElement(this); @@ -295,7 +287,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { *

* This class is immutable. */ - public static class Xml extends HoxExtensionElement { + public static class Xml implements NamedElement { public static final String ELEMENT = "xml"; @@ -312,7 +304,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.rightAngleBracket(); xml.optAppend(text); xml.closeElement(this); @@ -339,7 +331,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { *

* This class is immutable. */ - public static class ChunkedBase64 extends HoxExtensionElement { + public static class ChunkedBase64 implements NamedElement { public static final String ELEMENT = "chunkedBase64"; @@ -356,7 +348,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("streamId", streamId); xml.closeEmptyElement(); return xml; @@ -382,7 +374,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { *

* This class is immutable. */ - public static class Ibb extends HoxExtensionElement { + public static class Ibb implements NamedElement { public static final String ELEMENT = "ibb"; @@ -399,7 +391,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("sid", sid); xml.closeEmptyElement(); return xml; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/control/element/SetData.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/control/element/SetData.java index 15d44f641..9c1e0e94e 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/control/element/SetData.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/control/element/SetData.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2016-2019 Florian Schmaus + * Copyright © 2016 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,10 +18,10 @@ package org.jivesoftware.smackx.iot.control.element; import java.util.Locale; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; -public abstract class SetData implements ExtensionElement { +public abstract class SetData implements NamedElement { public enum Type { BOOL, @@ -76,11 +76,6 @@ public abstract class SetData implements ExtensionElement { return getType().toString(); } - @Override - public final String getNamespace() { - return IoTSetRequest.NAMESPACE; - } - /** * Returns the XML representation of this Element. * @@ -88,7 +83,7 @@ public abstract class SetData implements ExtensionElement { */ @Override public final XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("name", name); xml.attribute("value", value); xml.closeEmptyElement(); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataExtensionElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataExtensionElement.java deleted file mode 100644 index 62e0cf3c6..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataExtensionElement.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * - * Copyright 2019 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.smackx.iot.data.element; - -import org.jivesoftware.smack.packet.ExtensionElement; - -public abstract class IoTDataExtensionElement implements ExtensionElement { - - @Override - public final String getNamespace() { - return IoTFieldsExtension.NAMESPACE; - } - -} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataField.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataField.java index 7b10a41ea..a3a31fa67 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataField.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataField.java @@ -16,9 +16,10 @@ */ package org.jivesoftware.smackx.iot.data.element; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; -public abstract class IoTDataField extends IoTDataExtensionElement { +public abstract class IoTDataField implements NamedElement { enum Type { integer("int"), @@ -52,7 +53,7 @@ public abstract class IoTDataField extends IoTDataExtensionElement { @Override public final XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("name", name).attribute("value", getValueString()); // TODO handle 'unit' attribute as special case if is implemented. xml.closeEmptyElement(); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/NodeElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/NodeElement.java index bde5d94f8..f344c99d7 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/NodeElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/NodeElement.java @@ -19,10 +19,12 @@ package org.jivesoftware.smackx.iot.data.element; import java.util.Collections; import java.util.List; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; + import org.jivesoftware.smackx.iot.element.NodeInfo; -public class NodeElement extends IoTDataExtensionElement { +public class NodeElement implements NamedElement { public static final String ELEMENT = "node"; @@ -49,7 +51,7 @@ public class NodeElement extends IoTDataExtensionElement { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); nodeInfo.appendTo(xml); xml.rightAngleBracket(); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/TimestampElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/TimestampElement.java index a3e6ebc75..1d428b6eb 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/TimestampElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/TimestampElement.java @@ -20,9 +20,10 @@ import java.util.Collections; import java.util.Date; import java.util.List; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; -public class TimestampElement extends IoTDataExtensionElement { +public class TimestampElement implements NamedElement { public static final String ELEMENT = "timestamp"; @@ -45,7 +46,7 @@ public class TimestampElement extends IoTDataExtensionElement { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("value", date); xml.rightAngleBracket(); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/JidPrepManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/JidPrepManager.java deleted file mode 100644 index b5ebc8ce7..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/JidPrepManager.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * - * Copyright 2019 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.smackx.jid_prep; - -import java.util.Map; -import java.util.WeakHashMap; - -import org.jivesoftware.smack.Manager; -import org.jivesoftware.smack.SmackException.NoResponseException; -import org.jivesoftware.smack.SmackException.NotConnectedException; -import org.jivesoftware.smack.XMPPConnection; -import org.jivesoftware.smack.XMPPException.XMPPErrorException; -import org.jivesoftware.smack.packet.StanzaError; - -import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; -import org.jivesoftware.smackx.jid_prep.element.JidPrepIq; - -import org.jxmpp.jid.DomainBareJid; -import org.jxmpp.jid.Jid; - -public class JidPrepManager extends Manager { - - public static final String NAMESPACE = JidPrepIq.NAMESPACE; - - private static final Map INSTANCES = new WeakHashMap<>(); - - private final ServiceDiscoveryManager serviceDiscoveryManager; - - public static synchronized JidPrepManager getInstanceFor(XMPPConnection connection) { - JidPrepManager manager = INSTANCES.get(connection); - if (manager == null) { - manager = new JidPrepManager(connection); - INSTANCES.put(connection, manager); - } - return manager; - } - - public JidPrepManager(XMPPConnection connection) { - super(connection); - - serviceDiscoveryManager = ServiceDiscoveryManager.getInstanceFor(connection); - } - - public String requestJidPrep(String jidToBePrepped) - throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { - DomainBareJid serviceAddress = serviceDiscoveryManager.findService(NAMESPACE, true); - return requestJidPrep(serviceAddress, jidToBePrepped); - } - - public String requestJidPrep(Jid jidPrepService, String jidToBePrepped) - throws NoResponseException, NotConnectedException, InterruptedException, XMPPErrorException { - JidPrepIq jidPrepRequest = new JidPrepIq(jidToBePrepped); - jidPrepRequest.setTo(jidPrepService); - - JidPrepIq jidPrepResponse; - try { - jidPrepResponse = connection().sendIqRequestAndWaitForResponse(jidPrepRequest); - } catch (XMPPErrorException e) { - StanzaError stanzaError = e.getStanzaError(); - if (stanzaError.getCondition() == StanzaError.Condition.jid_malformed) { - // jid-malformed is, sadly, returned if the jid can not be normalized. This means we can not distinguish - // if the error is returned because e.g. the IQ's 'to' address was malformed (c.f. RFC 6120 § 8.3.3.8) - // or if the JID to prep was malformed. Assume the later is the case and return 'null'. - return null; - } - - throw e; - } - - return jidPrepResponse.getJid(); - } - - public boolean isSupported(Jid jid) - throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { - return serviceDiscoveryManager.supportsFeature(jid, NAMESPACE); - } -} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/element/JidPrepIq.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/element/JidPrepIq.java deleted file mode 100644 index 2e9e6c4b2..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/element/JidPrepIq.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * - * Copyright 2019 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.smackx.jid_prep.element; - -import org.jivesoftware.smack.packet.IQ; - -public class JidPrepIq extends IQ { - - public static final String ELEMENT = "jid"; - public static final String NAMESPACE = "urn:xmpp:jidprep:0"; - - private final String jid; - - public JidPrepIq(String jid) { - super(ELEMENT, NAMESPACE); - this.jid = jid; - } - - public String getJid() { - return jid; - } - - @Override - protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) { - xml.rightAngleBracket(); - xml.escape(jid); - - return xml; - } -} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/element/package-info.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/element/package-info.java deleted file mode 100644 index 9606c202d..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/element/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * - * Copyright 2019 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. - */ - -/** - * XML elements for XEP-0328: JID Prep. - */ -package org.jivesoftware.smackx.jid_prep.element; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/package-info.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/package-info.java deleted file mode 100644 index 47b1cae3b..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/package-info.java +++ /dev/null @@ -1,23 +0,0 @@ -/** - * - * Copyright 2019 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. - */ - -/** - * Smack's API for XEP-0328: JID Prep. - * - * @see XEP-0328: JID Prep - */ -package org.jivesoftware.smackx.jid_prep; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/provider/JidPrepIqProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/provider/JidPrepIqProvider.java deleted file mode 100644 index 82f81f1a9..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/provider/JidPrepIqProvider.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * - * Copyright 2019 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.smackx.jid_prep.provider; - -import java.io.IOException; - -import org.jivesoftware.smack.packet.XmlEnvironment; -import org.jivesoftware.smack.parsing.SmackParsingException; -import org.jivesoftware.smack.provider.IQProvider; -import org.jivesoftware.smack.xml.XmlPullParser; -import org.jivesoftware.smack.xml.XmlPullParserException; -import org.jivesoftware.smackx.jid_prep.element.JidPrepIq; - -public class JidPrepIqProvider extends IQProvider { - - @Override - public JidPrepIq parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) - throws XmlPullParserException, IOException, SmackParsingException { - String jid = parser.nextText(); - - return new JidPrepIq(jid); - } - -} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/provider/package-info.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/provider/package-info.java deleted file mode 100644 index 7399e97f2..000000000 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jid_prep/provider/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * - * Copyright 2019 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. - */ - -/** - * Providers for XEP-0328: JID Prep. - */ -package org.jivesoftware.smackx.jid_prep.provider; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java index f1455b7ca..1f94c6927 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java @@ -52,7 +52,7 @@ public class Checksum implements ExtensionElement { sb.optAttribute(ATTR_CREATOR, creator); sb.optAttribute(ATTR_NAME, name); sb.rightAngleBracket(); - sb.append(file); + sb.element(file); sb.closeElement(this); return sb; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransferChild.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransferChild.java index b4e9021ec..2758f3c18 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransferChild.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransferChild.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017 Paul Schaub, 2019 Florian Schmaus + * Copyright 2017 Paul Schaub * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,6 @@ package org.jivesoftware.smackx.jingle_filetransfer.element; import java.io.File; import java.util.Date; -import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.hashes.element.HashElement; @@ -28,10 +27,8 @@ import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildEleme /** * Content of type File. */ -public class JingleFileTransferChild implements JingleContentDescriptionChildElement { +public class JingleFileTransferChild extends JingleContentDescriptionChildElement { public static final String ELEMENT = "file"; - public static final String NAMESPACE = JingleFileTransfer.NAMESPACE_V5; - public static final String ELEM_DATE = "date"; public static final String ELEM_DESC = "desc"; public static final String ELEM_MEDIA_TYPE = "media-type"; @@ -90,13 +87,8 @@ public class JingleFileTransferChild implements JingleContentDescriptionChildEle } @Override - public String getNamespace() { - return NAMESPACE; - } - - @Override - public XmlStringBuilder toXML(XmlEnvironment enclosingNamespace) { - XmlStringBuilder sb = new XmlStringBuilder(this, enclosingNamespace); + public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder sb = new XmlStringBuilder(this); sb.rightAngleBracket(); sb.optElement(ELEM_DATE, date); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Range.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Range.java index 20bfc9f6a..43e422429 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Range.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Range.java @@ -16,7 +16,7 @@ */ package org.jivesoftware.smackx.jingle_filetransfer.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.hashes.element.HashElement; @@ -24,11 +24,9 @@ import org.jivesoftware.smackx.hashes.element.HashElement; /** * RangeElement which specifies, which range of a file shall be transferred. */ -public class Range implements FullyQualifiedElement { +public class Range implements NamedElement { public static final String ELEMENT = "range"; - public static final String NAMESPACE = JingleFileTransferChild.NAMESPACE; - public static final String ATTR_OFFSET = "offset"; public static final String ATTR_LENGTH = "length"; @@ -101,11 +99,6 @@ public class Range implements FullyQualifiedElement { return ELEMENT; } - @Override - public String getNamespace() { - return NAMESPACE; - } - @Override public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { XmlStringBuilder sb = new XmlStringBuilder(this); @@ -115,7 +108,7 @@ public class Range implements FullyQualifiedElement { if (hash != null) { sb.rightAngleBracket(); - sb.append(hash); + sb.element(hash); sb.closeElement(this); } else { sb.closeEmptyElement(); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamElements.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamElements.java index 540ffe774..148f1079b 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamElements.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamElements.java @@ -126,14 +126,15 @@ public class MamElements { } @Override - public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); - + public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(this); + xml.xmlnsAttribute(NAMESPACE); xml.optAttribute("queryid", getQueryId()); xml.optAttribute("id", getId()); xml.rightAngleBracket(); - xml.append(getForwarded()); + xml.element(getForwarded()); xml.closeElement(this); return xml; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamFinIQ.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamFinIQ.java index cd5b92669..3f6439a70 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamFinIQ.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamFinIQ.java @@ -124,7 +124,7 @@ public class MamFinIQ extends IQ { xml.setEmptyElement(); } else { xml.rightAngleBracket(); - xml.append(rsmSet); + xml.element(rsmSet); } return xml; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamPrefsIQ.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamPrefsIQ.java index 743847914..b0a3e57e5 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamPrefsIQ.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/element/MamPrefsIQ.java @@ -134,12 +134,12 @@ public class MamPrefsIQ extends IQ { if (alwaysJids != null) { MamElements.AlwaysJidListElement alwaysElement = new AlwaysJidListElement(alwaysJids); - xml.append(alwaysElement); + xml.element(alwaysElement); } if (neverJids != null) { MamElements.NeverJidListElement neverElement = new NeverJidListElement(neverJids); - xml.append(neverElement); + xml.element(neverElement); } return xml; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/BlockQuoteElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/BlockQuoteElement.java index 7d66db83a..0a8acf272 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/BlockQuoteElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/BlockQuoteElement.java @@ -16,10 +16,14 @@ */ package org.jivesoftware.smackx.message_markup.element; -public class BlockQuoteElement extends MarkupElement.BlockLevelMarkupElement { +import org.jivesoftware.smack.util.XmlStringBuilder; + +public class BlockQuoteElement implements MarkupElement.BlockLevelMarkupElement { public static final String ELEMENT = "bquote"; + private final int start, end; + /** * Create a new Block Quote element. * @@ -27,7 +31,18 @@ public class BlockQuoteElement extends MarkupElement.BlockLevelMarkupElement { * @param end end index */ public BlockQuoteElement(int start, int end) { - super(start, end); + this.start = start; + this.end = end; + } + + @Override + public int getStart() { + return start; + } + + @Override + public int getEnd() { + return end; } @Override @@ -35,4 +50,13 @@ public class BlockQuoteElement extends MarkupElement.BlockLevelMarkupElement { return ELEMENT; } + @Override + public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(this); + xml.attribute(ATTR_START, getStart()); + xml.attribute(ATTR_END, getEnd()); + xml.closeEmptyElement(); + return xml; + } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/CodeBlockElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/CodeBlockElement.java index 4a741c0c0..73e333af3 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/CodeBlockElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/CodeBlockElement.java @@ -16,10 +16,14 @@ */ package org.jivesoftware.smackx.message_markup.element; -public class CodeBlockElement extends MarkupElement.BlockLevelMarkupElement { +import org.jivesoftware.smack.util.XmlStringBuilder; + +public class CodeBlockElement implements MarkupElement.BlockLevelMarkupElement { public static final String ELEMENT = "bcode"; + private final int start, end; + /** * Create a new Code Block element. * @@ -27,7 +31,18 @@ public class CodeBlockElement extends MarkupElement.BlockLevelMarkupElement { * @param end end index */ public CodeBlockElement(int start, int end) { - super(start, end); + this.start = start; + this.end = end; + } + + @Override + public int getStart() { + return start; + } + + @Override + public int getEnd() { + return end; } @Override @@ -35,4 +50,13 @@ public class CodeBlockElement extends MarkupElement.BlockLevelMarkupElement { return ELEMENT; } + @Override + public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(this); + xml.attribute(ATTR_START, getStart()); + xml.attribute(ATTR_END, getEnd()); + xml.closeEmptyElement(); + return xml; + } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/ListElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/ListElement.java index 241bd8053..499fdaa61 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/ListElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/ListElement.java @@ -19,14 +19,15 @@ package org.jivesoftware.smackx.message_markup.element; import java.util.Collections; import java.util.List; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; -public class ListElement extends MarkupElement.NonEmptyChildElement { +public class ListElement implements MarkupElement.MarkupChildElement { public static final String ELEMENT = "list"; public static final String ELEM_LI = "li"; + private final int start, end; private final List entries; /** @@ -37,10 +38,21 @@ public class ListElement extends MarkupElement.NonEmptyChildElement { * @param entries list entries */ public ListElement(int start, int end, List entries) { - super(start, end); + this.start = start; + this.end = end; this.entries = Collections.unmodifiableList(entries); } + @Override + public int getStart() { + return start; + } + + @Override + public int getEnd() { + return end; + } + /** * Return a list of all list entries. * @@ -56,11 +68,22 @@ public class ListElement extends MarkupElement.NonEmptyChildElement { } @Override - public void appendInnerXml(XmlStringBuilder xml) { - xml.append(getEntries()); + public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(this); + xml.attribute(ATTR_START, getStart()); + xml.attribute(ATTR_END, getEnd()); + xml.rightAngleBracket(); + + for (ListEntryElement li : getEntries()) { + xml.append(li.toXML()); + } + + xml.closeElement(this); + return xml; } - public static class ListEntryElement implements ExtensionElement { + public static class ListEntryElement implements NamedElement { private final int start; @@ -86,15 +109,11 @@ public class ListElement extends MarkupElement.NonEmptyChildElement { return ELEM_LI; } - @Override - public String getNamespace() { - return MarkupElement.NAMESPACE; - } - @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); - xml.attribute(MarkupElement.MarkupChildElement.ATTR_START, getStart()); + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(this); + xml.attribute(ATTR_START, getStart()); xml.closeEmptyElement(); return xml; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/MarkupElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/MarkupElement.java index 0c368e0cf..be76e158b 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/MarkupElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/MarkupElement.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Set; import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; public class MarkupElement implements ExtensionElement { @@ -266,89 +267,46 @@ public class MarkupElement implements ExtensionElement { } } + + + + + + + + + + + + + /** * Interface for child elements. */ - public abstract static class MarkupChildElement implements ExtensionElement { + public interface MarkupChildElement extends NamedElement { - public static final String ATTR_START = "start"; - public static final String ATTR_END = "end"; - - private final int start, end; - - protected MarkupChildElement(int start, int end) { - this.start = start; - this.end = end; - } + String ATTR_START = "start"; + String ATTR_END = "end"; /** * Return the start index of this element. * * @return start index */ - public final int getStart() { - return start; - } + int getStart(); /** * Return the end index of this element. * * @return end index */ - public final int getEnd() { - return end; - } - - @Override - public final String getNamespace() { - return NAMESPACE; - } - - @Override - public final XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); - xml.attribute(ATTR_START, getStart()); - xml.attribute(ATTR_END, getEnd()); - - afterXmlPrelude(xml); - return xml; - } - - protected abstract void afterXmlPrelude(XmlStringBuilder xml); - } - - public abstract static class NonEmptyChildElement extends MarkupChildElement { - - protected NonEmptyChildElement(int start, int end) { - super(start, end); - } - - @Override - protected final void afterXmlPrelude(XmlStringBuilder xml) { - xml.rightAngleBracket(); - - appendInnerXml(xml); - - xml.closeElement(this); - } - - protected abstract void appendInnerXml(XmlStringBuilder xml); - + int getEnd(); } /** * Interface for block level child elements. */ - public abstract static class BlockLevelMarkupElement extends MarkupChildElement { - - protected BlockLevelMarkupElement(int start, int end) { - super(start, end); - } - - @Override - protected final void afterXmlPrelude(XmlStringBuilder xml) { - xml.closeEmptyElement(); - } + public interface BlockLevelMarkupElement extends MarkupChildElement { } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/SpanElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/SpanElement.java index 5a5fa1338..74f3adebb 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/SpanElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/SpanElement.java @@ -21,10 +21,11 @@ import java.util.Set; import org.jivesoftware.smack.util.XmlStringBuilder; -public class SpanElement extends MarkupElement.NonEmptyChildElement { +public class SpanElement implements MarkupElement.MarkupChildElement { public static final String ELEMENT = "span"; + private final int start, end; private final Set styles; /** @@ -35,10 +36,21 @@ public class SpanElement extends MarkupElement.NonEmptyChildElement { * @param styles list of styles that apply to this span */ public SpanElement(int start, int end, Set styles) { - super(start, end); + this.start = start; + this.end = end; this.styles = Collections.unmodifiableSet(styles); } + @Override + public int getStart() { + return start; + } + + @Override + public int getEnd() { + return end; + } + /** * Return all styles of this span. * @@ -64,9 +76,18 @@ public class SpanElement extends MarkupElement.NonEmptyChildElement { } @Override - protected void appendInnerXml(XmlStringBuilder xml) { + public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(this); + xml.attribute(ATTR_START, getStart()); + xml.attribute(ATTR_END, getEnd()); + xml.rightAngleBracket(); + for (SpanStyle style : getStyles()) { - xml.emptyElement(style); + xml.halfOpenElement(style.toString()).closeEmptyElement(); } + + xml.closeElement(this); + return xml; } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightAffiliationsIQ.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightAffiliationsIQ.java index c9e0ead62..9ca1e3ffe 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightAffiliationsIQ.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightAffiliationsIQ.java @@ -62,7 +62,7 @@ public class MUCLightAffiliationsIQ extends IQ { Iterator> it = affiliations.entrySet().iterator(); while (it.hasNext()) { Map.Entry pair = it.next(); - xml.append(new UserWithAffiliationElement(pair.getKey(), pair.getValue())); + xml.element(new UserWithAffiliationElement(pair.getKey(), pair.getValue())); } return xml; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightBlockingIQ.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightBlockingIQ.java index f3334b651..b18eb762b 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightBlockingIQ.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightBlockingIQ.java @@ -86,11 +86,11 @@ public class MUCLightBlockingIQ extends IQ { return xml; } - private static void parseBlocking(IQChildElementXmlStringBuilder xml, HashMap map, boolean isRoom) { + private void parseBlocking(IQChildElementXmlStringBuilder xml, HashMap map, boolean isRoom) { Iterator> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry pair = it.next(); - xml.append(new BlockingElement(pair.getKey(), pair.getValue(), isRoom)); + xml.element(new BlockingElement(pair.getKey(), pair.getValue(), isRoom)); } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightChangeAffiliationsIQ.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightChangeAffiliationsIQ.java index 494a7a4d7..d5ab577a9 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightChangeAffiliationsIQ.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightChangeAffiliationsIQ.java @@ -71,7 +71,7 @@ public class MUCLightChangeAffiliationsIQ extends IQ { Iterator> it = affiliations.entrySet().iterator(); while (it.hasNext()) { Map.Entry pair = it.next(); - xml.append(new UserWithAffiliationElement(pair.getKey(), pair.getValue())); + xml.element(new UserWithAffiliationElement(pair.getKey(), pair.getValue())); } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightConfigurationIQ.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightConfigurationIQ.java index f284d0656..a20a7047d 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightConfigurationIQ.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightConfigurationIQ.java @@ -52,7 +52,7 @@ public class MUCLightConfigurationIQ extends IQ { protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) { xml.rightAngleBracket(); xml.optElement("version", version); - xml.append(new ConfigurationElement(configuration)); + xml.element(new ConfigurationElement(configuration)); return xml; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightCreateIQ.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightCreateIQ.java index d15d47db5..b3c059eae 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightCreateIQ.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightCreateIQ.java @@ -99,10 +99,10 @@ public class MUCLightCreateIQ extends IQ { @Override protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) { xml.rightAngleBracket(); - xml.append(new ConfigurationElement(configuration)); + xml.element(new ConfigurationElement(configuration)); if (!occupants.isEmpty()) { - xml.append(new OccupantsElement(occupants)); + xml.element(new OccupantsElement(occupants)); } return xml; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightElements.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightElements.java index 2828bebfb..4365a7e18 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightElements.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightElements.java @@ -104,7 +104,7 @@ public abstract class MUCLightElements { Iterator> it = affiliations.entrySet().iterator(); while (it.hasNext()) { Map.Entry pair = it.next(); - xml.append(new UserWithAffiliationElement(pair.getKey(), pair.getValue())); + xml.element(new UserWithAffiliationElement(pair.getKey(), pair.getValue())); } xml.closeElement(this); @@ -303,7 +303,7 @@ public abstract class MUCLightElements { Iterator> it = occupants.entrySet().iterator(); while (it.hasNext()) { Map.Entry pair = it.next(); - xml.append(new UserWithAffiliationElement(pair.getKey(), pair.getValue())); + xml.element(new UserWithAffiliationElement(pair.getKey(), pair.getValue())); } xml.closeElement("occupants"); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightInfoIQ.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightInfoIQ.java index 42a2b9308..c737453ef 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightInfoIQ.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/muclight/element/MUCLightInfoIQ.java @@ -62,8 +62,8 @@ public class MUCLightInfoIQ extends IQ { protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) { xml.rightAngleBracket(); xml.optElement("version", version); - xml.append(new ConfigurationElement(configuration)); - xml.append(new OccupantsElement(occupants)); + xml.element(new ConfigurationElement(configuration)); + xml.element(new OccupantsElement(occupants)); return xml; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/push_notifications/element/EnablePushNotificationsIQ.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/push_notifications/element/EnablePushNotificationsIQ.java index 7c86584d8..577b1ab2c 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/push_notifications/element/EnablePushNotificationsIQ.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/push_notifications/element/EnablePushNotificationsIQ.java @@ -115,7 +115,7 @@ public class EnablePushNotificationsIQ extends IQ { dataForm.addField(field.build()); } - xml.append(dataForm); + xml.element(dataForm); } return xml; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java index b43cc6078..c2674de64 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java @@ -27,7 +27,6 @@ import org.jivesoftware.smack.XMPPConnectionRegistry; import org.jivesoftware.smack.filter.AndFilter; import org.jivesoftware.smack.filter.MessageTypeFilter; import org.jivesoftware.smack.filter.NotFilter; -import org.jivesoftware.smack.filter.StanzaExtensionFilter; import org.jivesoftware.smack.filter.StanzaFilter; import org.jivesoftware.smack.filter.ToTypeFilter; import org.jivesoftware.smack.packet.Message; @@ -36,15 +35,6 @@ import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.sid.element.OriginIdElement; -/** - * Manager class for Stable and Unique Stanza IDs. - * - * In order to start automatically appending origin ids to outgoing messages, use {@link #enable()}. - * This will announce support via the {@link ServiceDiscoveryManager}. If you want to stop appending origin-ids - * and de-announce support, call {@link #disable()}. - * - * @see XEP-0359: Stable and Unique Stanza IDs - */ public final class StableUniqueStanzaIdManager extends Manager { public static final String NAMESPACE = "urn:xmpp:sid:0"; @@ -56,9 +46,6 @@ public final class StableUniqueStanzaIdManager extends Manager { MessageTypeFilter.NORMAL_OR_CHAT_OR_HEADLINE, ToTypeFilter.ENTITY_FULL_OR_BARE_JID); - // Filter that filters for messages with an origin id - private static final StanzaFilter ORIGIN_ID_FILTER = new StanzaExtensionFilter(OriginIdElement.ELEMENT, NAMESPACE); - // Listener for outgoing stanzas that adds origin-ids to outgoing stanzas. private static final StanzaListener ADD_ORIGIN_ID_INTERCEPTOR = new StanzaListener() { @Override @@ -79,7 +66,7 @@ public final class StableUniqueStanzaIdManager extends Manager { /** * Private constructor. - * @param connection XMPP connection + * @param connection TODO javadoc me please */ private StableUniqueStanzaIdManager(XMPPConnection connection) { super(connection); @@ -106,8 +93,7 @@ public final class StableUniqueStanzaIdManager extends Manager { */ public synchronized void enable() { ServiceDiscoveryManager.getInstanceFor(connection()).addFeature(NAMESPACE); - // We need a filter for outgoing messages that do not carry an origin-id already - StanzaFilter filter = new AndFilter(OUTGOING_FILTER, new NotFilter(ORIGIN_ID_FILTER)); + StanzaFilter filter = new AndFilter(OUTGOING_FILTER, new NotFilter(OUTGOING_FILTER)); connection().addStanzaInterceptor(ADD_ORIGIN_ID_INTERCEPTOR, filter); } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/spoiler/element/SpoilerElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/spoiler/element/SpoilerElement.java index d2cb7c333..65bb14e4b 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/spoiler/element/SpoilerElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/spoiler/element/SpoilerElement.java @@ -131,7 +131,12 @@ public class SpoilerElement implements ExtensionElement { return map; } - @Override + /** + * Return the language of the hint. + * May be null. + * + * @return language of hint text + */ public String getLanguage() { return language; } @@ -148,7 +153,8 @@ public class SpoilerElement implements ExtensionElement { @Override public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); + xml.optXmlLangAttribute(getLanguage()); if (getHint() == null) { xml.closeEmptyElement(); } else { diff --git a/smack-experimental/src/main/resources/org.jivesoftware.smack.experimental/experimental.providers b/smack-experimental/src/main/resources/org.jivesoftware.smack.experimental/experimental.providers index 9f42e0f57..974c149f2 100644 --- a/smack-experimental/src/main/resources/org.jivesoftware.smack.experimental/experimental.providers +++ b/smack-experimental/src/main/resources/org.jivesoftware.smack.experimental/experimental.providers @@ -324,11 +324,4 @@ org.jivesoftware.smackx.dox.provider.DnsIqProvider - - - jid - urn:xmpp:jidprep:0 - org.jivesoftware.smackx.jid_prep.provider.JidPrepIqProvider - - diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/mam/PagingTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/mam/PagingTest.java index d0919dbcf..91487e62a 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/mam/PagingTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/mam/PagingTest.java @@ -47,7 +47,7 @@ public class PagingTest extends MamTest { assertEquals(mamQueryIQ.getDataForm(), dataForm); assertEquals(mamQueryIQ.getDataForm().getFields().get(0).getValues().get(0).toString(), "urn:xmpp:mam:1"); - assertEquals(pagingStanza, mamQueryIQ.toXML(StreamOpen.CLIENT_NAMESPACE).toString()); + assertEquals(mamQueryIQ.toXML(StreamOpen.CLIENT_NAMESPACE).toString(), pagingStanza); } } diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/mam/QueryArchiveTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/mam/QueryArchiveTest.java index 44990f420..bcd4e00ab 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/mam/QueryArchiveTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/mam/QueryArchiveTest.java @@ -82,7 +82,8 @@ public class QueryArchiveTest extends MamTest { message.addExtension(new MamResultExtension("g27", "34482-21985-73620", forwarded)); - assertEquals(mamQueryResultExample, message.toXML(StreamOpen.CLIENT_NAMESPACE).toString()); + // FIXME: The order of assertEquals is reversed, fix it by switching it. + assertEquals(message.toXML(StreamOpen.CLIENT_NAMESPACE).toString(), mamQueryResultExample); MamResultExtension mamResultExtension = MamResultExtension.from(message); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/address/MultipleRecipientManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/address/MultipleRecipientManager.java index fc361c392..d9d7131b4 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/address/MultipleRecipientManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/address/MultipleRecipientManager.java @@ -212,19 +212,19 @@ public class MultipleRecipientManager { if (to != null) { for (Jid jid : to) { packet.setTo(jid); - connection.sendStanza(new PacketCopy(packet)); + connection.sendStanza(new PacketCopy(packet.toXML())); } } if (cc != null) { for (Jid jid : cc) { packet.setTo(jid); - connection.sendStanza(new PacketCopy(packet)); + connection.sendStanza(new PacketCopy(packet.toXML())); } } if (bcc != null) { for (Jid jid : bcc) { packet.setTo(jid); - connection.sendStanza(new PacketCopy(packet)); + connection.sendStanza(new PacketCopy(packet.toXML())); } } } @@ -297,7 +297,6 @@ public class MultipleRecipientManager { */ private static final class PacketCopy extends Stanza { - private final String elementName; private final CharSequence text; /** @@ -306,9 +305,8 @@ public class MultipleRecipientManager { * * @param text the whole text of the stanza to send */ - private PacketCopy(Stanza stanza) { - this.elementName = stanza.getElementName(); - this.text = stanza.toXML(); + private PacketCopy(CharSequence text) { + this.text = text; } @Override @@ -321,11 +319,6 @@ public class MultipleRecipientManager { return toXML().toString(); } - @Override - public String getElementName() { - return elementName; - } - } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/address/packet/MultipleAddresses.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/address/packet/MultipleAddresses.java index 4e3f76f15..2ec8cd3d7 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/address/packet/MultipleAddresses.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/address/packet/MultipleAddresses.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.List; import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jxmpp.jid.Jid; @@ -128,7 +129,7 @@ public class MultipleAddresses implements ExtensionElement { return buf; } - public static final class Address implements ExtensionElement { + public static final class Address implements NamedElement { public static final String ELEMENT = "address"; @@ -192,15 +193,10 @@ public class MultipleAddresses implements ExtensionElement { return ELEMENT; } - @Override - public String getNamespace() { - return NAMESPACE; - } - @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder buf = new XmlStringBuilder(this, enclosingNamespace); - buf.attribute("type", type); + XmlStringBuilder buf = new XmlStringBuilder(); + buf.halfOpenElement(this).attribute("type", type); buf.optAttribute("jid", jid); buf.optAttribute("node", node); buf.optAttribute("desc", description); @@ -213,6 +209,5 @@ public class MultipleAddresses implements ExtensionElement { buf.closeEmptyElement(); return buf; } - } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/packet/Bytestream.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/packet/Bytestream.java index 64b3ad7d9..e51b10061 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/packet/Bytestream.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/packet/Bytestream.java @@ -21,8 +21,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.InternetAddress; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -260,20 +260,13 @@ public class Bytestream extends IQ { return xml; } - private abstract static class BytestreamExtensionElement implements ExtensionElement { - @Override - public final String getNamespace() { - return NAMESPACE; - } - } - /** * Stanza extension that represents a potential SOCKS5 proxy for the file transfer. Stream hosts * are forwarded to the target of the file transfer who then chooses and connects to one. * * @author Alexander Wenckus */ - public static class StreamHost extends BytestreamExtensionElement { + public static class StreamHost implements NamedElement { public static String ELEMENTNAME = "streamhost"; @@ -349,7 +342,7 @@ public class Bytestream extends IQ { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("jid", getJID()); xml.attribute("host", address); if (getPort() != 0) { @@ -373,7 +366,7 @@ public class Bytestream extends IQ { * * @author Alexander Wenckus */ - public static class StreamHostUsed extends BytestreamExtensionElement { + public static class StreamHostUsed implements NamedElement { public static String ELEMENTNAME = "streamhost-used"; @@ -404,7 +397,7 @@ public class Bytestream extends IQ { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("jid", getJID()); xml.closeEmptyElement(); return xml; @@ -416,7 +409,7 @@ public class Bytestream extends IQ { * * @author Alexander Wenckus */ - public static class Activate extends BytestreamExtensionElement { + public static class Activate implements NamedElement { public static String ELEMENTNAME = "activate"; @@ -447,13 +440,12 @@ public class Bytestream extends IQ { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.rightAngleBracket(); xml.escape(getTarget()); xml.closeElement(this); return xml; } - } /** diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/delay/packet/DelayInformation.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/delay/packet/DelayInformation.java index 24c85d1d8..7a81102bf 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/delay/packet/DelayInformation.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/delay/packet/DelayInformation.java @@ -103,7 +103,7 @@ public class DelayInformation implements ExtensionElement { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("stamp", XmppDateTime.formatXEP0082Date(stamp)); xml.optAttribute("from", from); xml.rightAngleBracket(); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/forward/packet/Forwarded.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/forward/packet/Forwarded.java index e8c886692..72d9fdb88 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/forward/packet/Forwarded.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/forward/packet/Forwarded.java @@ -72,10 +72,10 @@ public class Forwarded implements ExtensionElement { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.rightAngleBracket(); xml.optElement(getDelayInformation()); - xml.append(forwardedPacket); + xml.append(forwardedPacket.toXML(NAMESPACE)); xml.closeElement(this); return xml; } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java index 171231a9b..c88978828 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017-2019 Florian Schmaus + * 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. @@ -16,8 +16,7 @@ */ package org.jivesoftware.smackx.jingle.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; -import org.jivesoftware.smack.packet.XmlEnvironment; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -25,10 +24,9 @@ import org.jivesoftware.smack.util.XmlStringBuilder; /** * Jingle content element. */ -public final class JingleContent implements FullyQualifiedElement { +public final class JingleContent implements NamedElement { public static final String ELEMENT = "content"; - public static final String NAMESPACE = Jingle.NAMESPACE; public static final String CREATOR_ATTRIBUTE_NAME = "creator"; @@ -134,13 +132,8 @@ public final class JingleContent implements FullyQualifiedElement { } @Override - public String getNamespace() { - return NAMESPACE; - } - - @Override - public XmlStringBuilder toXML(XmlEnvironment enclosingXmlEnvironment) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingXmlEnvironment); + public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute(CREATOR_ATTRIBUTE_NAME, creator); xml.optAttribute(DISPOSITION_ATTRIBUTE_NAME, disposition); xml.attribute(NAME_ATTRIBUTE_NAME, name); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java index aaf2cb269..bb09f205d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2014-2019 Florian Schmaus + * Copyright © 2014-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. @@ -16,12 +16,18 @@ */ package org.jivesoftware.smackx.jingle.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.NamedElement; /** * An element found usually in 'description' elements. * */ -public interface JingleContentDescriptionChildElement extends FullyQualifiedElement { +public abstract class JingleContentDescriptionChildElement implements NamedElement { + public static final String ELEMENT = "payload-type"; + + @Override + public String getElementName() { + return ELEMENT; + } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java index a683a9d6e..f3580540a 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017-2019 Florian Schmaus + * 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. @@ -20,7 +20,6 @@ import java.util.Collections; import java.util.List; import org.jivesoftware.smack.packet.ExtensionElement; -import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.XmlStringBuilder; /** @@ -67,8 +66,8 @@ public abstract class JingleContentTransport implements ExtensionElement { } @Override - public XmlStringBuilder toXML(XmlEnvironment xmlEnvironment) { - XmlStringBuilder xml = new XmlStringBuilder(this, xmlEnvironment); + public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(this); addExtraAttributes(xml); if (candidates.isEmpty() && info == null) { diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java index 1a8cfb923..be38c8864 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017-2019 Florian Schmaus + * 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. @@ -16,13 +16,13 @@ */ package org.jivesoftware.smackx.jingle.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.NamedElement; /** * An element found usually in Jingle 'transport' elements. * */ -public abstract class JingleContentTransportCandidate implements FullyQualifiedElement { +public abstract class JingleContentTransportCandidate implements NamedElement { public static final String ELEMENT = "candidate"; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java index 7b4a13e9e..6e1680046 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017 Paul Schaub, 2019 Florian Schmaus + * Copyright 2017 Paul Schaub * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,11 +16,11 @@ */ package org.jivesoftware.smackx.jingle.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.NamedElement; /** * Abstract JingleContentTransportInfo element. */ -public interface JingleContentTransportInfo extends FullyQualifiedElement { +public abstract class JingleContentTransportInfo implements NamedElement { } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java index 91c909aba..e4d601aea 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017-2019 Florian Schmaus + * 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. @@ -19,8 +19,7 @@ package org.jivesoftware.smackx.jingle.element; import java.util.HashMap; import java.util.Map; -import org.jivesoftware.smack.packet.FullyQualifiedElement; -import org.jivesoftware.smack.packet.XmlEnvironment; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -30,10 +29,9 @@ import org.jivesoftware.smack.util.XmlStringBuilder; * @see XEP-0166 § 7.4 * */ -public class JingleReason implements FullyQualifiedElement { +public class JingleReason implements NamedElement { public static final String ELEMENT = "reason"; - public static final String NAMESPACE = Jingle.NAMESPACE; public static AlternativeSession AlternativeSession(String sessionId) { return new AlternativeSession(sessionId); @@ -116,16 +114,11 @@ public class JingleReason implements FullyQualifiedElement { } @Override - public String getNamespace() { - return NAMESPACE; - } - - @Override - public XmlStringBuilder toXML(XmlEnvironment enclosingXmlEnvironment) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingXmlEnvironment); + public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(this); xml.rightAngleBracket(); - xml.emptyElement(reason); + xml.emptyElement(reason.asString); xml.closeElement(this); return xml; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportCandidate.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportCandidate.java index 4ad96fcca..1947fec41 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportCandidate.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportCandidate.java @@ -16,7 +16,6 @@ */ package org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements; -import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.InternetAddress; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.StringUtils; @@ -34,8 +33,6 @@ import org.jxmpp.stringprep.XmppStringprepException; */ public final class JingleS5BTransportCandidate extends JingleContentTransportCandidate { - public static final String NAMESPACE = JingleS5BTransport.NAMESPACE_V1; - public static final String ATTR_CID = "cid"; public static final String ATTR_HOST = "host"; public static final String ATTR_JID = "jid"; @@ -133,15 +130,10 @@ public final class JingleS5BTransportCandidate extends JingleContentTransportCan return new Bytestream.StreamHost(jid, host, port); } - @Override - public String getNamespace() { - return NAMESPACE; - } - - @Override - public XmlStringBuilder toXML(XmlEnvironment enclosingXmlEnvironment) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingXmlEnvironment); + public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(this); xml.attribute(ATTR_CID, cid); xml.attribute(ATTR_HOST, host); xml.attribute(ATTR_JID, jid); @@ -215,5 +207,4 @@ public final class JingleS5BTransportCandidate extends JingleContentTransportCan return new JingleS5BTransportCandidate(cid, host, jid, port, priority, type); } } - } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportInfo.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportInfo.java index 92733a5c0..e21cd77bf 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportInfo.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransportInfo.java @@ -16,7 +16,6 @@ */ package org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements; -import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfo; @@ -24,14 +23,7 @@ import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfo; /** * Class representing possible SOCKS5 TransportInfo elements. */ -public abstract class JingleS5BTransportInfo implements JingleContentTransportInfo { - - public static final String NAMESPACE = JingleS5BTransport.NAMESPACE_V1; - - @Override - public final String getNamespace() { - return NAMESPACE; - } +public abstract class JingleS5BTransportInfo extends JingleContentTransportInfo { public abstract static class JingleS5BCandidateTransportInfo extends JingleS5BTransportInfo { public static final String ATTR_CID = "cid"; @@ -47,8 +39,9 @@ public abstract class JingleS5BTransportInfo implements JingleContentTransportIn } @Override - public final XmlStringBuilder toXML(XmlEnvironment xmlEnvironment) { - XmlStringBuilder xml = new XmlStringBuilder(this, xmlEnvironment); + public final XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(this); xml.attribute(ATTR_CID, getCandidateId()); xml.closeEmptyElement(); return xml; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/element/MediaElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/element/MediaElement.java index f82e47c40..08ebeba32 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/element/MediaElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/element/MediaElement.java @@ -87,7 +87,7 @@ public class MediaElement implements FormFieldChildElement { .optAttribute("width", width) .rightAngleBracket(); - xml.append(uris); + xml.append(uris, xmlEnvironment); xml.closeElement(this); return xml; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/provider/MediaElementProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/provider/MediaElementProvider.java index 432e40c49..c4b8616b5 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/provider/MediaElementProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/provider/MediaElementProvider.java @@ -74,7 +74,7 @@ public class MediaElementProvider extends FormFieldChildElementProvider pageLayout) { + for (DataFormLayoutElement object : pageLayout) { + buf.append(object.toXML()); + } + } + + public static class Fieldref implements DataFormLayoutElement{ public static final String ELEMENT = "fieldref"; private final String var; @@ -117,7 +128,7 @@ public class DataLayout implements ExtensionElement { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder buf = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder buf = new XmlStringBuilder(this); buf.attribute("var", getVar()); buf.closeEmptyElement(); return buf; @@ -139,7 +150,7 @@ public class DataLayout implements ExtensionElement { } - public static class Section extends DataFormLayoutElement{ + public static class Section implements DataFormLayoutElement{ public static final String ELEMENT = "section"; private final List sectionLayout = new ArrayList<>(); @@ -177,12 +188,11 @@ public class DataLayout implements ExtensionElement { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder buf = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder buf = new XmlStringBuilder(this); buf.optAttribute("label", getLabel()); buf.rightAngleBracket(); - buf.append(getSectionLayout()); - + walkList(buf, getSectionLayout()); buf.closeElement(ELEMENT); return buf; } @@ -203,13 +213,13 @@ public class DataLayout implements ExtensionElement { } - public static class Reportedref extends DataFormLayoutElement{ + public static class Reportedref implements DataFormLayoutElement{ public static final String ELEMENT = "reportedref"; @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder buf = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder buf = new XmlStringBuilder(this); buf.closeEmptyElement(); return buf; } @@ -221,7 +231,7 @@ public class DataLayout implements ExtensionElement { } - public static class Text extends DataFormLayoutElement{ + public static class Text implements DataFormLayoutElement{ public static final String ELEMENT = "text"; private final String text; @@ -235,10 +245,8 @@ public class DataLayout implements ExtensionElement { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder buf = new XmlStringBuilder(this, enclosingNamespace); - buf.rightAngleBracket(); - buf.escape(getText()); - buf.closeElement(this); + XmlStringBuilder buf = new XmlStringBuilder(); + buf.element(ELEMENT, getText()); return buf; } @@ -258,11 +266,7 @@ public class DataLayout implements ExtensionElement { } - public abstract static class DataFormLayoutElement implements ExtensionElement { - @Override - public final String getNamespace() { - return NAMESPACE; - } + public interface DataFormLayoutElement extends NamedElement { } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/packet/ValidateElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/packet/ValidateElement.java index a3643f023..83edfdf1c 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/packet/ValidateElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/packet/ValidateElement.java @@ -1,6 +1,6 @@ /** * - * Copyright 2014 Anno van Vliet, 2019 Florian Schmaus + * Copyright 2014 Anno van Vliet * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,8 +19,7 @@ package org.jivesoftware.smackx.xdatavalidation.packet; import javax.xml.namespace.QName; import org.jivesoftware.smack.datatypes.UInt32; -import org.jivesoftware.smack.packet.FullyQualifiedElement; -import org.jivesoftware.smack.packet.XmlEnvironment; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -337,7 +336,7 @@ public abstract class ValidateElement implements FormFieldChildElement { * This element indicates for "list-multi", that a minimum and maximum number of options should be selected and/or * entered. */ - public static class ListRange implements FullyQualifiedElement { + public static class ListRange implements NamedElement { public static final String ELEMENT = "list-range"; private final UInt32 min; @@ -364,8 +363,8 @@ public abstract class ValidateElement implements FormFieldChildElement { } @Override - public XmlStringBuilder toXML(XmlEnvironment enclosingXmlEnvironment) { - XmlStringBuilder buf = new XmlStringBuilder(this, enclosingXmlEnvironment); + public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder buf = new XmlStringBuilder(this); buf.optAttribute("min", getMin()); buf.optAttribute("max", getMax()); buf.closeEmptyElement(); @@ -395,11 +394,6 @@ public abstract class ValidateElement implements FormFieldChildElement { return max; } - @Override - public String getNamespace() { - return NAMESPACE; - } - } /** diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java index 64d6ea070..6023f257e 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java @@ -70,7 +70,7 @@ public class JingleContentTest extends SmackTestSuite { assertEquals(content1.toXML().toString(), builder.build().toXML().toString()); String xml = - "" + + "" + ""; assertEquals(xml, content1.toXML().toString()); } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonTest.java index 2e643248e..d62de70b3 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleReasonTest.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017-2019 Paul Schaub, 2019 Florian Schmaus + * Copyright 2017 Paul Schaub * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,14 +16,13 @@ */ package org.jivesoftware.smackx.jingle; -import static org.junit.Assert.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static junit.framework.TestCase.assertEquals; import org.jivesoftware.smack.test.util.SmackTestSuite; import org.jivesoftware.smackx.jingle.element.JingleReason; -import org.junit.jupiter.api.Test; +import org.junit.Test; /** * Test JingleReason functionality. @@ -32,67 +31,56 @@ public class JingleReasonTest extends SmackTestSuite { @Test public void parserTest() { - assertReasonXml("", - JingleReason.Success); - assertReasonXml("", - JingleReason.Busy); - assertReasonXml("", - JingleReason.Cancel); - assertReasonXml("", - JingleReason.ConnectivityError); - assertReasonXml("", - JingleReason.Decline); - assertReasonXml("", - JingleReason.Expired); - assertReasonXml("", - JingleReason.UnsupportedTransports); - assertReasonXml("", - JingleReason.FailedTransport); - assertReasonXml("", - JingleReason.GeneralError); - assertReasonXml("", - JingleReason.Gone); - assertReasonXml("", - JingleReason.MediaError); - assertReasonXml("", - JingleReason.SecurityError); - assertReasonXml("", - JingleReason.UnsupportedApplications); - assertReasonXml("", - JingleReason.Timeout); - assertReasonXml("", - JingleReason.FailedApplication); - assertReasonXml("", - JingleReason.IncompatibleParameters); - assertReasonXml("1234", - JingleReason.AlternativeSession("1234")); + assertEquals("", + JingleReason.Success.toXML().toString()); + assertEquals("", + JingleReason.Busy.toXML().toString()); + assertEquals("", + JingleReason.Cancel.toXML().toString()); + assertEquals("", + JingleReason.ConnectivityError.toXML().toString()); + assertEquals("", + JingleReason.Decline.toXML().toString()); + assertEquals("", + JingleReason.Expired.toXML().toString()); + assertEquals("", + JingleReason.UnsupportedTransports.toXML().toString()); + assertEquals("", + JingleReason.FailedTransport.toXML().toString()); + assertEquals("", + JingleReason.GeneralError.toXML().toString()); + assertEquals("", + JingleReason.Gone.toXML().toString()); + assertEquals("", + JingleReason.MediaError.toXML().toString()); + assertEquals("", + JingleReason.SecurityError.toXML().toString()); + assertEquals("", + JingleReason.UnsupportedApplications.toXML().toString()); + assertEquals("", + JingleReason.Timeout.toXML().toString()); + assertEquals("", + JingleReason.FailedApplication.toXML().toString()); + assertEquals("", + JingleReason.IncompatibleParameters.toXML().toString()); + assertEquals("1234", + JingleReason.AlternativeSession("1234").toXML().toString()); } - private static void assertReasonXml(String expected, JingleReason reason) { - String actualXml = reason.toXML(JingleReason.NAMESPACE).toString(); - assertEquals(expected, actualXml); - } - - @Test + @Test(expected = NullPointerException.class) public void alternativeSessionEmptyStringTest() { - assertThrows(NullPointerException.class, () -> - // Alternative sessionID must not be empty - JingleReason.AlternativeSession("") - ); + // Alternative sessionID must not be empty + JingleReason.AlternativeSession(""); } - @Test + @Test(expected = NullPointerException.class) public void alternativeSessionNullStringTest() { - assertThrows(NullPointerException.class, () -> - // Alternative sessionID must not be null - JingleReason.AlternativeSession(null) - ); + // Alternative sessionID must not be null + JingleReason.AlternativeSession(null); } - @Test + @Test(expected = IllegalArgumentException.class) public void illegalArgumentTest() { - assertThrows(IllegalArgumentException.class, () -> - JingleReason.Reason.fromString("illegal-reason") - ); + JingleReason.Reason.fromString("illegal-reason"); } } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/mediaelement/element/MediaElementTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/mediaelement/element/MediaElementTest.java deleted file mode 100644 index aed828fef..000000000 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/mediaelement/element/MediaElementTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * - * Copyright 2019 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.smackx.mediaelement.element; - -import static org.junit.Assert.assertEquals; - -import java.net.URI; -import java.net.URISyntaxException; - -import org.junit.jupiter.api.Test; - -public class MediaElementTest { - - @Test - public void simpleToXmlTest() throws URISyntaxException { - MediaElement.Uri uri = new MediaElement.Uri(new URI("http://example.org"), "test-type"); - - MediaElement mediaElement = MediaElement.builder() - .addUri(uri) - .setHeightAndWidth(16, 16) - .build(); - - String xml = mediaElement.toXML().toString(); - - String expected = "http://example.org"; - assertEquals(expected, xml); - } -} diff --git a/smack-im/src/main/java/org/jivesoftware/smack/roster/packet/RosterPacket.java b/smack-im/src/main/java/org/jivesoftware/smack/roster/packet/RosterPacket.java index 2944cf6be..3c079a39c 100644 --- a/smack-im/src/main/java/org/jivesoftware/smack/roster/packet/RosterPacket.java +++ b/smack-im/src/main/java/org/jivesoftware/smack/roster/packet/RosterPacket.java @@ -24,8 +24,8 @@ import java.util.Locale; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smack.util.EqualsUtil; import org.jivesoftware.smack.util.HashCode; @@ -112,7 +112,7 @@ public final class RosterPacket extends IQ { * the groups the roster item belongs to. */ // TODO Make this class immutable. - public static final class Item implements ExtensionElement { + public static final class Item implements NamedElement { /** * The constant value "{@value}". @@ -163,11 +163,6 @@ public final class RosterPacket extends IQ { return ELEMENT; } - @Override - public String getNamespace() { - return NAMESPACE; - } - /** * Returns the user. * @@ -280,7 +275,7 @@ public final class RosterPacket extends IQ { @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { - XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace); + XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("jid", jid); xml.optAttribute("name", name); xml.optAttribute("subscription", itemType); diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smack/package-info.java b/smack-integration-test/src/main/java/org/jivesoftware/smack/package-info.java deleted file mode 120000 index a3d8f86a1..000000000 --- a/smack-integration-test/src/main/java/org/jivesoftware/smack/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/package-info.java \ No newline at end of file diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smack/package-info.java b/smack-integration-test/src/main/java/org/jivesoftware/smack/package-info.java new file mode 100644 index 000000000..ba596a352 --- /dev/null +++ b/smack-integration-test/src/main/java/org/jivesoftware/smack/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Core classes of the Smack API. + */ +package org.jivesoftware.smack; diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-integration-test/src/main/java/org/jivesoftware/smackx/package-info.java deleted file mode 120000 index f0646658f..000000000 --- a/smack-integration-test/src/main/java/org/jivesoftware/smackx/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../smack-extensions/src/main/java/org/jivesoftware/smackx/package-info.java \ No newline at end of file diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-integration-test/src/main/java/org/jivesoftware/smackx/package-info.java new file mode 100644 index 000000000..b7b3f868f --- /dev/null +++ b/smack-integration-test/src/main/java/org/jivesoftware/smackx/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Integration tests. + */ +package org.jivesoftware.smackx; diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smackx/ping/package-info.java b/smack-integration-test/src/main/java/org/jivesoftware/smackx/ping/package-info.java deleted file mode 120000 index edea7d8fd..000000000 --- a/smack-integration-test/src/main/java/org/jivesoftware/smackx/ping/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../smack-extensions/src/main/java/org/jivesoftware/smackx/ping/package-info.java \ No newline at end of file diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smackx/ping/package-info.java b/smack-integration-test/src/main/java/org/jivesoftware/smackx/ping/package-info.java new file mode 100644 index 000000000..49e29068b --- /dev/null +++ b/smack-integration-test/src/main/java/org/jivesoftware/smackx/ping/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Smacks implementation of XEP-0199: XMPP Ping. + */ +package org.jivesoftware.smackx.ping; diff --git a/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java b/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java deleted file mode 120000 index 1843c7f20..000000000 --- a/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java \ No newline at end of file diff --git a/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java b/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java new file mode 100644 index 000000000..bf6407aba --- /dev/null +++ b/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Java7 related classes for Smacks StringEncoder. + */ +package org.jivesoftware.smack.util.stringencoder; diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java index 03aba4ff4..fdd529e5f 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java @@ -607,7 +607,7 @@ public final class JingleSession extends JingleNegotiator implements MediaReceiv * @param connection TODO javadoc me please * The connection to clean up */ - private static void unregisterInstanceFor(XMPPConnection connection) { + private void unregisterInstanceFor(XMPPConnection connection) { synchronized (sessions) { sessions.remove(connection); } diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateActive.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateActive.java index 201cc9f67..ab57b819f 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateActive.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateActive.java @@ -100,7 +100,7 @@ public class JingleSessionStateActive extends JingleSessionState { /** * Receive and process the action. */ - private static IQ receiveSessionTerminateAction(JingleSession session, Jingle jingle) { + private IQ receiveSessionTerminateAction(JingleSession session, Jingle jingle) { // According to XEP-166 the only thing we can do is ack. IQ response = session.createAck(jingle); diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStatePending.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStatePending.java index 1b905184c..5942209bc 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStatePending.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStatePending.java @@ -103,7 +103,7 @@ public class JingleSessionStatePending extends JingleSessionState { /** * Receive and process the action. */ - private static IQ receiveContentAcceptAction(Jingle inJingle) { + private IQ receiveContentAcceptAction(Jingle inJingle) { // According to XEP-167 the only thing we can do is ack. // setSessionState(JingleSessionStateEnum.ACTIVE); @@ -116,7 +116,7 @@ public class JingleSessionStatePending extends JingleSessionState { /** * Receive and process the action. */ - private static IQ receiveSessionAcceptAction(JingleSession session, Jingle inJingle) { + private IQ receiveSessionAcceptAction(JingleSession session, Jingle inJingle) { // According to XEP-166 the only thing we can do is ack. session.setSessionState(JingleSessionStateActive.getInstance()); @@ -126,7 +126,7 @@ public class JingleSessionStatePending extends JingleSessionState { /** * Receive and process the action. */ - private static IQ receiveSessionTerminateAction(JingleSession session, Jingle jingle) { + private IQ receiveSessionTerminateAction(JingleSession session, Jingle jingle) { // According to XEP-166 the only thing we can do is ack. IQ response = session.createAck(jingle); diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateUnknown.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateUnknown.java index 87cb7ee4f..619458f29 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateUnknown.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSessionStateUnknown.java @@ -101,8 +101,8 @@ public class JingleSessionStateUnknown extends JingleSessionState { * @throws SmackException if Smack detected an exceptional situation. * @throws InterruptedException if the calling thread was interrupted. */ - private static IQ receiveSessionInitiateAction(JingleSession session, Jingle inJingle) - throws SmackException, InterruptedException { + + private IQ receiveSessionInitiateAction(JingleSession session, Jingle inJingle) throws SmackException, InterruptedException { IQ response; boolean shouldAck = true; @@ -208,7 +208,7 @@ public class JingleSessionStateUnknown extends JingleSessionState { /** * Receive and process the action. */ - private static IQ receiveSessionTerminateAction(JingleSession session, Jingle jingle) { + private IQ receiveSessionTerminateAction(JingleSession session, Jingle jingle) { // According to XEP-166 the only thing we can do is ack. IQ response = session.createAck(jingle); diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/media/MediaNegotiator.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/media/MediaNegotiator.java index 67291fe9a..eb461208c 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/media/MediaNegotiator.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/media/MediaNegotiator.java @@ -183,7 +183,7 @@ public class MediaNegotiator extends JingleNegotiator { /** * Process the ACK of our list of codecs (our offer). */ - private static Jingle receiveResult(IQ iq) throws XMPPException { + private Jingle receiveResult(IQ iq) throws XMPPException { Jingle response = null; // if (!remoteAudioPts.isEmpty()) { diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/JMFInit.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/JMFInit.java index ed86a85de..64199a974 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/JMFInit.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/JMFInit.java @@ -58,7 +58,7 @@ public class JMFInit extends Frame implements Runnable { } catch (Exception e) { - LOGGER.fine("Failed to commit to JMFRegistry!"); + message("Failed to commit to JMFRegistry!"); } Thread detectThread = new Thread(this); @@ -89,28 +89,28 @@ public class JMFInit extends Frame implements Runnable { if (args != null && args.length > 0) { tempDir = args[0]; - LOGGER.fine("Setting cache directory to " + tempDir); + message("Setting cache directory to " + tempDir); try { Registry.set("secure.cacheDir", tempDir); Registry.commit(); - LOGGER.fine("Updated registry"); + message("Updated registry"); } catch (Exception e) { - LOGGER.fine("Couldn't update registry!"); + message("Couldn't update registry!"); } } } @SuppressWarnings("LiteralClassName") - private static void detectCaptureDevices() { + private void detectCaptureDevices() { // check if JavaSound capture is available - LOGGER.fine("Looking for Audio capturer"); + message("Looking for Audio capturer"); Class dsauto; try { dsauto = Class.forName("DirectSoundAuto"); dsauto.getConstructor().newInstance(); - LOGGER.fine("Finished detecting DirectSound capturer"); + message("Finished detecting DirectSound capturer"); } catch (ThreadDeath td) { throw td; @@ -123,13 +123,13 @@ public class JMFInit extends Frame implements Runnable { try { jsauto = Class.forName("JavaSoundAuto"); jsauto.getConstructor().newInstance(); - LOGGER.fine("Finished detecting javasound capturer"); + message("Finished detecting javasound capturer"); } catch (ThreadDeath td) { throw td; } catch (Throwable t) { - LOGGER.fine("JavaSound capturer detection failed!"); + message("JavaSound capturer detection failed!"); } /* @@ -182,7 +182,7 @@ public class JMFInit extends Frame implements Runnable { */ } - private static void detectDirectAudio() { + private void detectDirectAudio() { Class cls; int plType = PlugInManager.RENDERER; String dar = "com.sun.media.renderer.audio.DirectAudioRenderer"; @@ -229,7 +229,7 @@ public class JMFInit extends Frame implements Runnable { } } - private static void detectS8DirectAudio() { + private void detectS8DirectAudio() { Class cls; int plType = PlugInManager.RENDERER; String dar = "com.sun.media.renderer.audio.DirectAudioRenderer"; @@ -273,6 +273,10 @@ public class JMFInit extends Frame implements Runnable { } } + private void message(String mesg) { + LOGGER.fine(mesg); + } + public static void start(boolean visible) { new JMFInit(null, visible); } diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/jmf/AudioChannel.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/jmf/AudioChannel.java index f91263337..4d16933d0 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/jmf/AudioChannel.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/jmf/AudioChannel.java @@ -318,7 +318,7 @@ public class AudioChannel { * @return the best stanza size * @throws IllegalArgumentException if an illegal argument was given. */ - private static int getPacketSize(Format codecFormat, int milliseconds) throws IllegalArgumentException { + private int getPacketSize(Format codecFormat, int milliseconds) throws IllegalArgumentException { String encoding = codecFormat.getEncoding(); if (encoding.equalsIgnoreCase(AudioFormat.GSM) || encoding.equalsIgnoreCase(AudioFormat.GSM_RTP)) { diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUNResolver.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUNResolver.java index 0501621d4..dd68939c0 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUNResolver.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/nat/STUNResolver.java @@ -252,7 +252,7 @@ public class STUNResolver extends TransportResolver { * * @return the best STUN server that can be used. */ - private static STUNService bestSTUNServer(ArrayList listServers) { + private STUNService bestSTUNServer(ArrayList listServers) { if (listServers.isEmpty()) { return null; } else { diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/packet/Jingle.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/packet/Jingle.java index d904f0d34..cfb08d374 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/packet/Jingle.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/packet/Jingle.java @@ -182,6 +182,25 @@ public class Jingle extends IQ { return sid; } + /** + * Returns the XML element name of the extension sub-packet root element. + * Always returns "jingle" + * + * @return the XML element name of the stanza extension. + */ + public static String getElementName() { + return NODENAME; + } + + /** + * Returns the XML namespace of the extension sub-packet root element. + * + * @return the XML namespace of the stanza extension. + */ + public static String getNamespace() { + return NAMESPACE; + } + /** * Jingle content info. * diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/provider/JingleProvider.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/provider/JingleProvider.java index f717d7303..e78457342 100644 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/provider/JingleProvider.java +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/provider/JingleProvider.java @@ -120,7 +120,7 @@ public class JingleProvider extends IQProvider { } } else if (eventType == XmlPullParser.Event.END_ELEMENT) { - if (parser.getName().equals(Jingle.NODENAME)) { + if (parser.getName().equals(Jingle.getElementName())) { done = true; } } diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/package-info.java deleted file mode 120000 index f0646658f..000000000 --- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../smack-extensions/src/main/java/org/jivesoftware/smackx/package-info.java \ No newline at end of file diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/package-info.java new file mode 100644 index 000000000..01e4ee051 --- /dev/null +++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smackx; diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/package-info.java deleted file mode 120000 index f0646658f..000000000 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../smack-extensions/src/main/java/org/jivesoftware/smackx/package-info.java \ No newline at end of file diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/package-info.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/package-info.java new file mode 100644 index 000000000..01e4ee051 --- /dev/null +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * TODO describe me. + */ +package org.jivesoftware.smackx; diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/ext/history/AgentChatHistory.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/ext/history/AgentChatHistory.java index c624f894b..678402fb3 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/ext/history/AgentChatHistory.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/ext/history/AgentChatHistory.java @@ -115,8 +115,8 @@ public class AgentChatHistory extends IQ { return agentChatHistory; } - private static AgentChatSession parseChatSetting(XmlPullParser parser) - throws XmlPullParserException, IOException { + private AgentChatSession parseChatSetting(XmlPullParser parser) throws XmlPullParserException, IOException { + boolean done = false; Date date = null; long duration = 0; diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/AgentStatusRequest.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/AgentStatusRequest.java index 8161896ad..b52e61e99 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/AgentStatusRequest.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/AgentStatusRequest.java @@ -65,6 +65,14 @@ public class AgentStatusRequest extends IQ { return Collections.unmodifiableSet(agents); } + public String getElementName() { + return ELEMENT_NAME; + } + + public String getNamespace() { + return NAMESPACE; + } + @Override protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder buf) { buf.rightAngleBracket(); @@ -131,7 +139,7 @@ public class AgentStatusRequest extends IQ { return statusRequest; } - private static Item parseAgent(XmlPullParser parser) throws XmlPullParserException, IOException { + private Item parseAgent(XmlPullParser parser) throws XmlPullParserException, IOException { boolean done = false; EntityBareJid jid = ParserUtils.getBareJidAttribute(parser); diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/OccupantsInfo.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/OccupantsInfo.java index c60233339..bb10ed916 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/OccupantsInfo.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/OccupantsInfo.java @@ -154,8 +154,8 @@ public class OccupantsInfo extends IQ { return occupantsInfo; } - private static OccupantInfo parseOccupantInfo(XmlPullParser parser) - throws XmlPullParserException, IOException, SmackTextParseException { + private OccupantInfo parseOccupantInfo(XmlPullParser parser) throws XmlPullParserException, IOException, SmackTextParseException { + boolean done = false; String jid = null; String nickname = null; diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/TranscriptsProvider.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/TranscriptsProvider.java index 07c3c05ab..eb701ee68 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/TranscriptsProvider.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/TranscriptsProvider.java @@ -69,8 +69,8 @@ public class TranscriptsProvider extends IQProvider { return new Transcripts(userID, summaries); } - private static Transcripts.TranscriptSummary parseSummary(XmlPullParser parser) - throws IOException, XmlPullParserException { + private Transcripts.TranscriptSummary parseSummary(XmlPullParser parser) throws IOException, + XmlPullParserException { String sessionID = parser.getAttributeValue("", "sessionID"); Date joinTime = null; Date leftTime = null; @@ -108,8 +108,7 @@ public class TranscriptsProvider extends IQProvider { return new Transcripts.TranscriptSummary(sessionID, joinTime, leftTime, agents); } - private static List parseAgents(XmlPullParser parser) - throws IOException, XmlPullParserException { + private List parseAgents(XmlPullParser parser) throws IOException, XmlPullParserException { List agents = new ArrayList<>(); String agentJID = null; Date joinTime = null; diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoElement.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoElement.java index 6d28da919..877436214 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoElement.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoElement.java @@ -76,7 +76,7 @@ public abstract class OmemoElement implements ExtensionElement { public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { XmlStringBuilder sb = new XmlStringBuilder(this, enclosingNamespace).rightAngleBracket(); - sb.append(header); + sb.element(header); if (payload != null) { sb.openElement(ATTR_PAYLOAD).append(Base64.encodeToString(payload)).closeElement(ATTR_PAYLOAD); diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoHeaderElement.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoHeaderElement.java index a0fa6f5f8..8e8a07c09 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoHeaderElement.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoHeaderElement.java @@ -19,22 +19,17 @@ package org.jivesoftware.smackx.omemo.element; import java.util.ArrayList; import java.util.List; -import org.jivesoftware.smack.packet.FullyQualifiedElement; -import org.jivesoftware.smack.packet.XmlEnvironment; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smack.util.stringencoder.Base64; -import org.jivesoftware.smackx.omemo.util.OmemoConstants; - /** * Header element of the message. The header contains information about the sender and the encrypted keys for * the recipients, as well as the iv element for AES. */ -public abstract class OmemoHeaderElement implements FullyQualifiedElement { - - public static final String ELEMENT = "header"; - public static final String NAMESPACE = OmemoConstants.OMEMO_NAMESPACE_V_AXOLOTL; +public abstract class OmemoHeaderElement implements NamedElement { + public static final String NAME_HEADER = "header"; public static final String ATTR_SID = "sid"; public static final String ATTR_IV = "iv"; @@ -67,21 +62,16 @@ public abstract class OmemoHeaderElement implements FullyQualifiedElement { @Override public String getElementName() { - return ELEMENT; + return NAME_HEADER; } @Override - public String getNamespace() { - return NAMESPACE; - } - - @Override - public XmlStringBuilder toXML(XmlEnvironment enclosingXmlEnvironment) { - XmlStringBuilder sb = new XmlStringBuilder(this, enclosingXmlEnvironment); + public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder sb = new XmlStringBuilder(this); sb.attribute(ATTR_SID, getSid()).rightAngleBracket(); for (OmemoKeyElement k : getKeys()) { - sb.append(k); + sb.element(k); } sb.openElement(ATTR_IV).append(Base64.encodeToString(getIv())).closeElement(ATTR_IV); diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoKeyElement.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoKeyElement.java index fc55c3300..75c0327d8 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoKeyElement.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoKeyElement.java @@ -16,21 +16,16 @@ */ package org.jivesoftware.smackx.omemo.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; -import org.jivesoftware.smack.packet.XmlEnvironment; +import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smack.util.stringencoder.Base64; -import org.jivesoftware.smackx.omemo.util.OmemoConstants; - /** * Small class to collect key (byte[]), its id and whether its a preKey or not. */ -public class OmemoKeyElement implements FullyQualifiedElement { - - public static final String ELEMENT = "key"; - public static final String NAMESPACE = OmemoConstants.OMEMO_NAMESPACE_V_AXOLOTL; +public class OmemoKeyElement implements NamedElement { + public static final String NAME_KEY = "key"; public static final String ATTR_RID = "rid"; public static final String ATTR_PREKEY = "prekey"; @@ -39,7 +34,9 @@ public class OmemoKeyElement implements FullyQualifiedElement { private final boolean preKey; public OmemoKeyElement(byte[] data, int id) { - this(data, id, false); + this.data = data; + this.id = id; + this.preKey = false; } public OmemoKeyElement(byte[] data, int id, boolean preKey) { @@ -67,17 +64,12 @@ public class OmemoKeyElement implements FullyQualifiedElement { @Override public String getElementName() { - return ELEMENT; + return NAME_KEY; } @Override - public String getNamespace() { - return NAMESPACE; - } - - @Override - public XmlStringBuilder toXML(XmlEnvironment enclosingXmlEnvironment) { - XmlStringBuilder sb = new XmlStringBuilder(this, enclosingXmlEnvironment); + public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { + XmlStringBuilder sb = new XmlStringBuilder(this); if (isPreKey()) { sb.attribute(ATTR_PREKEY, true); diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/provider/OmemoVAxolotlProvider.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/provider/OmemoVAxolotlProvider.java index cd6ae16f7..1fa0d05ea 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/provider/OmemoVAxolotlProvider.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/provider/OmemoVAxolotlProvider.java @@ -54,14 +54,14 @@ public class OmemoVAxolotlProvider extends ExtensionElementProvider { - public static final PubkeyElementProvider INSTANCE = new PubkeyElementProvider(); + public static final PubkeyElementProvider TEST_INSTANCE = new PubkeyElementProvider(); @Override public PubkeyElement parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackTextParseException { @@ -45,9 +46,11 @@ public class PubkeyElementProvider extends ExtensionElementProvider" + - base64EncodedOpenPgpPublicKey + + "BASE64_OPENPGP_PUBLIC_KEY" + "" + ""; Date date = XmppDateTime.parseXEP0082Date("2018-01-21T10:46:21.000+00:00"); - PubkeyElement element = new PubkeyElement(new PubkeyElement.PubkeyDataElement(base64EncodedOpenPgpPublicKey), date); + byte[] key = "BASE64_OPENPGP_PUBLIC_KEY".getBytes(Charset.forName("UTF-8")); + PubkeyElement element = new PubkeyElement(new PubkeyElement.PubkeyDataElement(key), date); - assertXmlSimilar(pubkeyElement, element.toXML().toString()); + assertXmlSimilar(expected, element.toXML().toString()); - XmlPullParser parser = SmackTestUtil.getParserFor(pubkeyElement, parserKind); - PubkeyElement parsed = PubkeyElementProvider.INSTANCE.parse(parser); + XmlPullParser parser = TestUtils.getParser(expected); + PubkeyElement parsed = PubkeyElementProvider.TEST_INSTANCE.parse(parser); assertEquals(element.getDate(), parsed.getDate()); - assertEquals(element.getDataElement().getB64Data(), parsed.getDataElement().getB64Data()); + assertTrue(Arrays.equals(element.getDataElement().getB64Data(), parsed.getDataElement().getB64Data())); } } diff --git a/smack-resolver-dnsjava/build.gradle b/smack-resolver-dnsjava/build.gradle index 3649a2d58..9de83e1f5 100644 --- a/smack-resolver-dnsjava/build.gradle +++ b/smack-resolver-dnsjava/build.gradle @@ -4,6 +4,6 @@ Use dnsjava for DNS SRV lookups. For platforms that don't provide the javax.naming API (e.g. Android).""" dependencies { - compile project(':smack-core') + compile project(path: ':smack-core') compile 'dnsjava:dnsjava:[2.1,2.2)' } diff --git a/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/dns/package-info.java b/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/dns/package-info.java deleted file mode 120000 index a814e10da..000000000 --- a/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/dns/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/util/dns/package-info.java \ No newline at end of file diff --git a/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/dns/package-info.java b/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/dns/package-info.java new file mode 100644 index 000000000..4461efc1e --- /dev/null +++ b/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/dns/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Smacks DNS resolvers. + */ +package org.jivesoftware.smack.util.dns; diff --git a/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/package-info.java b/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/package-info.java deleted file mode 120000 index 6c269f201..000000000 --- a/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/util/package-info.java \ No newline at end of file diff --git a/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/package-info.java b/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/package-info.java new file mode 100644 index 000000000..41218a37d --- /dev/null +++ b/smack-resolver-dnsjava/src/main/java/org/jivesoftware/smack/util/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Smack util classes. + */ +package org.jivesoftware.smack.util; diff --git a/smack-resolver-javax/build.gradle b/smack-resolver-javax/build.gradle index 9e67daeee..c94e0e35b 100644 --- a/smack-resolver-javax/build.gradle +++ b/smack-resolver-javax/build.gradle @@ -4,5 +4,5 @@ Use javax.naming for DNS SRV lookups. The javax.naming API is availabe in JavaSE since Java7.""" dependencies { - compile project(':smack-core') + compile project(path: ':smack-core') } diff --git a/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/dns/package-info.java b/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/dns/package-info.java deleted file mode 120000 index a814e10da..000000000 --- a/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/dns/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/util/dns/package-info.java \ No newline at end of file diff --git a/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/dns/package-info.java b/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/dns/package-info.java new file mode 100644 index 000000000..4461efc1e --- /dev/null +++ b/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/dns/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Smacks DNS resolvers. + */ +package org.jivesoftware.smack.util.dns; diff --git a/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/package-info.java b/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/package-info.java deleted file mode 120000 index 6c269f201..000000000 --- a/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/util/package-info.java \ No newline at end of file diff --git a/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/package-info.java b/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/package-info.java new file mode 100644 index 000000000..41218a37d --- /dev/null +++ b/smack-resolver-javax/src/main/java/org/jivesoftware/smack/util/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Smack util classes. + */ +package org.jivesoftware.smack.util; diff --git a/smack-resolver-minidns/build.gradle b/smack-resolver-minidns/build.gradle index 834233289..627cb3f52 100644 --- a/smack-resolver-minidns/build.gradle +++ b/smack-resolver-minidns/build.gradle @@ -4,7 +4,7 @@ Use minidns for DNS SRV lookups. For platforms that don't provide the javax.naming API (e.g. Android).""" dependencies { - compile project(':smack-core') + compile project(path: ':smack-core') compile "org.minidns:minidns-hla:$miniDnsVersion" compile "org.jxmpp:jxmpp-util-cache:$jxmppVersion" } diff --git a/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/package-info.java b/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/package-info.java deleted file mode 120000 index a814e10da..000000000 --- a/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/util/dns/package-info.java \ No newline at end of file diff --git a/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/package-info.java b/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/package-info.java new file mode 100644 index 000000000..4461efc1e --- /dev/null +++ b/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/dns/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Smacks DNS resolvers. + */ +package org.jivesoftware.smack.util.dns; diff --git a/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/package-info.java b/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/package-info.java deleted file mode 120000 index 6c269f201..000000000 --- a/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/package-info.java +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../smack-core/src/main/java/org/jivesoftware/smack/util/package-info.java \ No newline at end of file diff --git a/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/package-info.java b/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/package-info.java new file mode 100644 index 000000000..41218a37d --- /dev/null +++ b/smack-resolver-minidns/src/main/java/org/jivesoftware/smack/util/package-info.java @@ -0,0 +1,21 @@ +/** + * + * Copyright 2015 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. + */ + +/** + * Smack util classes. + */ +package org.jivesoftware.smack.util; diff --git a/smack-sasl-javax/build.gradle b/smack-sasl-javax/build.gradle index da4a818cc..af9d5af8c 100644 --- a/smack-sasl-javax/build.gradle +++ b/smack-sasl-javax/build.gradle @@ -3,7 +3,7 @@ SASL with javax.security.sasl Use javax.security.sasl for SASL.""" dependencies { - compile project(':smack-core') + compile project(path: ':smack-core') testCompile project(path: ":smack-core", configuration: "testRuntime") testCompile project(path: ":smack-core", configuration: "archives") } diff --git a/smack-sasl-provided/build.gradle b/smack-sasl-provided/build.gradle index d02277ba8..4e284fd24 100644 --- a/smack-sasl-provided/build.gradle +++ b/smack-sasl-provided/build.gradle @@ -3,7 +3,7 @@ SASL with Smack provided code Use Smack provided code for SASL.""" dependencies { - compile project(':smack-core') + compile project(path: ':smack-core') testCompile project(path: ":smack-core", configuration: "testRuntime") testCompile project(path: ":smack-core", configuration: "archives") } diff --git a/smack-tcp/src/test/java/org/jivesoftware/smack/sm/provider/ParseStreamManagementTest.java b/smack-tcp/src/test/java/org/jivesoftware/smack/sm/provider/ParseStreamManagementTest.java index f5329dbb5..e984dd7f2 100644 --- a/smack-tcp/src/test/java/org/jivesoftware/smack/sm/provider/ParseStreamManagementTest.java +++ b/smack-tcp/src/test/java/org/jivesoftware/smack/sm/provider/ParseStreamManagementTest.java @@ -122,7 +122,7 @@ public class ParseStreamManagementTest { StanzaErrorTextElement textElement = textElements.get(0); assertEquals("Previous session timed out", textElement.getText()); - assertEquals("en", textElement.getLanguage()); + assertEquals("en", textElement.getLang()); } @Test