Package org.mule.module.xml.transformer

Source Code of org.mule.module.xml.transformer.XmlPrettyPrinter

/*
* $Id: XmlPrettyPrinter.java 21933 2011-05-17 18:31:30Z dirk.olmes $
* --------------------------------------------------------------------------------------
* Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
*
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/

package org.mule.module.xml.transformer;

import org.mule.api.transformer.TransformerException;
import org.mule.module.xml.util.XMLUtils;
import org.mule.transformer.AbstractTransformer;
import org.mule.transformer.types.DataTypeFactory;
import org.mule.util.StringUtils;

import org.apache.commons.io.output.ByteArrayOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class XmlPrettyPrinter extends AbstractTransformer
{
    protected OutputFormat outputFormat = OutputFormat.createPrettyPrint();

    public XmlPrettyPrinter()
    {
        super();
        this.registerSourceType(DataTypeFactory.STRING);
        this.registerSourceType(DataTypeFactory.create(org.dom4j.Document.class));
        this.registerSourceType(DataTypeFactory.create(org.w3c.dom.Document.class));
        this.setReturnDataType(DataTypeFactory.STRING);
    }

    public synchronized OutputFormat getOutputFormat()
    {
        return outputFormat;
    }

    @Override
    protected Object doTransform(Object src, String outputEncoding) throws TransformerException
    {
        try
        {
            Document document = XMLUtils.toDocument(src, muleContext);
            if (document != null)
            {
                ByteArrayOutputStream resultStream = new ByteArrayOutputStream();
                XMLWriter writer = new XMLWriter(resultStream, this.getOutputFormat());
                writer.write(document);
                writer.close();
                return resultStream.toString(outputEncoding);
            }
            else
            {
                throw new DocumentException("Payload is not valid XML");
            }
        }
        catch (Exception e)
        {
            throw new TransformerException(this, e);
        }
    }

    /**
     * @see OutputFormat#getEncoding()
     */
    @Override
    public synchronized String getEncoding()
    {
        return outputFormat.getEncoding();
    }

    /**
     * @see OutputFormat#setEncoding(String)
     */
    @Override
    public synchronized void setEncoding(String encoding)
    {
        outputFormat.setEncoding(encoding);
    }

    /**
     * @see OutputFormat#getIndent()
     */
    public synchronized boolean getIndentEnabled()
    {
        return outputFormat.getIndent() != null;
    }

    /**
     * @see OutputFormat#setIndent(boolean)
     */
    public synchronized void setIndentEnabled(boolean doIndent)
    {
        outputFormat.setIndent(doIndent);
    }

    /**
     * @see OutputFormat#getIndent()
     */
    public synchronized String getIndentString()
    {
        return outputFormat.getIndent();
    }

    /**
     * @see OutputFormat#setIndent(boolean)
     */
    public synchronized void setIndentString(String indentString)
    {
        outputFormat.setIndent(indentString);
    }

    /**
     * @see OutputFormat#setIndentSize(int)
     */
    public synchronized int getIndentSize()
    {
        return StringUtils.defaultIfEmpty(outputFormat.getIndent(), "").length();
    }

    /**
     * @see OutputFormat#setIndentSize(int)
     */
    public synchronized void setIndentSize(int indentSize)
    {
        outputFormat.setIndentSize(indentSize);
    }

    /**
     * @see OutputFormat#getLineSeparator()
     */
    public synchronized String getLineSeparator()
    {
        return outputFormat.getLineSeparator();
    }

    /**
     * @see OutputFormat#setLineSeparator(String)
     */
    public synchronized void setLineSeparator(String separator)
    {
        outputFormat.setLineSeparator(separator);
    }

    /**
     * @see OutputFormat#getNewLineAfterNTags()
     */
    public synchronized int getNewLineAfterNTags()
    {
        return outputFormat.getNewLineAfterNTags();
    }

    /**
     * @see OutputFormat#setNewLineAfterNTags(int)
     */
    public synchronized void setNewLineAfterNTags(int tagCount)
    {
        outputFormat.setNewLineAfterNTags(tagCount);
    }

    /**
     * @see OutputFormat#isExpandEmptyElements()
     */
    public synchronized boolean isExpandEmptyElements()
    {
        return outputFormat.isExpandEmptyElements();
    }

    /**
     * @see OutputFormat#setExpandEmptyElements(boolean)
     */
    public synchronized void setExpandEmptyElements(boolean expandEmptyElements)
    {
        outputFormat.setExpandEmptyElements(expandEmptyElements);
    }

    /**
     * @see OutputFormat#isNewlines()
     */
    public synchronized boolean isNewlines()
    {
        return outputFormat.isNewlines();
    }

    /**
     * @see OutputFormat#setNewlines(boolean)
     */
    public synchronized void setNewlines(boolean newlines)
    {
        outputFormat.setNewlines(newlines);
    }

    /**
     * @see OutputFormat#isNewLineAfterDeclaration()
     */
    public synchronized boolean isNewLineAfterDeclaration()
    {
        return outputFormat.isNewLineAfterDeclaration();
    }

    /**
     * @see OutputFormat#setNewLineAfterDeclaration(boolean)
     */
    public synchronized void setNewLineAfterDeclaration(boolean newline)
    {
        outputFormat.setNewLineAfterDeclaration(newline);
    }

    /**
     * @see OutputFormat#isOmitEncoding()
     */
    public synchronized boolean isOmitEncoding()
    {
        return outputFormat.isOmitEncoding();
    }

    /**
     * @see OutputFormat#setOmitEncoding(boolean)
     */
    public synchronized void setOmitEncoding(boolean omitEncoding)
    {
        outputFormat.setOmitEncoding(omitEncoding);
    }

    /**
     * @see OutputFormat#getEncoding()
     */
    public synchronized boolean isPadText()
    {
        return outputFormat.isPadText();
    }

    /**
     * @see OutputFormat#getEncoding()
     */
    public synchronized void setPadText(boolean padText)
    {
        outputFormat.setPadText(padText);
    }

    /**
     * @see OutputFormat#getEncoding()
     */
    public synchronized boolean isSuppressDeclaration()
    {
        return outputFormat.isSuppressDeclaration();
    }

    /**
     * @see OutputFormat#getEncoding()
     */
    public synchronized void setSuppressDeclaration(boolean suppressDeclaration)
    {
        outputFormat.setSuppressDeclaration(suppressDeclaration);
    }

    /**
     * @see OutputFormat#isTrimText()
     */
    public synchronized boolean isTrimText()
    {
        return outputFormat.isTrimText();
    }

    /**
     * @see OutputFormat#setTrimText(boolean)
     */
    public synchronized void setTrimText(boolean trimText)
    {
        outputFormat.setTrimText(trimText);
    }

    /**
     * @see OutputFormat#isXHTML()
     */
    public synchronized boolean isXHTML()
    {
        return outputFormat.isXHTML();
    }

    /**
     * @see OutputFormat#setXHTML(boolean)
     */
    public synchronized void setXHTML(boolean xhtml)
    {
        outputFormat.setXHTML(xhtml);
    }

}
TOP

Related Classes of org.mule.module.xml.transformer.XmlPrettyPrinter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.