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

com.github.fluentxml4j.serialize.SerializerConfigurerAdapter Maven / Gradle / Ivy

package com.github.fluentxml4j.serialize;

import com.github.fluentxml4j.FluentXmlConfigurationException;

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;

public class SerializerConfigurerAdapter implements SerializerConfigurer
{
	@Override
	public TransformerHandler getSerializer()
	{
		try
		{
			SAXTransformerFactory transformerFactory = buildTransformerFactory();
			configure(transformerFactory);
			TransformerHandler transformer = buildTransformer(transformerFactory);
			configure(transformer.getTransformer());
			return transformer;
		}
		catch (TransformerConfigurationException ex)
		{
			throw new FluentXmlConfigurationException(ex);
		}
	}

	protected void configure(Transformer transformer)
	{
		transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
		transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
	}

	protected TransformerHandler buildTransformer(SAXTransformerFactory transformerFactory) throws TransformerConfigurationException
	{
		return transformerFactory.newTransformerHandler();
	}

	protected void configure(SAXTransformerFactory transformerFactory)
	{
		// override for customization
	}

	protected SAXTransformerFactory buildTransformerFactory()
	{
		return (SAXTransformerFactory) SAXTransformerFactory.newInstance();
	}


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy