in src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/TagLibraryInfoImpl.java [451:508]
private TagFileInfo createTagFileInfo(TreeNode elem, String uri,
URL jarFileUrl) throws JasperException {
String name = null;
String path = null;
Iterator list = elem.findChildren();
while (list.hasNext()) {
TreeNode child = (TreeNode) list.next();
String tname = child.getName();
if ("name".equals(tname)) {
name = child.getBody();
} else if ("path".equals(tname)) {
path = child.getBody();
} else if ("example".equals(tname)) {
// Ignore <example> element: Bugzilla 33538
} else if ("tag-extension".equals(tname)) {
// Ignore <tag-extension> element: Bugzilla 33538
} else if ("icon".equals(tname)
|| "display-name".equals(tname)
|| "description".equals(tname)) {
// Ignore these elements: Bugzilla 38015
} else {
if (log.isWarnEnabled()) {
log.warn(Localizer.getMessage(
"jsp.warning.unknown.element.in.tagfile", tname));
}
}
}
if (path.startsWith("/META-INF/tags")) {
// Tag file packaged in JAR
if ( jarFileUrl != null ) {
ctxt.setTagFileJarUrl(path, jarFileUrl);
} else {
final URL baseUrl = ctxt.getOptions().getTldLocationsCache().getTldLocationURL(uri);
if ( baseUrl != null ) {
final String baseUrlStr = baseUrl.toString();
final int index = baseUrlStr.indexOf("/META-INF/");
if ( index != -1 ) {
URL finalUrl;
try {
finalUrl = new URL(baseUrlStr.substring(0, index) + path);
ctxt.setTagFileUrl(path, finalUrl);
} catch (MalformedURLException e) {
// we ignore this
}
}
}
}
} else if (!path.startsWith("/WEB-INF/tags")) {
err.jspError("jsp.error.tagfile.illegalPath", path);
}
TagInfo tagInfo = TagFileProcessor.parseTagFileDirectives(
parserController, name, path, this);
return new TagFileInfo(name, path, tagInfo);
}