All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openfast.examples.producer.XmlCompressedMessageConverter Maven / Gradle / Ivy

The newest version!
package org.openfast.examples.producer;

import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.openfast.FieldValue;
import org.openfast.GroupValue;
import org.openfast.Message;
import org.openfast.QName;
import org.openfast.SequenceValue;
import org.openfast.template.BasicTemplateRegistry;
import org.openfast.template.Field;
import org.openfast.template.Group;
import org.openfast.template.MessageTemplate;
import org.openfast.template.Sequence;
import org.openfast.template.TemplateRegistry;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamDriver;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.xml.XppDriver;

public class XmlCompressedMessageConverter {
    private static final QName INSTANCE_NAME = new QName("instanceName", "http://www.lasalletech.com/fast/ext/1.0");
    protected TemplateRegistry templateRegistry = new BasicTemplateRegistry();

    private final HierarchicalStreamDriver driver;

    public XmlCompressedMessageConverter() {
        this(new XppDriver());
    }

    public XmlCompressedMessageConverter(HierarchicalStreamDriver driver) {
        if (driver == null)
            throw new NullPointerException();
        this.driver = driver;
    }

    public List parse(InputStream in) {
        HierarchicalStreamReader reader = driver.createReader(in);
        return unmarshal(reader);
    }

    public void serialize(List messages, OutputStream out) {
        HierarchicalStreamWriter writer = driver.createWriter(out);
        writer.startNode("messages");
        for (Iterator iter = messages.iterator(); iter.hasNext();) {
            Message message = (Message) iter.next();
            marshal(message, writer, null);
        }
        writer.endNode();
        writer.close();
    }

    public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) {
        Message message = (Message) obj;
        writer.startNode(message.getGroup().getName());
        writeGroup(writer, message);
        writer.endNode();
    }

    private void writeGroup(HierarchicalStreamWriter writer, GroupValue groupValue) {
        Field[] fields = groupValue.getGroup().getFields();
        for (int i=0; i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy