From 68edc8b9f58489bf338a2da174ce1d01db39e98d Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Thu, 1 Apr 2021 12:54:52 +0200 Subject: [PATCH 1/3] [xdata] Allow FillableForm.write() ot overwrite already filled fields --- .../java/org/jivesoftware/smackx/xdata/form/FillableForm.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/form/FillableForm.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/form/FillableForm.java index 7e90c7711..22f257a4e 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/form/FillableForm.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/form/FillableForm.java @@ -224,9 +224,6 @@ public class FillableForm extends FilledForm { if (!getDataForm().hasField(fieldName)) { throw new IllegalArgumentException(); } - if (filledFields.containsKey(fieldName)) { - throw new IllegalArgumentException(); - } // Perform validation, e.g. using XEP-0122. // TODO: We could also perform list-* option validation, but this has to take xep122's into account. From 090858f467c8211b97dc487266a822f5731a252f Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Thu, 1 Apr 2021 12:55:28 +0200 Subject: [PATCH 2/3] [xdata] Automatically fill required fields with a default value --- .../org/jivesoftware/smackx/xdata/form/FillableForm.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/form/FillableForm.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/form/FillableForm.java index 22f257a4e..b40cb92a8 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/form/FillableForm.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/form/FillableForm.java @@ -59,7 +59,13 @@ public class FillableForm extends FilledForm { if (formField.isRequired()) { String fieldName = formField.getFieldName(); requiredFields.add(fieldName); - missingRequiredFields.add(fieldName); + + if (formField.hasValueSet()) { + // This is a form field with a default value. + write(formField); + } else { + missingRequiredFields.add(fieldName); + } } } this.requiredFields = Collections.unmodifiableSet(requiredFields); From 26e6efa767c87e64fdf815f51b755fe1f175f49a Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Thu, 3 Jun 2021 19:10:07 +0200 Subject: [PATCH 3/3] [address] Fix NPE in MultipleRecipientManager The arguments 'to', 'cc, and 'bcc' may be null, hence ensure that they are non-null when calling e.g. size() on them. Fixes SMACK-907 Fixes: df96c5709379 ("[address] Get rid of PacketCopy workaround") --- .../address/MultipleRecipientManager.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) 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 a2c73552a..630d37c8b 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 @@ -19,6 +19,7 @@ package org.jivesoftware.smackx.address; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import org.jivesoftware.smack.SmackException.FeatureNotSupportedException; @@ -228,18 +229,16 @@ public class MultipleRecipientManager { throw new AssertionError(); } + if (to == null) to = Collections.emptyList(); + if (cc == null) cc = Collections.emptyList(); + if (bcc == null) bcc = Collections.emptyList(); + final int numRecipients = to.size() + cc.size() + bcc.size(); final List recipients = new ArrayList<>(numRecipients); - if (to != null) { - recipients.addAll(to); - } - if (cc != null) { - recipients.addAll(cc); - } - if (bcc != null) { - recipients.addAll(bcc); - } + recipients.addAll(to); + recipients.addAll(cc); + recipients.addAll(bcc); final List stanzasToSend = new ArrayList<>(numRecipients); for (Jid recipient : recipients) {