in src/main/java/org/apache/sling/resourcemerger/impl/picker/SearchPathBasedResourcePicker.java [60:94]
public List<Resource> pickResources(final ResourceResolver resolver, final String relativePath,
final Resource relatedResource) {
List<Resource> relatedMappedResources = null;
if (relatedResource instanceof MergedResource) {
relatedMappedResources = ((MergedResource) relatedResource).getMergedResources();
// Check if the path is the same
if (relatedResource.getPath().equals(mergeRootPath + '/' + relativePath)) {
return relatedMappedResources;
}
}
final List<Resource> resources = new ArrayList<>();
final String[] searchPaths = resolver.getSearchPath();
for (int i = searchPaths.length - 1; i >= 0; i--) {
final String basePath = searchPaths[i];
final String fullPath = basePath + relativePath;
int baseIndex = resources.size();
Resource baseResource = null;
if (relatedMappedResources != null && relatedMappedResources.size() > baseIndex) {
baseResource = relatedMappedResources.get(baseIndex);
}
Resource resource = (baseResource != null) ? getFromBaseResource(resolver, baseResource, fullPath) : null;
if (resource == null) {
resource = resolver.getResource(fullPath);
if (resource == null) {
resource = new NonExistingResource(resolver, fullPath);
}
}
resources.add(resource);
}
return resources;
}