in src/main/java/org/apache/sling/models/impl/AdapterImplementations.java [302:328]
protected static Class<?> getModelClassForResource(final Resource resource, final Map<String, Class<?>> map) {
if (resource == null) {
return null;
}
ResourceResolver resolver = resource.getResourceResolver();
final String originalResourceType = resource.getResourceType();
Class<?> modelClass = getClassFromResourceTypeMap(originalResourceType, map, resolver);
if (modelClass != null) {
return modelClass;
} else {
String resourceType = resolver.getParentResourceType(resource);
while (resourceType != null) {
modelClass = getClassFromResourceTypeMap(resourceType, map, resolver);
if (modelClass != null) {
return modelClass;
} else {
resourceType = resolver.getParentResourceType(resourceType);
}
}
Resource resourceTypeResource = resolver.getResource(originalResourceType);
if (resourceTypeResource != null && !resourceTypeResource.getPath().equals(resource.getPath())) {
return getModelClassForResource(resourceTypeResource, map);
} else {
return null;
}
}
}