private T convert()

in src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java [200:253]


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