public Object addingService()

in src/main/java/org/apache/sling/scripting/core/impl/ContextBvpCollector.java [59:79]


    public Object addingService(final ServiceReference<?> ref) {
        final String[] engineNames = PropertiesUtil
                .toStringArray(ref.getProperty(ScriptEngine.NAME), new String[0]);
        Object service = bundleContext.getService(ref);
        if (service != null) {
            if (service instanceof Map) {
                service = new MapWrappingBindingsValuesProvider((Map<String, Object>) service);
            }
            if (engineNames.length == 0) {
                genericBindingsValuesProviders.put(ref, (BindingsValuesProvider) service);
            } else if (engineNames.length == 1 && ANY_ENGINE.contains(engineNames[0].toUpperCase())) {
                genericBindingsValuesProviders.put(ref, (BindingsValuesProvider) service);
            } else {
                for (String engineName : engineNames) {
                    Map<ServiceReference<?>, BindingsValuesProvider> langProviders = langBindingsValuesProviders.computeIfAbsent(engineName, k -> new ConcurrentSkipListMap<>());
                    langProviders.put(ref, (BindingsValuesProvider) service);
                }
            }
        }
        return service;
    }