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