diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java index e87d2e5c6..667bdf869 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java @@ -33,6 +33,7 @@ import org.jivesoftware.smack.util.CollectionUtil; import org.jivesoftware.smack.util.EqualsUtil; import org.jivesoftware.smack.util.HashCode; import org.jivesoftware.smack.util.MultiMap; +import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -600,7 +601,7 @@ public abstract class FormField implements FullyQualifiedElement { * @return a reference to this builder. */ public B setLabel(String label) { - this.label = StringUtils.requireNotNullNorEmpty(label, "label must not be null or empty"); + this.label = Objects.requireNonNull(label, "label must not be null"); return getThis(); } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/FormFieldTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/FormFieldTest.java index 67cd5dd89..d6d0232c9 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/FormFieldTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/FormFieldTest.java @@ -17,6 +17,8 @@ package org.jivesoftware.smackx.xdata; import static org.jivesoftware.smack.test.util.XmlAssertUtil.assertXmlSimilar; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; import org.jxmpp.jid.JidTestUtil; @@ -35,4 +37,18 @@ class FormFieldTest { assertXmlSimilar(expectedXml, xml); } + @Test + public void testEmptyLabel() { + TextSingleFormField.Builder builder = FormField.textSingleBuilder("type"); + builder.setLabel(""); + TextSingleFormField formField = builder.build(); + + assertEquals("", formField.getLabel()); + } + + @Test + public void testThrowExceptionWhenNullLabel() { + TextSingleFormField.Builder builder = FormField.textSingleBuilder("type"); + assertThrows(IllegalArgumentException.class, () -> builder.setLabel(null)); + } } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/provider/DataFormProviderTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/provider/DataFormProviderTest.java index f25eb67d3..c6be83817 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/provider/DataFormProviderTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/provider/DataFormProviderTest.java @@ -114,4 +114,33 @@ public class DataFormProviderTest { assertEquals(2, items.size()); } + @Test + public void testRetrieveFieldWithEmptyLabel() throws XmlPullParserException, IOException, SmackParsingException { + + String form = + "" + + " Advanced User Search" + + " The following fields are available for searching. Wildcard (*) characters are allowed as part of the query." + + " " + + " jabber:iq:search" + + " " + + " " + + " " + + " " + + " " + + " true" + + " " + + " " + + " true" + + " " + + " " + + " true" + + " " + + ""; + XmlPullParser parser = PacketParserUtils.getParserFor(form); + DataForm dataForm = DataFormProvider.INSTANCE.parse(parser); + FormField usernameFormField = dataForm.getField("FORM_TYPE"); + assertEquals(FormField.Type.hidden, usernameFormField.getType()); + assertEquals("", usernameFormField.getLabel()); + } }