public Collection getBindingsValuesProviders()

in src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java [143:182]


    public Collection<BindingsValuesProvider> getBindingsValuesProviders(
            ScriptEngineFactory scriptEngineFactory,
            String context) {
        final List<BindingsValuesProvider> results = new ArrayList<>();
        if(context == null) {
            context = DEFAULT_CONTEXT;
        }
        final ContextBvpCollector bvpc = customizers.get(context);
        if(bvpc == null) {
            logger.debug("no BindingsValuesProviderCustomizer available for context '{}'", context);
            return results;
        }

        results.addAll(bvpc.getGenericBindingsValuesProviders().values());
        logger.debug("Generic BindingsValuesProviders added for engine {}: {}", scriptEngineFactory.getNames(), results);

        // we load the compatible language ones first so that the most specific
        // overrides these
        final Map<String, Object> factoryProperties = scriptEngineManager.getServiceProperties(scriptEngineFactory);
        if (factoryProperties != null) {
            String[] compatibleLangs = PropertiesUtil.toStringArray(factoryProperties.get("compatible.javax.script.name"), new String[0]);
            for (final String name : compatibleLangs) {
                final Map<ServiceReference<?>, BindingsValuesProvider> langProviders = bvpc.getLangBindingsValuesProviders().get(name);
                if (langProviders != null) {
                    results.addAll(langProviders.values());
                }
            }
            logger.debug("Compatible BindingsValuesProviders added for engine {}: {}", scriptEngineFactory.getNames(), results);
        }

        for (final String name : scriptEngineFactory.getNames()) {
            final Map<ServiceReference<?>, BindingsValuesProvider> langProviders = bvpc.getLangBindingsValuesProviders().get(name);
            if (langProviders != null) {
                results.addAll(langProviders.values());
            }
        }
        logger.debug("All BindingsValuesProviders added for engine {}: {}", scriptEngineFactory.getNames(), results);

        return results;
    }