When receiving and parsing forms, for some fields the response can contains empty string for “label” attributes, particularly for fields of type “hidden”.
<field var='FORM_TYPE' label='' type='hidden'>
XEP-0004 says label is optional but doesn’t restrict empty values.
Parsing such response fails with the exception as a field builder doesn’t accept empty string:
java.lang.IllegalArgumentException: label must not be null or empty
at org.jivesoftware.smack.util.StringUtils.requireNotNullNorEmpty(StringUtils.java:551)
at org.jivesoftware.smackx.xdata.FormField$Builder.setLabel(FormField.java:603)
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.parseField(DataFormProvider.java:289)
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.parseField(DataFormProvider.java:141)
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.parse(DataFormProvider.java:89)
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.parse(DataFormProvider.java:58)
I suggest to not pass a value to the builder is it’s empty to comply with the builder restrictions.
Label value was checked for emptiness before this commit Re-work data form API · igniterealtime/Smack@77e26fc (github.com)