Interface IPluginFormResources

All Superinterfaces:
IFCPlugin, IFCRemoteSyncPlugin, INamedUiElement, INameProviding, ITransferable, Serializable

public interface IPluginFormResources extends IFCPlugin, IFCRemoteSyncPlugin
Interface for plugins that wish to add additional frontend resources that are available for web forms. Allows a single plugin to provide any number of resources, either static files or dynamically computed files.

Due to legacy compatibility, all methods are default methods with a dummy implementation. You need to override findResources(params) and findResourceByFileName(fileName). Override findResources to provide a list of resources that should be included (automatically) in a form or a template. The parameters include the form and form version, so you can return different resources depending on the form or its configuration. Override findResourceByFileName to locate the resource data for a given file name (e.g. when the resource is requested via an HTTP endpoint).

Note: Plugins of this type must expect to be executed on a frontend server, i.e. when no classes from the master server are available, such as the DAO provider for accessing the database. If you need to access the database, you must use the APIProvider to request data from the master server.

Since:
8.3.0
Author:
XIMA MEDIA GmbH
  • Method Details

    • getResources

      Gets all resources that this plugin wishes to provide. The resources should depend only on these parameters, as the resources may get cached.

      The resources are returned as a map, where the map key is the value of IPluginFormResourceDescriptor.getFileName().

      Parameters:
      params - Parameters for obtaining the resources.
      Returns:
      A map of resource descriptors for the resources that this plugin wishes to provide, with the file name as a map key.
      Throws:
      RuntimeException - This method should never throw an exception. But if it does, the behavior depends on the context. When a form is rendered, the exception will be caught and logged, but otherwise ignored. The form will still be rendered, albeit without the resources from this plugin. When a specific resource is requested via the HTTP endpoint, the HTTP endpoint will return an appropriate HTTP status code, such as 500.
    • findResources

      default Iterable<? extends IPluginFormResourceDescriptor> findResources(IPluginFormResourcesFindParams params)
      Gets all resources that this plugin wishes to include. All resources returned by this method are included automatically, depending on descriptor.isIncludeInForm() and descriptor.isIncludeInTemplate(). The method findResourceByFileName must be able to locate all resources returned by this method via their file name. In addition, it may also be able to locate additional files that are not returned by this method. This is helpful, for example, when you wish to provide e.g. a CSS file that references another file (such as an image, a font, or another CSS file).

      This method is given a set of parameters, the resources should depend only on these parameters, as the resources may get cached.

      This method should never return null. The default implementation returns null for backward compatibility: getResources() will be called if this method returns null.

      Parameters:
      params - Parameters for obtaining the resources.
      Returns:
      All resources that this plugin wishes to provide.
      Throws:
      RuntimeException - This method should never throw an exception. But if it does, the behavior depends on the context. When a form is rendered, the exception will be caught and logged, but otherwise ignored. The form will still be rendered, albeit without the resources from this plugin. When a specific resource is requested via the HTTP endpoint, the HTTP endpoint will return an appropriate HTTP status code, such as 500.
      Since:
      8.5.1
    • findResourceByFileName

      default IPluginFormResourceDescriptor findResourceByFileName(String fileName)
      Finds the resource with the given file name among the resources that this plugin provides. This method is given one of the file names of the resource descriptors as returned by findResources(). This method should return the resource with the given file name, or null if this plugin does not provide a resource with the given file name.

      This method must be able to locate all resources returned by findResources method via their file name. In addition, it may also be able to locate additional files that are not returned by that method. This is helpful, for example, when you wish to provide e.g. a CSS file that references another file (such as an image, a font, or another CSS file).

      Parameters:
      fileName - The file name of the resource to find.
      Returns:
      The resource with the given file name, or null if not found.
      Since:
      8.5.1