1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
/** The protocol name for the servlet context URIs. */
public static final String SERVLET_CONTEXT_PROTOCOL = "servlet-context:";
public static final String IMAGE_PROTOCOL = "images:";
//....
public Source resolve(String href, String base) throws TransformerException {
if (href.startsWith(SERVLET_CONTEXT_PROTOCOL)) {
return resolveServletContextURI(href.substring(SERVLET_CONTEXT_PROTOCOL.length()));
}
if (href.startsWith(SERVLET_CONTEXT_PROTOCOL)) {
return resolveImageURI(href.substring(SERVLET_CONTEXT_PROTOCOL.length()));
} else {
if (base != null
&& base.startsWith(SERVLET_CONTEXT_PROTOCOL)
&& (href.indexOf(':') < 0)) {
String abs = base + href;
return resolveServletContextURI(
abs.substring(SERVLET_CONTEXT_PROTOCOL.length()));
} else if (base != null
&& base.startsWith(IMAGE_PROTOCOL)
&& (href.indexOf(':') < 0)) {
String abs = base + href;
return resolveImageURI(
abs.substring(IMAGE_PROTOCOL.length()));
} else {
return null;
}
}
}
protected Source resolveImageURI(String path) throws TransformerException {
while (path.startsWith("//")) {
path = path.substring(1);
}
try {
URL url = baseURLDuDossierImageAStockerQuelquePart.resolve(path);
InputStream in = url.openStream();
if (in != null) {
return new StreamSource(in);
} else {
throw new TransformerException("Resource does not exist. \"" + path
+ "\" is not accessible through the servlet context.");
}
} catch (MalformedURLException mfue) {
throw new TransformerException(
"Error accessing resource using servlet context: " + path, mfue);
}
} |