in src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java [86:125]
public final Collection<Resource> getServlets(
final ResourceResolver resolver, final List<String> scriptExtensions) {
final SortedSet<WeightedResource> resources = new TreeSet<>((o1, o2) -> {
String o1Parent = ResourceUtil.getParent(o1.getPath());
String o2Parent = ResourceUtil.getParent(o2.getPath());
if (o1Parent != null && o2Parent != null && o1Parent.equals(o2Parent)) {
String o1ScriptName = o1.getName();
String o2ScriptName = o2.getName();
String o1Extension = getScriptExtension(o1ScriptName);
String o2Extension = getScriptExtension(o2ScriptName);
if (o1Extension != null && o2Extension != null && !o1Extension.isEmpty() && !o2Extension.isEmpty()) {
String o1ScriptWithoutExtension =
o1ScriptName.substring(0, o1ScriptName.lastIndexOf("." + o1Extension));
String o2ScriptWithoutExtension =
o2ScriptName.substring(0, o2ScriptName.lastIndexOf("." + o2Extension));
if (o1ScriptWithoutExtension.equals(o2ScriptWithoutExtension)) {
int o1ExtensionIndex = scriptExtensions.indexOf(o1Extension);
int o2ExtensionIndex = scriptExtensions.indexOf(o2Extension);
if (o1ExtensionIndex == o2ExtensionIndex || o1ExtensionIndex == -1 || o2ExtensionIndex == -1) {
return o1.compareTo(o2);
} else if (o1ExtensionIndex > o2ExtensionIndex) {
return -1;
} else {
return 1;
}
}
}
}
return o1.compareTo(o2);
});
List<Resource> locations = LocationCollector.getLocations(
resourceType, resourceSuperType, baseResourceType, resolver, this.useResourceCaching);
locations.forEach(locationRes -> getWeightedResources(resources, locationRes));
List<Resource> result = new ArrayList<>(resources.size());
result.addAll(resources);
return result;
}