1 package org.sapia.soto.util; 2 3 import org.sapia.soto.Env; 4 5 import java.io.File ; 6 import java.io.FileNotFoundException ; 7 import java.io.IOException ; 8 9 import javax.xml.transform.Source ; 10 import javax.xml.transform.TransformerException ; 11 import javax.xml.transform.URIResolver ; 12 import javax.xml.transform.stream.StreamSource ; 13 14 15 30 public class URIResolverImpl implements URIResolver { 31 private Env _env; 32 private URIResolver _parent; 33 34 public URIResolverImpl(Env env) { 35 _env = env; 36 } 37 38 public URIResolverImpl(Env env, URIResolver parent) { 39 _env = env; 40 _parent = parent; 41 } 42 43 46 public Source resolve(String href, String base) throws TransformerException { 47 try { 48 if (Utils.hasScheme(href)) { 49 return new StreamSource (_env.getResourceHandlerFor(Utils.getScheme(href)) 50 .getResource(href)); 51 } else { 52 String uri; 53 54 if (href == null) { 55 uri = base; 56 } else if (base == null) { 57 uri = href; 58 } else { 59 uri = base + File.separator + href; 60 } 61 62 return new StreamSource (_env.getResourceHandlerFor(uri).getResource(uri)); 63 } 64 } catch (FileNotFoundException e) { 65 if (_parent == null) { 66 throw new TransformerException ("Could not resolve URI: " + href, e); 67 } 68 69 return _parent.resolve(href, base); 70 } catch (IOException e) { 71 throw new TransformerException ("Could not resolve URI: " + href, e); 72 } 73 } 74 } 75 | Popular Tags |