Interface GatewayModuleHook

All Known Implementing Classes:
AbstractGatewayModuleHook, EventStreamGatewayHook, GatewayHook, HistorianGatewayHook, ReportingGatewayHook, SfcGatewayHook

public interface GatewayModuleHook
The main hook into a module's gateway scope. Each module should provide exactly one implementation of this hook class if the module includes gateway-scoped logic. The name of this implementation must be included in the module's descriptor file, with an entry like:

 <hook scope="G">com.example.module.gateway.SuperHookClass</hook>
 

Best practice: Instead of implementing this interface directly, subclass your hook class from AbstractGatewayModuleHook instead.

  • Method Details

    • setup

      void setup(GatewayContext context)
      Called before register. The module can create data structures, loggers, etc. The module should not reach out to other parts of the system and expect them to be ready or created yet.
    • startup

      void startup(LicenseState activationState)
      Called to initialize the module. Will only be called once. Persistence interface is available, but only in read-only mode.
    • shutdown

      void shutdown()
      Called to shutdown this module. Note that this instance will never be started back up - a new one will be created if a restart is desired
    • getRecordMigrationStrategies

      default List<IdbMigrationStrategy> getRecordMigrationStrategies()
      Returns:
      a list of migration strategies to run if a pre-8.3.0 internal database is found. This method will be called before setup(GatewayContext).
    • getExtensionPoints

      default List<? extends ExtensionPoint<?>> getExtensionPoints()
      Returns:
      a list of any extension points this module wants to add to any extension point systems. This list will be a mixed-type list. Extension point managers will filter through the list and find the types that they are interested in.
    • getRpcImplementation

      Optional<GatewayRpcImplementation> getRpcImplementation()
      Returns the RPC implementation for this module, if any. This is the recommended way to expose RPC functions to the Designer or Vision Client if required. The return value will be cached for the lifetime of the Gateway.
      See Also:
    • notifyLicenseStateChanged

      void notifyLicenseStateChanged(LicenseState licenseState)
      Notify module hook when the license state has changed. This could only contain changes for the module or it could contain a change to the platform license (version, restrictions such as expiration date, sqltag count...)
    • configureSerializer

      void configureSerializer(XMLSerializer serializer)
      Provides the module a chance to add serialization delegates to the serializer custom for classes that might be encountered when serializing objects provided by this module
    • configureDeserializer

      void configureDeserializer(XMLDeserializer deserializer)
      Provides the module a chance to configure the deserializer with any custom handlers
    • configureFunctionFactory

      void configureFunctionFactory(ExpressionFunctionManager factory)
      Provides the module with an opportunity to define its own expression functions
    • initializeScriptManager

      void initializeScriptManager(ScriptManager manager)
      Initialize a newly-instantiated script manager. This will be called exactly once for any given ScriptManager instance. Usually this will involve calling ScriptManager.addScriptModule(String, Object), which reflectively loads the public (instance and static) java functions from the given object into the scripting environment, at the provided path.

      This function may be called before startup(LicenseState), but never before setup(GatewayContext).

    • getMountedResourceFolder

      default Optional<String> getMountedResourceFolder()
      Returns:
      the path to a folder in one of the module's gateway jar files that should be mounted at /res/module-id/foldername
    • mountRouteHandlers

      default void mountRouteHandlers(RouteGroup routes)
      Provides a chance for the module to mount any route handlers it wants. These will be active at /main/data/module-id/* See RouteGroup for details. Will be called after startup().
    • getMountPathAlias

      default Optional<String> getMountPathAlias()
      Used by the mounting underneath /res/module-id/* and /data/module-id/* as an alternate mounting path instead of your module id, if present.
    • isFreeModule

      default boolean isFreeModule()
      Returns:
      true if this is a "free" module, i.e. it does not participate in the licensing system. This is equivalent to the now defunct FreeModule attribute that could be specified in module.xml.
    • isMakerEditionCompatible

      default boolean isMakerEditionCompatible()
      Returns:
      true if this module opts-in to participating in Ignition Maker Edition. Default is false. If you override this and return true, your module will become activated when running in a Maker Edition installation.
    • onMountedResourceRequest

      default void onMountedResourceRequest(String resourcePath, jakarta.servlet.http.HttpServletResponse response)
      Called prior to a 'mounted resource request' being fulfilled by requests to the mounted resource servlet serving resources from /res/module-id/ (or /res/alias/ if getMountPathAlias() is implemented). It is called after the target resource has been successfully located.

      Primarily intended as an opportunity to amend/alter the response's headers for purposes such as establishing Cache-Control. By default, Ignition sets no additional headers on a resource request.

      Parameters:
      resourcePath - path to the resource being returned by the mounted resource request
      response - the response to read/amend.