package org.tigris.juxy;
import org.tigris.juxy.util.DOMUtil;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import javax.xml.transform.Source;
import javax.xml.transform.URIResolver;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamSource;
import java.io.File;
import java.io.IOException;
import junit.framework.TestSuite;
/**
* @author Pavel Sher
*/
public class UTestURIResolver extends JuxyTestCase {
public static TestSuite suite() {
if (!TestUtil.isCustomURIResolverSupported()) {
return new TestSuite();
}
return new TestSuite(UTestRunnerTracing.class);
}
public void testResolver_StreamSource() throws Exception {
newContext("/virtual/xsl/file", new URIResolver() {
public Source resolve(String href, String base) throws TransformerException {
File file = new File("tests/xml/fake.xsl");
try {
return new StreamSource(file.getCanonicalFile().toURI().toString());
} catch (IOException e) {
throw new TransformerException(e);
}
}
});
context().setDocument("<root/>");
callTemplate("aname");
}
public void testResolver_DOMSource() throws Exception {
newContext("/virtual/xsl/file", new URIResolver() {
public Source resolve(String href, String base) {
try {
Document doc = DOMUtil.parse("" +
"<xsl:stylesheet version='2.0' xmlns:xsl='" + XSLTKeys.XSLT_NS + "'>" +
"<xsl:template name='tpl'/>" +
"</xsl:stylesheet>");
return new DOMSource(doc, "/some/system/id");
} catch (SAXException e) {
throw new RuntimeException(e);
}
}
});
context().setDocument("<root/>");
callTemplate("tpl");
}
public void testResolver_SAXSource() throws Exception {
newContext("/virtual/xsl/file", new URIResolver() {
public Source resolve(String href, String base) throws TransformerException {
SAXSource src = new SAXSource();
try {
String systemId = new File("tests/xml/fake.xsl").getCanonicalFile().toURI().toString();
src.setSystemId(systemId);
} catch (IOException e) {
throw new TransformerException(e);
}
return src;
}
});
context().setDocument("<root/>");
callTemplate("aname");
}
}