public ConfigurationData getConfiguration()

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;
    }