in src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java [188:233]
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);
}