in src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java [200:253]
private <T> T convert(
final Iterator<Resource> resourceInhertianceChain,
final Class<T> clazz,
final Converter<T> converter,
final String name,
final boolean isCollection) {
Resource configResource = null;
String conversionName = name;
if (resourceInhertianceChain != null) {
ResettableListIterator resettableResourceInhertianceChain =
new ListIteratorWrapper(resourceInhertianceChain);
// apply persistence transformation
Iterator<Resource> transformedResources =
IteratorUtils.transformedIterator(resettableResourceInhertianceChain, new Transformer() {
@Override
public Object transform(Object input) {
if (isCollection) {
return configurationPersistenceStrategy.getCollectionItemResource((Resource) input);
} else {
return configurationPersistenceStrategy.getResource((Resource) input);
}
}
});
// apply resource inheritance
configResource = configurationInheritanceStrategy.getResource(transformedResources);
// apply overrides
configResource = configurationOverrideMultiplexer.overrideProperties(
contentResource.getPath(), name, configResource, contentResource.getResourceResolver());
// build name
if (isCollection) {
// get untransformed resource for getting collection item name
resettableResourceInhertianceChain.reset();
Resource untransformedConfigResource =
configurationInheritanceStrategy.getResource(resettableResourceInhertianceChain);
if (untransformedConfigResource != null && configResource != null) {
conversionName = configurationPersistenceStrategy.getCollectionParentConfigName(
conversionName, configResource.getPath())
+ "/" + untransformedConfigResource.getName();
}
}
}
if (log.isTraceEnabled() && configResource != null) {
log.trace("+ Found config resource for context path " + contentResource.getPath() + ": "
+ configResource.getPath() + " " + MapUtil.traceOutput(configResource.getValueMap()));
}
// if no config resource found still check for overrides
if (configResource == null && contentResource != null) {
configResource = configurationOverrideMultiplexer.overrideProperties(
contentResource.getPath(), name, (Resource) null, contentResource.getResourceResolver());
}
return converter.convert(configResource, clazz, conversionName, isCollection);
}