private List initRequiredProviders()

in src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java [67:139]


    private List<RequiredProvider> initRequiredProviders(
            Set<String> requiredResourceProviderNames, Set<String> requiredResourceProvidersLegacy) {

        boolean hasLegacyRequiredProvider = false;
        if (requiredResourceProvidersLegacy != null) {
            hasLegacyRequiredProvider =
                    requiredResourceProvidersLegacy.remove(ResourceResolverFactoryConfig.LEGACY_REQUIRED_PROVIDER_PID);
            if (!requiredResourceProvidersLegacy.isEmpty()) {
                LOG.error(
                        "ResourceResolverFactory is using deprecated required providers configuration "
                                + "(resource.resolver.required.providers). Please change to use the property "
                                + "resource.resolver.required.providernames for values: {}",
                        requiredResourceProvidersLegacy);
            } else {
                requiredResourceProvidersLegacy = null;
            }
        }

        if (hasLegacyRequiredProvider) {
            if (requiredResourceProviderNames == null) {
                requiredResourceProviderNames = new HashSet<>();
            }

            // add default if not already present
            final boolean hasRequiredProvider =
                    !requiredResourceProviderNames.add(ResourceResolverFactoryConfig.REQUIRED_PROVIDER_NAME);
            if (hasRequiredProvider) {
                LOG.warn(
                        "ResourceResolverFactory is using deprecated required providers configuration "
                                + "(resource.resolver.required.providers) with value '{}'. Please remove this configuration "
                                + "property. '{}' is already contained in the property resource.resolver.required.providernames.",
                        ResourceResolverFactoryConfig.LEGACY_REQUIRED_PROVIDER_PID,
                        ResourceResolverFactoryConfig.REQUIRED_PROVIDER_NAME);
            } else {
                LOG.warn(
                        "ResourceResolverFactory is using deprecated required providers configuration "
                                + "(resource.resolver.required.providers) with value '{}'. Please remove this configuration "
                                + "property and add '{}' to the property resource.resolver.required.providernames.",
                        ResourceResolverFactoryConfig.LEGACY_REQUIRED_PROVIDER_PID,
                        ResourceResolverFactoryConfig.REQUIRED_PROVIDER_NAME);
            }
        }

        final List<RequiredProvider> rps = new ArrayList<>();
        if (requiredResourceProvidersLegacy != null) {
            final Logger logger = LoggerFactory.getLogger(getClass());
            for (final String value : requiredResourceProvidersLegacy) {
                RequiredProvider rp = new RequiredProvider();

                if (value.startsWith("(")) {
                    try {
                        rp.filter = FrameworkUtil.createFilter(value);
                    } catch (final InvalidSyntaxException e) {
                        logger.warn("Ignoring invalid filter syntax for required provider: " + value, e);
                        rp = null;
                    }
                } else {
                    rp.pid = value;
                }
                if (rp != null) {
                    rps.add(rp);
                }
            }
        }
        if (requiredResourceProviderNames != null) {
            for (final String value : requiredResourceProviderNames) {
                final RequiredProvider rp = new RequiredProvider();
                rp.name = value;
                rps.add(rp);
            }
        }
        return rps;
    }