in src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java [89:113]
public <A> A getAdapter(@NotNull final Object adaptable, @NotNull final Class<A> type) {
final Resource resource = (Resource) adaptable;
final String path = resource.getPath();
final String extension = path.substring(path.lastIndexOf('.') + 1);
final List<ScriptEngine> engines = scriptEngineManager.getEnginesByExtension(extension);
final ScriptEngine engine;
if (engines.isEmpty()) {
return null;
} else if (engines.size() == 1) {
engine = engines.get(0);
} else {
engine = scriptEnginePicker.pickScriptEngine(engines, resource, extension);
}
if (engine != null) {
final Collection<BindingsValuesProvider> bindingsValuesProviders =
bindingsValuesProviderTracker.getBindingsValuesProviders(engine.getFactory(), BINDINGS_CONTEXT);
// unchecked cast
return (A) new DefaultSlingScript(
this.bundleContext, resource, engine, bindingsValuesProviders, this.serviceCache, scriptCache);
}
return null;
}