in src/main/java/org/apache/sling/models/impl/AdapterImplementations.java [251:277]
public void registerModelToResourceType(final Bundle bundle, final String resourceType, final Class<?> adaptableType, final Class<?> clazz) {
if (resourceType.startsWith("/")) {
log.warn("Registering model class {} for adaptable {} with absolute resourceType {}." ,
new Object[] { clazz, adaptableType, resourceType });
}
ConcurrentMap<String, Class<?>> map;
ConcurrentMap<Bundle, List<String>> resourceTypeRemovalLists;
if (adaptableType == Resource.class) {
map = resourceTypeMappingsForResources;
resourceTypeRemovalLists = resourceTypeRemovalListsForResources;
} else if (adaptableType == SlingHttpServletRequest.class) {
map = resourceTypeMappingsForRequests;
resourceTypeRemovalLists = resourceTypeRemovalListsForRequests;
} else {
log.warn("Found model class {} with resource type {} for adaptable {}. Unsupported type for resourceType binding.",
new Object[] { clazz, resourceType, adaptableType });
return;
}
Class<?> existingMapping = map.putIfAbsent(resourceType, clazz);
if (existingMapping == null) {
resourceTypeRemovalLists.putIfAbsent(bundle, new CopyOnWriteArrayList<String>());
resourceTypeRemovalLists.get(bundle).add(resourceType);
} else {
log.warn("Skipped registering {} for resourceType {} under adaptable {} because of existing mapping to {}",
new Object[] { clazz, resourceType, adaptableType, existingMapping });
}
}