public A getAdapter()

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