XmlOutputFilter.java

package emissary.output.filter;

import emissary.config.ConfigUtil;
import emissary.config.Configurator;
import emissary.core.IBaseDataObject;
import emissary.output.DropOffPlace;
import emissary.util.PayloadUtil;

import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;

/**
 * Filter that writes unadorned data as utf-8.
 */
public class XmlOutputFilter extends AbstractRollableFilter {

    /**
     * Initialize reads the configuration items for this filter
     * 
     * @param configG the configurator to read from
     * @param filterName the configured name of this filter or null for the default
     * @param filterConfig the configuration for the specific filter
     */
    @Override
    public void initialize(Configurator configG, @Nullable String filterName, Configurator filterConfig) {
        if (filterName == null) {
            setFilterName("XML");
        }
        super.initialize(configG, filterName, filterConfig);
        this.appendNewLine = false;
    }

    @Override
    public byte[] convert(final List<IBaseDataObject> list, final Map<String, Object> params) throws IOException {
        return PayloadUtil.toXmlString(list).getBytes();
    }

    /**
     * Main to test output types
     */
    @SuppressWarnings("SystemOut")
    public static void main(String[] args) {
        String name = args.length > 0 ? args[0] : null;

        XmlOutputFilter filter = new XmlOutputFilter();
        try {
            Configurator config = ConfigUtil.getConfigInfo(DropOffPlace.class);
            filter.initialize(config, name);
            System.out.println("Output types " + filter.outputTypes);
        } catch (Exception ex) {
            System.err.println("Cannot configure filter: " + ex.getMessage());
        }
    }
}