include form fields into caps hash calculation
This commit is contained in:
parent
8d98c52803
commit
867d0ef191
|
@ -17,6 +17,7 @@ import org.json.JSONObject;
|
|||
|
||||
import eu.siacs.conversations.xml.Element;
|
||||
import eu.siacs.conversations.xmpp.forms.Data;
|
||||
import eu.siacs.conversations.xmpp.forms.Field;
|
||||
import eu.siacs.conversations.xmpp.stanzas.IqPacket;
|
||||
|
||||
public class ServiceDiscoveryResult {
|
||||
|
@ -220,7 +221,21 @@ public class ServiceDiscoveryResult {
|
|||
|
||||
for(Data form : forms) {
|
||||
s.append(form.getFormType() + "<");
|
||||
//TODO append fields and values
|
||||
List<Field> fields = form.getFields();
|
||||
Collections.sort(fields, new Comparator<Field>() {
|
||||
@Override
|
||||
public int compare(Field lhs, Field rhs) {
|
||||
return lhs.getFieldName().compareTo(rhs.getFieldName());
|
||||
}
|
||||
});
|
||||
for(Field field : fields) {
|
||||
s.append(field.getFieldName()+"<");
|
||||
List<String> values = field.getValues();
|
||||
Collections.sort(values);
|
||||
for(String value : values) {
|
||||
s.append(value+"<");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MessageDigest md;
|
||||
|
|
|
@ -9,6 +9,8 @@ import eu.siacs.conversations.xml.Element;
|
|||
|
||||
public class Data extends Element {
|
||||
|
||||
private static final String FORM_TYPE = "FORM_TYPE";
|
||||
|
||||
public Data() {
|
||||
super("x");
|
||||
this.setAttribute("xmlns","jabber:x:data");
|
||||
|
@ -17,7 +19,8 @@ public class Data extends Element {
|
|||
public List<Field> getFields() {
|
||||
ArrayList<Field> fields = new ArrayList<Field>();
|
||||
for(Element child : getChildren()) {
|
||||
if (child.getName().equals("field")) {
|
||||
if (child.getName().equals("field")
|
||||
&& !FORM_TYPE.equals(child.getAttribute("var"))) {
|
||||
fields.add(Field.parse(child));
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +29,8 @@ public class Data extends Element {
|
|||
|
||||
public Field getFieldByName(String needle) {
|
||||
for(Element child : getChildren()) {
|
||||
if (child.getName().equals("field") && needle.equals(child.getAttribute("var"))) {
|
||||
if (child.getName().equals("field")
|
||||
&& needle.equals(child.getAttribute("var"))) {
|
||||
return Field.parse(child);
|
||||
}
|
||||
}
|
||||
|
@ -76,11 +80,11 @@ public class Data extends Element {
|
|||
}
|
||||
|
||||
public void setFormType(String formType) {
|
||||
this.put("FORM_TYPE", formType);
|
||||
this.put(FORM_TYPE, formType);
|
||||
}
|
||||
|
||||
public String getFormType() {
|
||||
String type = getValue("FORM_TYPE");
|
||||
String type = getValue(FORM_TYPE);
|
||||
return type == null ? "" : type;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue