pathNameRelativeToRoot = child.getPathNameRelativeTo(deploymentRoot);
} catch (IllegalArgumentException e) {
throw new DeploymentUnitProcessingException(UndertowLogger.ROOT_LOGGER.tldFileNotContainedInRoot(child.getPathName(),
deploymentRoot.getPathName()), e);
}
final TldMetaData value = parseTLD(child);
value.setUri(tld.getTaglibUri());
uniqueTlds.add(value);
String key = "/" + pathNameRelativeToRoot;
if (!tlds.containsKey(key)) {
tlds.put(key, value);
}
if (!tlds.containsKey(tld.getTaglibUri())) {
tlds.put(tld.getTaglibUri(), value);
}
found = true;
break;
}
}
if (!found) {
//todo: internataitonalization
UndertowLogger.ROOT_LOGGER.errorf("Could not find tld %s", tld.getTaglibLocation());
}
}
}
// TLDs are located in WEB-INF or any subdir (except the top level "classes" and "lib")
// and in JARs from WEB-INF/lib, in META-INF or any subdir
List<ResourceRoot> resourceRoots = deploymentUnit.getAttachmentList(Attachments.RESOURCE_ROOTS);
for (ResourceRoot resourceRoot : resourceRoots) {
if (resourceRoot.getRoot().getName().toLowerCase(Locale.ENGLISH).endsWith(".jar")) {
VirtualFile webFragment = resourceRoot.getRoot().getChild(META_INF);
if (webFragment.exists() && webFragment.isDirectory()) {
processTlds(deploymentRoot, webFragment.getChildren(), tlds, uniqueTlds);
}
}
}
VirtualFile webInf = deploymentRoot.getChild(WEB_INF);
if (webInf.exists() && webInf.isDirectory()) {
for (VirtualFile file : webInf.getChildren()) {
if (file.isFile() && file.getName().toLowerCase(Locale.ENGLISH).endsWith(TLD)) {
String pathNameRelativeToRoot;
try {
pathNameRelativeToRoot = file.getPathNameRelativeTo(deploymentRoot);
} catch (IllegalArgumentException e) {
throw new DeploymentUnitProcessingException(UndertowLogger.ROOT_LOGGER.tldFileNotContainedInRoot(file.getPathName(),
deploymentRoot.getPathName()), e);
}
final TldMetaData value = parseTLD(file);
uniqueTlds.add(value);
String key = "/" + pathNameRelativeToRoot;
if (!tlds.containsKey(key)) {
tlds.put(key, value);
}