diff --git a/config/checkstyle.xml b/config/checkstyle.xml
index b83128a03..08703c562 100644
--- a/config/checkstyle.xml
+++ b/config/checkstyle.xml
@@ -104,5 +104,18 @@
+
+
+
+
+
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java
index 3f93a7073..6f6237d12 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java
@@ -248,11 +248,13 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
*/
private final ExecutorService cachedExecutorService = Executors.newCachedThreadPool(
// @formatter:off
+ // CHECKSTYLE:OFF
new SmackExecutorThreadFactory( // threadFactory
this,
"Cached Executor"
)
// @formatter:on
+ // CHECKSTYLE:ON
);
/**
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/SmackConfiguration.java b/smack-core/src/main/java/org/jivesoftware/smack/SmackConfiguration.java
index 8d902c159..3d9d36d1e 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/SmackConfiguration.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/SmackConfiguration.java
@@ -149,7 +149,7 @@ public final class SmackConfiguration {
* @param mech the SASL mechanism to be added
*/
public static void addSaslMech(String mech) {
- if(! defaultMechs.contains(mech) ) {
+ if(!defaultMechs.contains(mech)) {
defaultMechs.add(mech);
}
}
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/XMPPException.java b/smack-core/src/main/java/org/jivesoftware/smack/XMPPException.java
index 6ee7d1658..99f3fb4b5 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/XMPPException.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/XMPPException.java
@@ -17,9 +17,11 @@
package org.jivesoftware.smack;
+import org.jivesoftware.smack.packet.Nonza;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.packet.StreamError;
import org.jivesoftware.smack.packet.XMPPError;
+import org.jxmpp.jid.Jid;
/**
* A generic exception that is thrown when an error occurs performing an
@@ -72,48 +74,28 @@ public abstract class XMPPException extends Exception {
*/
private static final long serialVersionUID = 212790389529249604L;
private final XMPPError error;
+ private final Stanza stanza;
+ /**
+ * Creates a new XMPPErrorException with the given builder.
+ *
+ * @param xmppErrorBuilder
+ * @deprecated Use {@link #XMPPErrorException(Stanza, XMPPError)} instead.
+ */
+ @Deprecated
public XMPPErrorException(XMPPError.Builder xmppErrorBuilder) {
- this(xmppErrorBuilder.build());
+ this(null, xmppErrorBuilder.build());
}
/**
- * Creates a new XMPPException with the XMPPError that was the root case of the exception.
+ * Creates a new XMPPErrorException with the XMPPError that was the root case of the exception.
*
* @param error the root cause of the exception.
*/
- public XMPPErrorException(XMPPError error) {
+ public XMPPErrorException(Stanza stanza, XMPPError error) {
super();
this.error = error;
- }
-
- /**
- * Creates a new XMPPException with a description of the exception, an XMPPError, and the
- * Throwable that was the root cause of the exception.
- *
- * @param message a description of the exception.
- * @param error the root cause of the exception.
- * @param wrappedThrowable the root cause of the exception.
- * @deprecated use {@link #XMPPException.XMPPErrorException(XMPPError)} instead.
- */
- @Deprecated
- public XMPPErrorException(String message, XMPPError error, Throwable wrappedThrowable) {
- super(message, wrappedThrowable);
- this.error = error;
- }
-
- /**
- * Creates a new XMPPException with a description of the exception and the XMPPException
- * that was the root cause of the exception.
- *
- * @param message a description of the exception.
- * @param error the root cause of the exception.
- * @deprecated use {@link #XMPPException.XMPPErrorException(XMPPError)} instead.
- */
- @Deprecated
- public XMPPErrorException(String message, XMPPError error) {
- super(message);
- this.error = error;
+ this.stanza = stanza;
}
/**
@@ -128,23 +110,53 @@ public abstract class XMPPException extends Exception {
@Override
public String getMessage() {
- String superMessage = super.getMessage();
- if (superMessage != null) {
- return superMessage;
- }
- else {
- return error.toString();
+ StringBuilder sb = new StringBuilder();
+
+ if (stanza != null) {
+ Jid from = stanza.getFrom();
+ if (from != null) {
+ sb.append("XMPP error reply received from " + from + ": ");
+ }
}
+
+ sb.append(error);
+
+ return sb.toString();
}
public static void ifHasErrorThenThrow(Stanza packet) throws XMPPErrorException {
XMPPError xmppError = packet.getError();
if (xmppError != null) {
- throw new XMPPErrorException(xmppError);
+ throw new XMPPErrorException(packet, xmppError);
}
}
}
+ public static class FailedNonzaException extends XMPPException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private final XMPPError.Condition condition;
+
+ private final Nonza nonza;
+
+ public FailedNonzaException(Nonza nonza, XMPPError.Condition condition) {
+ this.condition = condition;
+ this.nonza = nonza;
+ }
+
+ public XMPPError.Condition getCondition() {
+ return condition;
+ }
+
+ public Nonza getNonza() {
+ return nonza;
+ }
+ }
+
public static class StreamErrorException extends XMPPException {
/**
*
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/UnparsedIQ.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/UnparsedIQ.java
index 8aa42f7f4..e363d2e30 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/packet/UnparsedIQ.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/UnparsedIQ.java
@@ -1,6 +1,6 @@
/**
*
- * Copyright © 2015 Florian Schmaus
+ * Copyright © 2015-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.
@@ -34,6 +34,7 @@ public class UnparsedIQ extends IQ {
@Override
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
- throw new UnsupportedOperationException();
+ xml.escape(content);
+ return xml;
}
}
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/proxy/ProxyInfo.java b/smack-core/src/main/java/org/jivesoftware/smack/proxy/ProxyInfo.java
index 1807dbf05..c0e9c25af 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/proxy/ProxyInfo.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/proxy/ProxyInfo.java
@@ -39,7 +39,7 @@ public class ProxyInfo
private ProxyType proxyType;
private final ProxySocketConnection proxySocketConnection;
- public ProxyInfo( ProxyType pType, String pHost, int pPort, String pUser,
+ public ProxyInfo(ProxyType pType, String pHost, int pPort, String pUser,
String pPass)
{
this.proxyType = pType;
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 53d0428eb..a2e69cd79 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
@@ -983,9 +983,9 @@ public class PacketParserUtils {
private static String getLanguageAttribute(XmlPullParser parser) {
// CHECKSTYLE:OFF
for (int i = 0; i < parser.getAttributeCount(); i++) {
- // CHECKSTYLE:ON
String attributeName = parser.getAttributeName(i);
if ( "xml:lang".equals(attributeName) ||
+ // CHECKSTYLE:ON
("lang".equals(attributeName) &&
"xml".equals(parser.getAttributePrefix(i)))) {
// CHECKSTYLE:OFF
diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/StringUtils.java b/smack-core/src/main/java/org/jivesoftware/smack/util/StringUtils.java
index d0f9267f3..e61b15650 100644
--- a/smack-core/src/main/java/org/jivesoftware/smack/util/StringUtils.java
+++ b/smack-core/src/main/java/org/jivesoftware/smack/util/StringUtils.java
@@ -249,7 +249,7 @@ public class StringUtils {
*/
public static String encodeHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
- for ( int j = 0; j < bytes.length; j++ ) {
+ for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = HEX_CHARS[v >>> 4];
hexChars[j * 2 + 1] = HEX_CHARS[v & 0x0F];
diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/Thing.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/Thing.java
index f68a7ebd4..6c15fa692 100644
--- a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/Thing.java
+++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/Thing.java
@@ -83,7 +83,7 @@ public final class Thing {
public String toString() {
if (toStringCache == null) {
StringBuilder sb = new StringBuilder();
- sb.append( "Thing " + nodeInfo + " [");
+ sb.append("Thing " + nodeInfo + " [");
Iterator it = metaTags.values().iterator();
while (it.hasNext()) {
Tag tag = it.next();
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/blocking/BlockingCommandManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/blocking/BlockingCommandManager.java
index 6ee6bdce7..55044394d 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/blocking/BlockingCommandManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/blocking/BlockingCommandManager.java
@@ -169,7 +169,7 @@ public final class BlockingCommandManager extends Manager {
BlockListIQ blockListIQ = new BlockListIQ();
BlockListIQ blockListIQResult = connection().createPacketCollectorAndSend(blockListIQ).nextResultOrThrow();
- blockListCached = blockListIQResult.getJids();
+ blockListCached = blockListIQResult.getBlockedJidsCopy();
return Collections.unmodifiableList(blockListCached);
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/blocking/element/BlockListIQ.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/blocking/element/BlockListIQ.java
index c24da5718..60267d3fb 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/blocking/element/BlockListIQ.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/blocking/element/BlockListIQ.java
@@ -16,6 +16,7 @@
*/
package org.jivesoftware.smackx.blocking.element;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -52,9 +53,10 @@ public class BlockListIQ extends IQ {
public BlockListIQ(List jids) {
super(ELEMENT, NAMESPACE);
if (jids == null) {
- jids = Collections.emptyList();
+ this.jids = Collections.emptyList();
+ } else {
+ this.jids = Collections.unmodifiableList(jids);
}
- this.jids = jids;
}
/**
@@ -65,14 +67,23 @@ public class BlockListIQ extends IQ {
}
/**
- * Get the JIDs.
+ * Get the JIDs as unmodifiable list.
*
- * @return the JIDs
+ * @return the blocked JIDs
*/
- public List getJids() {
+ public List getBlockedJids() {
return jids;
}
+ /**
+ * Get a copy of the blocked list JIDs. This copy is modifiable.
+ *
+ * @return the blocked JIDs
+ */
+ public List getBlockedJidsCopy() {
+ return new ArrayList<>(getBlockedJids());
+ }
+
@Override
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
if (jids.isEmpty()) {
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamRequest.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamRequest.java
index 0da45e27b..18f1bbac7 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamRequest.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/Socks5BytestreamRequest.java
@@ -280,7 +280,7 @@ public class Socks5BytestreamRequest implements BytestreamRequest {
XMPPError.Builder error = XMPPError.from(XMPPError.Condition.item_not_found, errorMessage);
IQ errorIQ = IQ.createErrorResponse(this.bytestreamRequest, error);
this.manager.getConnection().sendStanza(errorIQ);
- throw new XMPPErrorException(error);
+ throw new XMPPErrorException(errorIQ, error.build());
}
/**
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommandManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommandManager.java
index f5c1c8249..b0e9902a1 100755
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommandManager.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommandManager.java
@@ -615,6 +615,7 @@ public final class AdHocCommandManager extends Manager {
* @return the command instance to execute.
* @throws XMPPErrorException if there is problem creating the new instance.
*/
+ @SuppressWarnings("deprecation")
private LocalCommand newInstanceOfCmd(String commandNode, String sessionID) throws XMPPErrorException
{
AdHocCommandInfo commandInfo = commands.get(commandNode);
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/provider/AdHocCommandDataProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/provider/AdHocCommandDataProvider.java
index ff0a81608..72b5389d3 100755
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/provider/AdHocCommandDataProvider.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/provider/AdHocCommandDataProvider.java
@@ -95,8 +95,14 @@ public class AdHocCommandDataProvider extends IQProvider {
adHocCommandData.setForm(dataFormProvider.parse(parser));
}
else if (parser.getName().equals("note")) {
- AdHocCommandNote.Type type = AdHocCommandNote.Type.valueOf(
- parser.getAttributeValue("", "type"));
+ String typeString = parser.getAttributeValue("", "type");
+ AdHocCommandNote.Type type;
+ if (typeString != null) {
+ type = AdHocCommandNote.Type.valueOf(typeString);
+ } else {
+ // Type is optional and 'info' if not present.
+ type = AdHocCommandNote.Type.info;
+ }
String value = parser.nextText();
adHocCommandData.addNote(new AdHocCommandNote(type, value));
}
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java
index 77db7ed49..60292e69c 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java
@@ -327,7 +327,7 @@ public final class FileTransferNegotiator extends Manager {
}
else {
- throw new XMPPErrorException(iqResponse.getError());
+ throw new XMPPErrorException(iqResponse, iqResponse.getError());
}
}
else {
diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/ValidationConsistencyException.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/ValidationConsistencyException.java
index 90398f75f..e321901c8 100644
--- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/ValidationConsistencyException.java
+++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/ValidationConsistencyException.java
@@ -36,6 +36,6 @@ public class ValidationConsistencyException extends IllegalArgumentException {
* @param message
*/
public ValidationConsistencyException(String message) {
- super( message);
+ super(message);
}
}
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/blocking/GetBlockingListTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/blocking/GetBlockingListTest.java
index a14381ccf..877661eb7 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/blocking/GetBlockingListTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/blocking/GetBlockingListTest.java
@@ -47,13 +47,13 @@ public class GetBlockingListTest {
public void checkBlockListIQ() throws Exception {
IQ iq = (IQ) PacketParserUtils.parseStanza(blockListIQExample);
BlockListIQ blockListIQ = (BlockListIQ) iq;
- Assert.assertEquals(2, blockListIQ.getJids().size());
- Assert.assertEquals(JidCreate.from("romeo@montague.net"), blockListIQ.getJids().get(0));
- Assert.assertEquals(JidCreate.from("iago@shakespeare.lit"), blockListIQ.getJids().get(1));
+ Assert.assertEquals(2, blockListIQ.getBlockedJids().size());
+ Assert.assertEquals(JidCreate.from("romeo@montague.net"), blockListIQ.getBlockedJids().get(0));
+ Assert.assertEquals(JidCreate.from("iago@shakespeare.lit"), blockListIQ.getBlockedJids().get(1));
IQ iq2 = (IQ) PacketParserUtils.parseStanza(emptyBlockListIQExample);
BlockListIQ emptyBlockListIQ = (BlockListIQ) iq2;
- Assert.assertEquals(0, emptyBlockListIQ.getJids().size());
+ Assert.assertEquals(0, emptyBlockListIQ.getBlockedJids().size());
}
}
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/packet/DataFormTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/packet/DataFormTest.java
index ef0003bb1..d5ecc15fd 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/packet/DataFormTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/packet/DataFormTest.java
@@ -55,7 +55,7 @@ public class DataFormTest {
FormField field = new FormField("testField1");
df.addField(field);
- assertNotNull( df.toXML());
+ assertNotNull(df.toXML());
String output = df.toXML().toString();
assertEquals(TEST_OUTPUT_1, output);
@@ -65,10 +65,10 @@ public class DataFormTest {
assertNotNull(df);
assertNotNull(df.getFields());
- assertEquals(1 , df.getFields().size() );
+ assertEquals(1 , df.getFields().size());
assertEquals(1 , df.getInstructions().size());
- assertNotNull( df.toXML());
+ assertNotNull(df.toXML());
output = df.toXML().toString();
assertEquals(TEST_OUTPUT_1, output);
}
@@ -93,7 +93,7 @@ public class DataFormTest {
df.addExtensionElement(layout);
- assertNotNull( df.toXML());
+ assertNotNull(df.toXML());
String output = df.toXML().toString();
assertEquals(TEST_OUTPUT_2, output);
@@ -103,14 +103,14 @@ public class DataFormTest {
assertNotNull(df);
assertNotNull(df.getExtensionElements());
- assertEquals(1 , df.getExtensionElements().size() );
+ assertEquals(1 , df.getExtensionElements().size());
Element element = df.getExtensionElements().get(0);
assertNotNull(element);
layout = (DataLayout) element;
assertEquals(3 , layout.getPageLayout().size());
- assertNotNull( df.toXML());
+ assertNotNull(df.toXML());
output = df.toXML().toString();
assertEquals(TEST_OUTPUT_2, output);
}
@@ -127,7 +127,7 @@ public class DataFormTest {
ValidateElement dv = new RangeValidateElement("xs:integer","1111", "9999");
field.setValidateElement(dv);
- assertNotNull( df.toXML());
+ assertNotNull(df.toXML());
String output = df.toXML().toString();
assertEquals(TEST_OUTPUT_3, output);
@@ -137,14 +137,14 @@ public class DataFormTest {
assertNotNull(df);
assertNotNull(df.getFields());
- assertEquals(1 , df.getFields().size() );
+ assertEquals(1 , df.getFields().size());
Element element = df.getFields().get(0).getValidateElement();
assertNotNull(element);
dv = (ValidateElement) element;
assertEquals("xs:integer" , dv.getDatatype());
- assertNotNull( df.toXML());
+ assertNotNull(df.toXML());
output = df.toXML().toString();
assertEquals(TEST_OUTPUT_3, output);
}
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdatalayout/packet/DataLayoutTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdatalayout/packet/DataLayoutTest.java
index 10787d66d..36959b1ec 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdatalayout/packet/DataLayoutTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdatalayout/packet/DataLayoutTest.java
@@ -76,9 +76,9 @@ public class DataLayoutTest {
Section section = new Section("section Label");
section.getSectionLayout().add(new Text("SectionText"));
layout.getPageLayout().add(section);
- layout.getPageLayout().add(new Text( "PageText"));
+ layout.getPageLayout().add(new Text("PageText"));
- assertNotNull( layout.toXML());
+ assertNotNull(layout.toXML());
String output = layout.toXML().toString();
assertEquals(TEST_OUTPUT_2, output);
@@ -89,7 +89,7 @@ public class DataLayoutTest {
assertEquals(3 , layout.getPageLayout().size());
assertEquals("Label", layout.getLabel());
- assertNotNull( layout.toXML());
+ assertNotNull(layout.toXML());
output = layout.toXML().toString();
assertEquals(TEST_OUTPUT_2, output);
}
@@ -101,18 +101,18 @@ public class DataLayoutTest {
Fieldref reffield = new Fieldref("testField1");
layout.getPageLayout().add(reffield);
Section section = new Section("section Label - & \u00E9 \u00E1 ");
- section.getSectionLayout().add(new Text( "SectionText - & \u00E9 \u00E1 "));
+ section.getSectionLayout().add(new Text("SectionText - & \u00E9 \u00E1 "));
layout.getPageLayout().add(section);
- layout.getPageLayout().add(new Text( "PageText - & \u00E9 \u00E1 "));
+ layout.getPageLayout().add(new Text("PageText - & \u00E9 \u00E1 "));
section = new Section("Number of Persons by
Nationality and Status");
section.getSectionLayout().add(new Reportedref());
layout.getPageLayout().add(section);
- layout.getPageLayout().add(new Text( "DO NOT DELAY
supply further information"));
+ layout.getPageLayout().add(new Text("DO NOT DELAY
supply further information"));
- assertNotNull( layout.toXML());
+ assertNotNull(layout.toXML());
String output = layout.toXML().toString();
assertEquals(TEST_OUTPUT_SPECIAL, output);
@@ -132,7 +132,7 @@ public class DataLayoutTest {
assertEquals("DO NOT DELAY
supply further information", text.getText());
- assertNotNull( layout.toXML());
+ assertNotNull(layout.toXML());
output = layout.toXML().toString();
assertEquals(TEST_OUTPUT_SPECIAL, output);
}
@@ -146,7 +146,7 @@ public class DataLayoutTest {
parser.next();
DataForm form = pr.parse(parser);
- assertNotNull( form);
+ assertNotNull(form);
assertEquals(1 , form.getExtensionElements().size());
DataLayout layout = (DataLayout) form.getExtensionElements().get(0);
@@ -163,7 +163,7 @@ public class DataLayoutTest {
assertEquals("DO NOT DELAY
supply further information", text.getText());
- assertNotNull( layout.toXML());
+ assertNotNull(layout.toXML());
String output = layout.toXML().toString();
assertEquals(TEST_OUTPUT_SPECIAL, output);
}
diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdatavalidation/provider/DataValidationTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdatavalidation/provider/DataValidationTest.java
index c9224c2da..915cbd650 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdatavalidation/provider/DataValidationTest.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdatavalidation/provider/DataValidationTest.java
@@ -48,7 +48,7 @@ public class DataValidationTest {
ValidateElement dv = new BasicValidateElement(null);
- assertNotNull( dv.toXML());
+ assertNotNull(dv.toXML());
String output = dv.toXML().toString();
assertEquals(TEST_OUTPUT_MIN, output);
@@ -58,9 +58,9 @@ public class DataValidationTest {
assertNotNull(dv);
assertEquals("xs:string", dv.getDatatype());
- assertTrue( dv instanceof BasicValidateElement);
+ assertTrue(dv instanceof BasicValidateElement);
- assertNotNull( dv.toXML());
+ assertNotNull(dv.toXML());
output = dv.toXML().toString();
assertEquals(TEST_OUTPUT_MIN, output);
}
@@ -71,9 +71,9 @@ public class DataValidationTest {
ValidateElement dv = new RangeValidateElement("xs:string", "min-val", "max-val");
ListRange listRange = new ListRange(111L, 999L);
- dv.setListRange(listRange );
+ dv.setListRange(listRange);
- assertNotNull( dv.toXML());
+ assertNotNull(dv.toXML());
String output = dv.toXML().toString();
assertEquals(TEST_OUTPUT_RANGE, output);
@@ -83,7 +83,7 @@ public class DataValidationTest {
assertNotNull(dv);
assertEquals("xs:string", dv.getDatatype());
- assertTrue(dv instanceof RangeValidateElement );
+ assertTrue(dv instanceof RangeValidateElement);
RangeValidateElement rdv = (RangeValidateElement) dv;
assertEquals("min-val", rdv.getMin());
assertEquals("max-val", rdv.getMax());
@@ -92,7 +92,7 @@ public class DataValidationTest {
assertEquals(999, rdv.getListRange().getMax().intValue());
- assertNotNull( dv.toXML());
+ assertNotNull(dv.toXML());
output = dv.toXML().toString();
assertEquals(TEST_OUTPUT_RANGE, output);
}
@@ -102,7 +102,7 @@ public class DataValidationTest {
ValidateElement dv = new RangeValidateElement(null, null, null);
- assertNotNull( dv.toXML());
+ assertNotNull(dv.toXML());
String output = dv.toXML().toString();
assertEquals(TEST_OUTPUT_RANGE2, output);
@@ -112,12 +112,12 @@ public class DataValidationTest {
assertNotNull(dv);
assertEquals("xs:string", dv.getDatatype());
- assertTrue(dv instanceof RangeValidateElement );
+ assertTrue(dv instanceof RangeValidateElement);
RangeValidateElement rdv = (RangeValidateElement) dv;
assertEquals(null, rdv.getMin());
assertEquals(null, rdv.getMax());
- assertNotNull( rdv.toXML());
+ assertNotNull(rdv.toXML());
output = rdv.toXML().toString();
assertEquals(TEST_OUTPUT_RANGE2, output);
}
diff --git a/smack-extensions/src/test/java/org/jivesoftware/util/ConnectionUtils.java b/smack-extensions/src/test/java/org/jivesoftware/util/ConnectionUtils.java
index 1f120e03d..2010272ce 100644
--- a/smack-extensions/src/test/java/org/jivesoftware/util/ConnectionUtils.java
+++ b/smack-extensions/src/test/java/org/jivesoftware/util/ConnectionUtils.java
@@ -30,7 +30,6 @@ import org.jivesoftware.smack.XMPPException.XMPPErrorException;
import org.jivesoftware.smack.filter.StanzaFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Stanza;
-import org.jivesoftware.smack.packet.XMPPError;
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
import org.jxmpp.jid.DomainBareJid;
import org.jxmpp.jid.EntityFullJid;
@@ -113,8 +112,7 @@ public class ConnectionUtils {
public Stanza answer(InvocationOnMock invocation) throws Throwable {
Stanza packet = protocol.getResponses().poll();
if (packet == null) return packet;
- XMPPError xmppError = packet.getError();
- if (xmppError != null) throw new XMPPErrorException(xmppError);
+ XMPPErrorException.ifHasErrorThenThrow(packet);
return packet;
}
};
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 a9bd5810d..0dc36c41f 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
@@ -346,37 +346,62 @@ public class RosterPacket extends IQ {
* have a subscription to the user's presence; this is the default value, so if the
* subscription attribute is not included then the state is to be understood as "none".
*/
- none,
+ none('⊥'),
/**
* The user has a subscription to the contact's presence, but the contact does not have a
* subscription to the user's presence.
*/
- to,
+ to('←'),
/**
* The contact has a subscription to the user's presence, but the user does not have a
* subscription to the contact's presence.
*/
- from,
+ from('→'),
/**
* The user and the contact have subscriptions to each other's presence (also called a
* "mutual subscription").
*/
- both,
+ both('↔'),
/**
* The user wishes to stop receiving presence updates from the subscriber.
*/
- remove,
+ remove('⚡'),
;
+
+ private static final char ME = '●';
+
+ private final String symbol;
+
+ private ItemType(char secondSymbolChar) {
+ StringBuilder sb = new StringBuilder(2);
+ sb.append(ME).append(secondSymbolChar);
+ symbol = sb.toString();
+ }
+
public static ItemType fromString(String string) {
if (StringUtils.isNullOrEmpty(string)) {
return none;
}
return ItemType.valueOf(string.toLowerCase(Locale.US));
}
+
+ /**
+ * Get a String containing symbols representing the item type. The first symbol in the
+ * string is a big dot, representing the local entity. The second symbol represents the
+ * established subscription relation and is typically an arrow. The head(s) of the arrow
+ * point in the direction presence messages are sent. For example, if there is only a head
+ * pointing to the big dot, then the local user will receive presence information from the
+ * remote entity.
+ *
+ * @return the symbolic representation of this item type.
+ */
+ public String asSymbol() {
+ return symbol;
+ }
}
}
diff --git a/smack-integration-test/src/test/java/org/igniterealtime/smack/inttest/unittest/SmackIntegrationTestFrameworkUnitTest.java b/smack-integration-test/src/test/java/org/igniterealtime/smack/inttest/unittest/SmackIntegrationTestFrameworkUnitTest.java
index e44395c74..3bb1c357c 100644
--- a/smack-integration-test/src/test/java/org/igniterealtime/smack/inttest/unittest/SmackIntegrationTestFrameworkUnitTest.java
+++ b/smack-integration-test/src/test/java/org/igniterealtime/smack/inttest/unittest/SmackIntegrationTestFrameworkUnitTest.java
@@ -35,6 +35,7 @@ import org.igniterealtime.smack.inttest.SmackIntegrationTestFramework.TestRunRes
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.XMPPException.XMPPErrorException;
+import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.XMPPError;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -97,8 +98,9 @@ public class SmackIntegrationTestFrameworkUnitTest {
@SmackIntegrationTest
public void throwRuntimeExceptionTest() throws XMPPErrorException {
- throw new XMPPException.XMPPErrorException(
- XMPPError.from(XMPPError.Condition.bad_request, DESCRIPTIVE_TEXT));
+ Message message = new Message();
+ throw new XMPPException.XMPPErrorException(message,
+ XMPPError.from(XMPPError.Condition.bad_request, DESCRIPTIVE_TEXT).build());
}
}
diff --git a/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/java7/Base64.java b/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/java7/Base64.java
index 28385b7e6..f0744bbd1 100644
--- a/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/java7/Base64.java
+++ b/smack-java7/src/main/java/org/jivesoftware/smack/util/stringencoder/java7/Base64.java
@@ -29,6 +29,7 @@ import java.util.logging.Logger;
* @author rob@iharder.net
* @version 2.2.1
*/
+// CHECKSTYLE:OFF
public final class Base64
{
private static final Logger LOGGER = Logger.getLogger(Base64.class.getName());
@@ -1682,4 +1683,4 @@ public final class Base64
} // end class Base64
-
+// CHECKSTYLE:ON
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/AbstractBufferedImageOp.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/AbstractBufferedImageOp.java
index bff2c0c29..3c2165d36 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/AbstractBufferedImageOp.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/AbstractBufferedImageOp.java
@@ -30,19 +30,19 @@ import java.awt.image.ColorModel;
public abstract class AbstractBufferedImageOp implements BufferedImageOp, Cloneable {
public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel dstCM) {
- if ( dstCM == null )
+ if (dstCM == null)
dstCM = src.getColorModel();
return new BufferedImage(dstCM, dstCM.createCompatibleWritableRaster(src.getWidth(), src.getHeight()), dstCM.isAlphaPremultiplied(), null);
}
- public Rectangle2D getBounds2D( BufferedImage src ) {
+ public Rectangle2D getBounds2D(BufferedImage src) {
return new Rectangle(0, 0, src.getWidth(), src.getHeight());
}
- public Point2D getPoint2D( Point2D srcPt, Point2D dstPt ) {
- if ( dstPt == null )
+ public Point2D getPoint2D(Point2D srcPt, Point2D dstPt) {
+ if (dstPt == null)
dstPt = new Point2D.Double();
- dstPt.setLocation( srcPt.getX(), srcPt.getY() );
+ dstPt.setLocation(srcPt.getX(), srcPt.getY());
return dstPt;
}
@@ -62,11 +62,11 @@ public abstract class AbstractBufferedImageOp implements BufferedImageOp, Clonea
* @return the pixels
* @see #setRGB
*/
- public int[] getRGB( BufferedImage image, int x, int y, int width, int height, int[] pixels ) {
+ public int[] getRGB(BufferedImage image, int x, int y, int width, int height, int[] pixels) {
int type = image.getType();
- if ( type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
- return (int [])image.getRaster().getDataElements( x, y, width, height, pixels );
- return image.getRGB( x, y, width, height, pixels, 0, width );
+ if (type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB)
+ return (int [])image.getRaster().getDataElements(x, y, width, height, pixels);
+ return image.getRGB(x, y, width, height, pixels, 0, width);
}
/**
@@ -80,19 +80,19 @@ public abstract class AbstractBufferedImageOp implements BufferedImageOp, Clonea
* @param pixels the array of pixels to set
* @see #getRGB
*/
- public void setRGB( BufferedImage image, int x, int y, int width, int height, int[] pixels ) {
+ public void setRGB(BufferedImage image, int x, int y, int width, int height, int[] pixels) {
int type = image.getType();
- if ( type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
- image.getRaster().setDataElements( x, y, width, height, pixels );
+ if (type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB)
+ image.getRaster().setDataElements(x, y, width, height, pixels);
else
- image.setRGB( x, y, width, height, pixels, 0, width );
+ image.setRGB(x, y, width, height, pixels, 0, width);
}
public Object clone() {
try {
return super.clone();
}
- catch ( CloneNotSupportedException e ) {
+ catch (CloneNotSupportedException e) {
return null;
}
}
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/QuantizeFilter.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/QuantizeFilter.java
index c1dbf0a38..c2e181eac 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/QuantizeFilter.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/QuantizeFilter.java
@@ -163,7 +163,7 @@ public class QuantizeFilter extends WholeImageFilter {
}
}
- protected int[] filterPixels( int width, int height, int[] inPixels, Rectangle transformedSpace ) {
+ protected int[] filterPixels(int width, int height, int[] inPixels, Rectangle transformedSpace) {
int[] outPixels = new int[width*height];
quantize(inPixels, outPixels, width, height, numColors, dither, serpentine);
diff --git a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/WholeImageFilter.java b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/WholeImageFilter.java
index a94674d50..eb90e676a 100644
--- a/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/WholeImageFilter.java
+++ b/smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/mediaimpl/sshare/api/WholeImageFilter.java
@@ -43,7 +43,7 @@ public abstract class WholeImageFilter extends AbstractBufferedImageOp {
public WholeImageFilter() {
}
- public BufferedImage filter( BufferedImage src, BufferedImage dst ) {
+ public BufferedImage filter(BufferedImage src, BufferedImage dst) {
int width = src.getWidth();
int height = src.getHeight();
int type = src.getType();
@@ -53,15 +53,15 @@ public abstract class WholeImageFilter extends AbstractBufferedImageOp {
transformedSpace = new Rectangle(0, 0, width, height);
transformSpace(transformedSpace);
- if ( dst == null ) {
+ if (dst == null) {
ColorModel dstCM = src.getColorModel();
dst = new BufferedImage(dstCM, dstCM.createCompatibleWritableRaster(transformedSpace.width, transformedSpace.height), dstCM.isAlphaPremultiplied(), null);
}
WritableRaster dstRaster = dst.getRaster();
- int[] inPixels = getRGB( src, 0, 0, width, height, null );
- inPixels = filterPixels( width, height, inPixels, transformedSpace );
- setRGB( dst, 0, 0, transformedSpace.width, transformedSpace.height, inPixels );
+ int[] inPixels = getRGB(src, 0, 0, width, height, null);
+ inPixels = filterPixels(width, height, inPixels, transformedSpace);
+ setRGB(dst, 0, 0, transformedSpace.width, transformedSpace.height, inPixels);
return dst;
}
@@ -81,6 +81,6 @@ public abstract class WholeImageFilter extends AbstractBufferedImageOp {
* @param transformedSpace the output bounds
* @return the output pixels
*/
- protected abstract int[] filterPixels( int width, int height, int[] inPixels, Rectangle transformedSpace );
+ protected abstract int[] filterPixels(int width, int height, int[] inPixels, Rectangle transformedSpace);
}
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueDetails.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueDetails.java
index 3c3edfc1c..9b5595e53 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueDetails.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueDetails.java
@@ -165,7 +165,7 @@ public final class QueueDetails implements ExtensionElement {
eventType = parser.next();
while ((eventType != XmlPullParser.END_TAG)
- || (! "user".equals(parser.getName())))
+ || (!"user".equals(parser.getName())))
{
if ("position".equals(parser.getName())) {
position = Integer.parseInt(parser.nextText());
@@ -180,7 +180,7 @@ public final class QueueDetails implements ExtensionElement {
throw new SmackException(e);
}
}
- else if( parser.getName().equals( "waitTime" ) ) {
+ else if(parser.getName().equals("waitTime")) {
Date wait;
try {
wait = dateFormat.parse(parser.nextText());
diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java
index 857ba075b..68b0e7917 100644
--- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java
+++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java
@@ -469,7 +469,7 @@ public class Workgroup {
}
private void fireInvitationEvent(WorkgroupInvitation invitation) {
- for (WorkgroupInvitationListener listener : invitationListeners ){
+ for (WorkgroupInvitationListener listener : invitationListeners) {
// CHECKSTYLE:OFF
listener.invitationReceived(invitation);
// CHECKSTYLE:ON
diff --git a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
index ca39e73f5..a5f5d87bb 100644
--- a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
+++ b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
@@ -31,10 +31,10 @@ import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.SmackException.ConnectionException;
import org.jivesoftware.smack.SmackException.SecurityRequiredByServerException;
import org.jivesoftware.smack.SynchronizationPoint;
+import org.jivesoftware.smack.XMPPException.FailedNonzaException;
import org.jivesoftware.smack.XMPPException.StreamErrorException;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smack.XMPPException.XMPPErrorException;
import org.jivesoftware.smack.compress.packet.Compressed;
import org.jivesoftware.smack.compression.XMPPInputOutputStream;
import org.jivesoftware.smack.filter.StanzaFilter;
@@ -67,7 +67,6 @@ import org.jivesoftware.smack.sm.packet.StreamManagement.StreamManagementFeature
import org.jivesoftware.smack.sm.predicates.Predicate;
import org.jivesoftware.smack.sm.provider.ParseStreamManagement;
import org.jivesoftware.smack.packet.Nonza;
-import org.jivesoftware.smack.packet.XMPPError;
import org.jivesoftware.smack.proxy.ProxyInfo;
import org.jivesoftware.smack.util.ArrayBlockingQueueWithShutdown;
import org.jivesoftware.smack.util.Async;
@@ -221,10 +220,10 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
*/
private String smSessionId;
- private final SynchronizationPoint smResumedSyncPoint = new SynchronizationPoint(
+ private final SynchronizationPoint smResumedSyncPoint = new SynchronizationPoint<>(
this, "stream resumed element");
- private final SynchronizationPoint smEnabledSyncPoint = new SynchronizationPoint(
+ private final SynchronizationPoint smEnabledSyncPoint = new SynchronizationPoint<>(
this, "stream enabled element");
/**
@@ -1096,10 +1095,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
if (enabled.isResumeSet()) {
smSessionId = enabled.getId();
if (StringUtils.isNullOrEmpty(smSessionId)) {
- XMPPError.Builder builder = XMPPError.getBuilder(XMPPError.Condition.bad_request);
- builder.setDescriptiveEnText("Stream Management 'enabled' element with resume attribute but without session id received");
- XMPPErrorException xmppException = new XMPPErrorException(
- builder);
+ SmackException xmppException = new SmackException("Stream Management 'enabled' element with resume attribute but without session id received");
smEnabledSyncPoint.reportFailure(xmppException);
throw xmppException;
}
@@ -1115,8 +1111,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
break;
case Failed.ELEMENT:
Failed failed = ParseStreamManagement.failed(parser);
- XMPPError.Builder xmppError = XMPPError.getBuilder(failed.getXMPPErrorCondition());
- XMPPException xmppException = new XMPPErrorException(xmppError);
+ FailedNonzaException xmppException = new FailedNonzaException(failed, failed.getXMPPErrorCondition());
// If only XEP-198 would specify different failure elements for the SM
// enable and SM resume failure case. But this is not the case, so we
// need to determine if this is a 'Failed' response for either 'Enable'
@@ -1128,7 +1123,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
if (!smEnabledSyncPoint.requestSent()) {
throw new IllegalStateException("Failed element received but SM was not previously enabled");
}
- smEnabledSyncPoint.reportFailure(xmppException);
+ smEnabledSyncPoint.reportFailure(new SmackException(xmppException));
// Report success for last lastFeaturesReceived so that in case a
// failed resumption, we can continue with normal resource binding.
// See text of XEP-198 5. below Example 11.