in src/main/java/org/apache/sling/scriptingbundle/plugin/processor/ResourceTypeFolderPredicate.java [42:102]
public boolean test(Path folder) {
if (folder == null) {
return false;
}
Path lastSegment = folder.getFileName();
if (lastSegment == null) {
return false;
}
try {
Version.parseVersion(lastSegment.toString());
Path parent = folder.getParent();
if (parent != null) {
lastSegment = parent.getFileName();
}
} catch (IllegalArgumentException ignored) {
// last segment does not denote a version
}
String resourceTypeLabel;
if (lastSegment != null) {
String lastSegmentString = lastSegment.toString();
int lastDotIndex = lastSegmentString.lastIndexOf('.');
if (lastDotIndex != -1 && lastDotIndex < lastSegmentString.length() - 1) {
resourceTypeLabel = lastSegmentString.substring(++lastDotIndex);
} else {
resourceTypeLabel = lastSegmentString;
}
if (inContentPackage) {
resourceTypeLabel = PlatformNameFormat.getRepositoryPath(resourceTypeLabel);
}
try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(folder, Files::isRegularFile)) {
for (Path path : directoryStream) {
Path fileName = path.getFileName();
if (fileName != null) {
String childName = fileName.toString();
Script script = Script.parseScript(inContentPackage ? PlatformNameFormat.getRepositoryPath(childName) : childName);
if (
Constants.EXTENDS_FILE.equals(childName) ||
org.apache.jackrabbit.vault.util.Constants.DOT_CONTENT_XML.equals(childName) && new VaultContentXmlReader(path).getSlingResourceSuperType().isPresent() ||
(
script != null &&
(
resourceTypeLabel.equals(script.getName()) ||
(
script.getName() == null &&
(
"html".equals(script.getRequestExtension()) || "GET".equals(script.getRequestMethod())
)
)
)
)
) {
return true;
}
}
}
} catch (IOException e) {
logger.error(String.format("Could not check if folder %s denotes a resource type.", folder.toString()), e);
}
}
return false;
}