KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > soto > util > URIResolverImpl


1 package org.sapia.soto.util;
2
3 import org.sapia.soto.Env;
4
5 import java.io.File JavaDoc;
6 import java.io.FileNotFoundException JavaDoc;
7 import java.io.IOException JavaDoc;
8
9 import javax.xml.transform.Source JavaDoc;
10 import javax.xml.transform.TransformerException JavaDoc;
11 import javax.xml.transform.URIResolver JavaDoc;
12 import javax.xml.transform.stream.StreamSource JavaDoc;
13
14
15 /**
16  * Implements JAXP's <code>URIResolver</code> over an
17  * <code>Env</code> instance.
18  *
19  * @see org.sapia.soto.Env
20  * @see org.sapia.soto.Env#getResourceHandlerFor(String)
21  * @see org.sapia.soto.Env#registerResourceHandler(String, ResourceHandler)
22  *
23  * @author Yanick Duchesne
24  * <dl>
25  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2003 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
26  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
27  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
28  * </dl>
29  */

30 public class URIResolverImpl implements URIResolver JavaDoc {
31   private Env _env;
32   private URIResolver JavaDoc _parent;
33
34   public URIResolverImpl(Env env) {
35     _env = env;
36   }
37
38   public URIResolverImpl(Env env, URIResolver JavaDoc parent) {
39     _env = env;
40     _parent = parent;
41   }
42
43   /**
44    * @see javax.xml.transform.URIResolver#resolve(java.lang.String, java.lang.String)
45    */

46   public Source JavaDoc resolve(String JavaDoc href, String JavaDoc base) throws TransformerException JavaDoc {
47     try {
48       if (Utils.hasScheme(href)) {
49         return new StreamSource JavaDoc(_env.getResourceHandlerFor(Utils.getScheme(href))
50                                     .getResource(href));
51       } else {
52         String JavaDoc 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 JavaDoc(_env.getResourceHandlerFor(uri).getResource(uri));
63       }
64     } catch (FileNotFoundException JavaDoc e) {
65       if (_parent == null) {
66         throw new TransformerException JavaDoc("Could not resolve URI: " + href, e);
67       }
68
69       return _parent.resolve(href, base);
70     } catch (IOException JavaDoc e) {
71       throw new TransformerException JavaDoc("Could not resolve URI: " + href, e);
72     }
73   }
74 }
75
Popular Tags