in server/core/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoder.java [38:92]
public XMLElement getXML(DataForm dataForm) {
List<XMLFragment> childElements = new ArrayList<XMLFragment>();
Iterator<String> instructionIterator = dataForm.getInstructionIterator();
while (instructionIterator.hasNext()) {
String instruction = instructionIterator.next();
if (instruction == null)
continue;
childElements.add(createTextOnlyElement(NamespaceURIs.JABBER_X_DATA, "instructions", instruction));
}
if (dataForm.getTitle() != null) {
childElements.add(createTextOnlyElement(NamespaceURIs.JABBER_X_DATA, "title", dataForm.getTitle()));
}
if (dataForm.getType() == DataForm.Type.form) {
// reported element, containing the reported items
ArrayList<XMLFragment> reportedFields = new ArrayList<XMLFragment>();
Iterator<Field> reportedIterator = dataForm.getReportedIterator();
while (reportedIterator.hasNext()) {
Field field = reportedIterator.next();
reportedFields.add(encodeField(field));
}
XMLElement reportedElement = new XMLElement(NamespaceURIs.JABBER_X_DATA, "reported", null, null,
reportedFields);
childElements.add(reportedElement);
// all item elements with their values
Iterator<List<Field>> itemIterator = dataForm.getItemIterator();
while (itemIterator.hasNext()) {
ArrayList<XMLFragment> itemFields = new ArrayList<XMLFragment>();
List<Field> itemField = itemIterator.next();
for (Field field : itemField) {
itemFields.add(encodeField(field));
}
XMLElement itemElement = new XMLElement(NamespaceURIs.JABBER_X_DATA, "item", null, null, itemFields);
childElements.add(itemElement);
}
}
if (dataForm.getType() != DataForm.Type.cancel) {
// all fields
Iterator<Field> fieldIterator = dataForm.getFieldIterator();
while (fieldIterator.hasNext()) {
Field field = fieldIterator.next();
childElements.add(encodeField(field));
}
}
List<Attribute> attributes = new ArrayList<Attribute>();
attributes.add(new Attribute("type", dataForm.getType().value()));
return new XMLElement(NamespaceURIs.JABBER_X_DATA, "x", null, attributes, childElements);
}