| 1 package org.sapia.soto.util; 2 3 import org.sapia.soto.Env; 4 5 import org.xml.sax.EntityResolver ; 6 import org.xml.sax.InputSource ; 7 import org.xml.sax.SAXException ; 8 9 import java.io.File ; 10 import java.io.FileNotFoundException ; 11 import java.io.IOException ; 12 13 14 23 public class EntityResolverImpl implements EntityResolver { 24 private Env _env; 25 private EntityResolver _parent; 26 27 public EntityResolverImpl(Env env) { 28 _env = env; 29 } 30 31 public EntityResolverImpl(Env env, EntityResolver parent) { 32 _env = env; 33 _parent = parent; 34 } 35 36 39 public InputSource resolveEntity(String href, String base) 40 throws SAXException , IOException { 41 try { 42 if (Utils.hasScheme(href)) { 43 return new InputSource (_env.getResourceHandlerFor(href).getResource(href)); 44 } else { 45 String uri; 46 47 if (href == null) { 48 uri = base; 49 } else if (base == null) { 50 uri = href; 51 } else { 52 uri = base + File.separator + href; 53 } 54 55 return new InputSource (_env.getResourceHandlerFor(uri).getResource(uri)); 56 } 57 } catch (FileNotFoundException e) { 58 if (_parent == null) { 59 throw new SAXException ("Could not resolve URI: " + href, e); 60 } 61 62 return _parent.resolveEntity(href, base); 63 } catch (IOException e) { 64 throw new SAXException ("Could not resolve URI: " + href, e); 65 } 66 } 67 } 68 | Popular Tags |