in src/main/java/org/apache/sling/scripting/core/impl/ContextBvpCollector.java [61:83]
public Object addingService(final ServiceReference<?> ref) {
final String[] engineNames = Converters.standardConverter()
.convert(ref.getProperty(ScriptEngine.NAME))
.to(String[].class);
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;
}