package org.toobs.framework.transformpipeline.domain;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Iterator;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
import javax.xml.transform.URIResolver;
import javax.xml.transform.stream.StreamSource;
public class XSLUriResolverImpl implements URIResolver {
/**
* To get the logger instance
*/
private static Log log = LogFactory.getLog(XSLUriResolverImpl.class);
public Source resolve(String href, String base) throws TransformerException {
log.debug("ENTER XSLUriResolverImpl.resolve('" + href + "', '" + base + "');");
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStreamReader reader = null;
StreamSource xslSource = null;
String xslFile = href;
URL configFileURL = classLoader.getResource("xsl/" + xslFile);
// If the file exists, read it.
if (null != configFileURL) {
try {
reader = new InputStreamReader(configFileURL.openStream());
xslSource = new StreamSource(reader);
} catch (IOException e) {
log.error("XSL File " + xslFile + " had IOException " + e.getMessage());
if (reader != null) {
try {
reader.close();
} catch (IOException ignore) { }
}
throw new TransformerException("xsl " + xslFile + " cannot be loaded");
}
} else {
log.error("XSL File " + xslFile + " does not exist for component ");
throw new TransformerException("xsl " + xslFile + " does not exist");
}
log.debug("EXIT XSLUriResolverImpl.resolve('" + href + "', '" + base + "');");
return xslSource;
}
}