From 1b1e88c4c340afcbe75b9f0db5ff4572245c996c Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Wed, 23 Nov 2016 17:52:04 +0100 Subject: [PATCH 1/6] Fix UOE being thrown in BlockingCommandManager the manager must use a copy of the BlockListIQ's JID list, since it may be the empty list which is not modifiable. Also rename the getter methods from getJids() to getBlockedJids(). --- .../blocking/BlockingCommandManager.java | 2 +- .../smackx/blocking/element/BlockListIQ.java | 21 ++++++++++++++----- .../smackx/blocking/GetBlockingListTest.java | 8 +++---- 3 files changed, 21 insertions(+), 10 deletions(-) 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/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()); } } From d6ebb884e7dcd2e0daab6b0c8f732b3c9d02b588 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Wed, 23 Nov 2016 17:55:16 +0100 Subject: [PATCH 2/6] Ad-Hoc Commands: 'type' attribute is optional Fixes SMACK-741 --- .../commands/provider/AdHocCommandDataProvider.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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)); } From b6a37cb228511e3b8e6826c79b57a95b59b531c4 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Fri, 18 Nov 2016 20:39:53 +0100 Subject: [PATCH 3/6] Add Roster ItemType.asSymbol() --- .../smack/roster/packet/RosterPacket.java | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) 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; + } } } From 9d0d8088f496063fdeabf2af03d298e9b6fe76db Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Thu, 24 Nov 2016 10:37:26 +0100 Subject: [PATCH 4/6] Don't throw when calling UnparsedIQ.toXML() this causes the debugger to terminate if an unparsed IQ is shown. --- .../main/java/org/jivesoftware/smack/packet/UnparsedIQ.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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; } } From 9165e818d98564189a9ba897a5b9fe97ea526efa Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Tue, 29 Nov 2016 12:01:41 +0100 Subject: [PATCH 5/6] Add ParenPad and NoWhitespaceAfter checkstyle rules --- config/checkstyle.xml | 13 +++++++++ .../smack/AbstractXMPPConnection.java | 2 ++ .../smack/SmackConfiguration.java | 2 +- .../jivesoftware/smack/proxy/ProxyInfo.java | 2 +- .../smack/util/PacketParserUtils.java | 2 +- .../jivesoftware/smack/util/StringUtils.java | 2 +- .../org/jivesoftware/smackx/iot/Thing.java | 2 +- .../ValidationConsistencyException.java | 2 +- .../smackx/xdata/packet/DataFormTest.java | 18 ++++++------ .../xdatalayout/packet/DataLayoutTest.java | 20 ++++++------- .../provider/DataValidationTest.java | 20 ++++++------- .../util/stringencoder/java7/Base64.java | 3 +- .../sshare/api/AbstractBufferedImageOp.java | 28 +++++++++---------- .../mediaimpl/sshare/api/QuantizeFilter.java | 2 +- .../sshare/api/WholeImageFilter.java | 12 ++++---- .../smackx/workgroup/packet/QueueDetails.java | 4 +-- .../smackx/workgroup/user/Workgroup.java | 2 +- 17 files changed, 76 insertions(+), 60 deletions(-) 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/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 d8d4bc4a0..e4b5ab593 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/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/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-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 From d976434bb3a0f1a7107e04a34b863a198a731590 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Tue, 29 Nov 2016 16:40:08 +0100 Subject: [PATCH 6/6] Improve message of XMPPErrorException by including the XMPP entity which send the XMPP error reply to us. Also cleanup the no longer used constructors. --- .../org/jivesoftware/smack/XMPPException.java | 90 +++++++++++-------- .../socks5/Socks5BytestreamRequest.java | 2 +- .../smackx/commands/AdHocCommandManager.java | 1 + .../filetransfer/FileTransferNegotiator.java | 2 +- .../jivesoftware/util/ConnectionUtils.java | 4 +- ...SmackIntegrationTestFrameworkUnitTest.java | 6 +- .../smack/tcp/XMPPTCPConnection.java | 17 ++-- 7 files changed, 65 insertions(+), 57 deletions(-) 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-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/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/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-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-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java index b9444a8ed..3619525bc 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; @@ -220,10 +219,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"); /** @@ -1094,10 +1093,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; } @@ -1113,8 +1109,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' @@ -1126,7 +1121,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.