in src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImpl.java [90:184]
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;
}