public XMLElement getXML()

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);
    }