in src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java [922:947]
private Object getAdaptable(Object adaptable, InjectableElement point, InjectAnnotationProcessor processor) {
String viaValue = null;
Class<? extends ViaProviderType> viaProviderType = null;
if (processor != null) {
viaValue = processor.getVia();
viaProviderType = BeanProperty.class; // processors don't support via provider type
}
if (StringUtils.isBlank(viaValue)) {
viaValue = point.getVia();
viaProviderType = point.getViaProviderType();
}
if (viaProviderType == null || viaValue == null) {
return adaptable;
}
ViaProvider viaProvider = viaProviders.get(viaProviderType);
if (viaProvider == null) {
log.error("Unable to find Via provider type {}.", viaProviderType);
return null;
}
final Object viaResult = viaProvider.getAdaptable(adaptable, viaValue);
if (viaResult == ViaProvider.ORIGINAL) {
return adaptable;
} else {
return viaResult;
}
}