/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.xslt.base;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.URIResolver;
import com.enonic.cms.core.xslt.XsltProcessorErrors;
import com.enonic.cms.core.xslt.XsltProcessorException;
public abstract class BaseXsltProcessorFactory
{
protected abstract TransformerFactory createTransformerFactory();
protected final Transformer createTransformer( final Templates templates, final URIResolver resolver )
throws XsltProcessorException
{
try
{
final Transformer transformer = templates.newTransformer();
transformer.setURIResolver( resolver );
return transformer;
}
catch ( final Exception e )
{
throw new XsltProcessorException( e );
}
}
protected final Templates compileTemplate( final Source xsl, final URIResolver resolver )
throws XsltProcessorException
{
final XsltProcessorErrors errors = new XsltProcessorErrors();
final TransformerFactory factory = createTransformerFactory();
try
{
factory.setErrorListener( errors );
factory.setURIResolver( resolver );
return factory.newTemplates( xsl );
}
catch ( final Exception e )
{
throw new XsltProcessorException( e, errors );
}
}
}