public ConfigurationData getConfiguration()

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