Package org.apache.sling.scripting.spi.bundle

# Interface BundledRenderUnit

@ConsumerType public interface BundledRenderUnit

A `BundledRenderUnit` represents a pre-packaged script or precompiled script (Java class) that will be executed in order to render a `HttpServletRequest`.

The `BundledRenderUnit` provider module is responsible for defining how a unit is executed. However, when executing the unit in the context of a `ScriptEngine`, the provider module should add the current executing unit into the `ScriptEngine`'s `ScriptContext` using the `VARIABLE` key.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`VARIABLE`
The variable available in the `Bindings` associated to a `HttpServletRequest` if that request is served by a `BundledRenderUnit`.

## Method Summary

Modifier and Type
Method
Description
`default void`
`eval(@NotNull jakarta.servlet.http.HttpServletRequest request, @NotNull jakarta.servlet.http.HttpServletResponse response)`
This method will execute / evaluate the wrapped script or precompiled script with the given request.
`void`
`eval(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`
Deprecated.
use `eval(HttpServletRequest, HttpServletResponse)` instead
`@NotNull org.osgi.framework.Bundle`
`getBundle()`
Returns the `Bundle` the publishing bundle of this unit (not to be confused with the provider module, which is the module that instantiates a `BundledRenderUnit`).
`@NotNull org.osgi.framework.BundleContext`
`getBundleContext()`
Returns the `BundleContext` to use for this unit.
`default @Nullable InputStream`
`getInputStream()`
This method will return an input stream if `this` unit is backed by a script that can be interpreted.
`@NotNull String`
`getName()`
Returns the name of `this BundledRenderUnit`.
`@NotNull String`
`getPath()`
Returns the path of this executable in the resource type hierarchy.
`<T> T`
`getService(@NotNull String className)`
Retrieves an OSGi runtime dependency of the wrapped script identified by the passed `className` parameter.
`<T> @Nullable T[]`
`getServices(@NotNull String className, @Nullable String filter)`
Retrieves multiple instances of an OSGi runtime dependency of the wrapped script identified by the passed `className` parameter, filtered according to the passed `filter`.
`@NotNull Set<TypeProvider>`
`getTypeProviders()`
Returns the `Set` of `TypeProvider`s which are related to this unit.
`default @Nullable Object`
`getUnit()`
In case this `BundledRenderUnit` wraps a precompiled script, this method will return an instance of that object.

## Field Details

### VARIABLE

static final String VARIABLE
The variable available in the `Bindings` associated to a `HttpServletRequest` if that request is served by a `BundledRenderUnit`.

## Method Details

### getUnit

@Nullable default @Nullable Object getUnit()
In case this `BundledRenderUnit` wraps a precompiled script, this method will return an instance of that object.

Returns:
  a precompiled unit, if `this` unit wraps a precompiled script; `null` otherwise

### getName

@NotNull @NotNull String getName()
Returns the name of `this BundledRenderUnit`. This can be the name of the wrapped script or precompiled script.

Returns:
  the name `this BundledRenderUnit`

### getBundle

@NotNull @NotNull org.osgi.framework.Bundle getBundle()
Returns the `Bundle` the publishing bundle of this unit (not to be confused with the provider module, which is the module that instantiates a `BundledRenderUnit`). This method can be useful for getting an instance of the bundle's classloader, when needed to load dependencies at run-time. To do so the following code example can help:

     Bundle bundle = bundledRenderUnit.getBundle();
     Classloader bundleClassloader = bundle.adapt(BundleWiring.class).getClassLoader();

Returns:
  the bundle providing this unit

### getBundleContext

@NotNull @NotNull org.osgi.framework.BundleContext getBundleContext()
Returns the `BundleContext` to use for this unit. This method can be useful for getting an instance of the publishing bundle's context, when needed to load dependencies at run-time.

Returns:
  the bundle context of the bundle publishing this unit

### getTypeProviders

@NotNull @NotNull Set<TypeProvider> getTypeProviders()
Returns the `Set` of `TypeProvider`s which are related to this unit.

Returns:
  the set of providers; if the unit doesn't have any inheritance chains, then the set will contain only one `TypeProvider`

### getService

@Nullable <T> T getService(@NotNull @NotNull String className)
Retrieves an OSGi runtime dependency of the wrapped script identified by the passed `className` parameter.

Type Parameters:
  `T` - the expected service type
Parameters:
  `className` - the fully qualified class name
Returns:
  an instance of the `BundledRenderUnit` or `null`

### getServices

@Nullable <T> @Nullable T[] getServices(@NotNull @NotNull String className, @Nullable @Nullable String filter)
Retrieves multiple instances of an OSGi runtime dependency of the wrapped script identified by the passed `className` parameter, filtered according to the passed `filter`.

Type Parameters:
  `T` - the expected service type
Parameters:
  `className` - the fully qualified class name
  `filter` - a filter expression or `null` if all the instances should be returned; for more details about the `filter`'s syntax check `BundleContext.getServiceReferences(String, String)`
Returns:
  an instance of the `BundledRenderUnit` or `null`

### getPath

@NotNull @NotNull String getPath()
Returns the path of this executable in the resource type hierarchy. The path can be relative to the search paths or absolute.

Returns:
  the path of this executable in the resource type hierarchy

### eval

default void eval(@NotNull @NotNull jakarta.servlet.http.HttpServletRequest request, @NotNull @NotNull jakarta.servlet.http.HttpServletResponse response) throws ScriptException
This method will execute / evaluate the wrapped script or precompiled script with the given request.

Parameters:
  `request` - the request
  `response` - the response
Throws:
  `ScriptException` - if the execution leads to an error
Since:
  1.1.0

### eval

void eval(@NotNull javax.servlet.http.HttpServletRequest request, @NotNull javax.servlet.http.HttpServletResponse response) throws ScriptException
Deprecated.
use `eval(HttpServletRequest, HttpServletResponse)` instead
This method will execute / evaluate the wrapped script or precompiled script with the given request.

Parameters:
  `request` - the request
  `response` - the response
Throws:
  `ScriptException` - if the execution leads to an error

### getInputStream

@Nullable default @Nullable InputStream getInputStream()
This method will return an input stream if `this` unit is backed by a script that can be interpreted.

Returns:
  an `InputStream` providing the source code of the backing script; if `this` unit is backed by a precompiled script (essentially a Java class), then this method will return `null`