package sax; import java.io.*; import javax.xml.parsers.SAXParser; import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler; import com.fasterxml.aalto.sax.*; /** * Simple unit tests to verify that most fundamental parsing functionality * works via Woodstox SAX implementation. */ public class TestEntityResolver extends base.BaseTestCase { public void testWithDummyExtSubset() throws Exception { final String XML = "<!DOCTYPE root PUBLIC '//some//public//id' 'no-such-thing.dtd'>\n" +"<root />" ; SAXParserFactoryImpl spf = new SAXParserFactoryImpl(); spf.setNamespaceAware(true); SAXParser sp = spf.newSAXParser(); DefaultHandler h = new DefaultHandler(); /* First: let's verify that we get an exception for * unresolved reference... */ try { sp.parse(new InputSource(new StringReader(XML)), h); } catch (SAXException e) { verifyException(e, "No such file or directory"); } // And then with dummy resolver; should work ok now sp = spf.newSAXParser(); sp.getXMLReader().setEntityResolver(new MyResolver(" ")); h = new DefaultHandler(); try { sp.parse(new InputSource(new StringReader(XML)), h); } catch (SAXException e) { fail("Should not have failed with entity resolver, got ("+e.getClass()+"): "+e.getMessage()); } } static class MyResolver implements EntityResolver { final String mContents; public MyResolver(String c) { mContents = c; } @Override public InputSource resolveEntity(String publicId, String systemId) { return new InputSource(new StringReader(mContents)); } } }