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 String VARIABLE
      The variable available in the Bindings associated to a HttpServletRequest if that request is served by a BundledRenderUnit.
    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      void eval​(@NotNull javax.servlet.http.HttpServletRequest request, @NotNull javax.servlet.http.HttpServletResponse response)
      This method will execute / evaluate the wrapped script or precompiled script with the given request.
      @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 TypeProviders 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 Detail

      • VARIABLE

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

      • 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 TypeProviders 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

        void eval​(@NotNull
                  @NotNull javax.servlet.http.HttpServletRequest request,
                  @NotNull
                  @NotNull javax.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
      • 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