in src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImpl.java [84:141]
public ConfigurationData getConfiguration(@NotNull Resource resource, @NotNull String configName) {
ConfigNameUtil.ensureValidConfigName(configName);
if (log.isDebugEnabled()) {
log.debug("Get configuration for context path {}, name '{}'", resource.getPath(), configName);
}
ConfigurationMetadata configMetadata = getConfigurationMetadata(configName);
Resource configResource = null;
Iterator<Resource> configResourceInheritanceChain = configurationResourceResolvingStrategy
.getResourceInheritanceChain(resource, configurationResourceResolverConfig.configBucketNames(), configName);
if (configResourceInheritanceChain != null) {
ResettableIterator resettableConfigResourceInheritanceChain = new ListIteratorWrapper(configResourceInheritanceChain);
configResource = applyPersistenceAndInheritance(resource.getPath(), configName, resettableConfigResourceInheritanceChain, false, resource.getResourceResolver());
if (configResource != null) {
// get writeback resource for "reverse inheritance detection"
Resource writebackConfigResource = null;
String writebackConfigResourcePath = null;
for (String configBucketName : configurationResourceResolverConfig.configBucketNames()) {
writebackConfigResourcePath = configurationResourceResolvingStrategy.getResourcePath(resource, configBucketName, configName);
if (writebackConfigResourcePath != null) {
writebackConfigResource = resource.getResourceResolver().getResource(writebackConfigResourcePath);
if (writebackConfigResource != null) {
writebackConfigResource = configurationPersistenceStrategy.getResource(writebackConfigResource);
break;
}
}
}
if (log.isTraceEnabled()) {
log.trace("+ Found config resource for context path " + resource.getPath() + ": " + configResource.getPath() + " "
+ MapUtil.traceOutput(configResource.getValueMap()) + ", "
+ "writeback config resource: " + writebackConfigResourcePath);
}
resettableConfigResourceInheritanceChain.reset();
return new ConfigurationDataImpl(configMetadata, configResource, writebackConfigResource,
applyPersistence(resettableConfigResourceInheritanceChain, false),
resource, configName, this, configurationManagementSettings,
configurationOverrideMultiplexer, configurationPersistenceStrategy, false, null);
}
}
if (configMetadata != null) {
// if no config resource found still check for overrides
configResource = configurationOverrideMultiplexer.overrideProperties(resource.getPath(), configName, (Resource)null, resource.getResourceResolver());
if (configResource != null) {
return new ConfigurationDataImpl(configMetadata, configResource, null, null,
resource, configName, this, configurationManagementSettings,
configurationOverrideMultiplexer, configurationPersistenceStrategy, false, null);
}
// if no config resource found but config metadata exist return empty config data with default values
return new ConfigurationDataImpl(configMetadata,
resource, configName, this, configurationManagementSettings,
configurationOverrideMultiplexer, configurationPersistenceStrategy, false);
}
return null;
}