mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 14:22:05 +01:00
[xdata] Do not require FORM_TYPE field in FilledForm
The FillableForm API is the most convenient way of filling out a form. Currently only forms with a FORM_TYPE can be filled, due to a restriction in FillableForm. This makes filling out untyped forms very cumbersome. This commit removes the required FORM_TYPE when using FilledForm (and therefor FillableForm). Some subclasses of FilledForm already check that the correct FORM_TYPE is set using FilledForm#ensureFormType().
This commit is contained in:
parent
bca3821343
commit
d4d2a7a6d8
2 changed files with 10 additions and 10 deletions
|
@ -256,11 +256,16 @@ public class FillableForm extends FilledForm {
|
||||||
if (!missingRequiredFields.isEmpty()) {
|
if (!missingRequiredFields.isEmpty()) {
|
||||||
throw new IllegalStateException("Not all required fields filled. Missing: " + missingRequiredFields);
|
throw new IllegalStateException("Not all required fields filled. Missing: " + missingRequiredFields);
|
||||||
}
|
}
|
||||||
DataForm dataFormToSend = DataForm.builder()
|
DataForm.Builder builder = DataForm.builder();
|
||||||
.addField(formTypeFormField)
|
|
||||||
.addFields(filledFields.values())
|
// the submit form has the same FORM_TYPE as the form.
|
||||||
.build();
|
if (formTypeFormField != null) {
|
||||||
return dataFormToSend;
|
builder.addField(formTypeFormField);
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.addFields(filledFields.values());
|
||||||
|
|
||||||
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
package org.jivesoftware.smackx.xdata.form;
|
package org.jivesoftware.smackx.xdata.form;
|
||||||
|
|
||||||
import org.jivesoftware.smack.util.Objects;
|
import org.jivesoftware.smack.util.Objects;
|
||||||
import org.jivesoftware.smack.util.StringUtils;
|
|
||||||
|
|
||||||
import org.jivesoftware.smackx.xdata.FormField;
|
import org.jivesoftware.smackx.xdata.FormField;
|
||||||
import org.jivesoftware.smackx.xdata.TextSingleFormField;
|
import org.jivesoftware.smackx.xdata.TextSingleFormField;
|
||||||
|
@ -32,10 +31,6 @@ public abstract class FilledForm implements FormReader {
|
||||||
|
|
||||||
public FilledForm(DataForm dataForm) {
|
public FilledForm(DataForm dataForm) {
|
||||||
this.dataForm = Objects.requireNonNull(dataForm);
|
this.dataForm = Objects.requireNonNull(dataForm);
|
||||||
String formType = dataForm.getFormType();
|
|
||||||
if (StringUtils.isNullOrEmpty(formType)) {
|
|
||||||
throw new IllegalArgumentException("The provided data form has no hidden FROM_TYPE field.");
|
|
||||||
}
|
|
||||||
if (dataForm.getType() == Type.cancel) {
|
if (dataForm.getType() == Type.cancel) {
|
||||||
throw new IllegalArgumentException("Forms of type 'cancel' are not filled nor fillable");
|
throw new IllegalArgumentException("Forms of type 'cancel' are not filled nor fillable");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue