Package io.jawk.ext

Class ExtensionRegistry

java.lang.Object
io.jawk.ext.ExtensionRegistry

public final class ExtensionRegistry extends Object
Registry used by extensions and the CLI to expose ready-to-use extension factories.

Extensions carry per-engine runtime state (interpreter, JRT), so resolve(String) returns a fresh instance for factory-registered extensions — never a shared one. Instances registered through register(String, JawkExtension) are returned as-is; sharing them across engines is the caller's responsibility.

  • Method Details

    • register

      public static void register(String name, JawkExtension extension)
      Registers an extension instance under the supplied name. The same instance is returned by every resolve(String) call; prefer register(String, Supplier) for stateful extensions that must not be shared across engines.
      Parameters:
      name - identifying name
      extension - extension instance
    • register

      public static void register(String name, Supplier<JawkExtension> factory)
      Registers an extension factory under the supplied name. Every resolve(String) call returns a freshly created instance, so per-engine extension state is never shared.
      Parameters:
      name - identifying name
      factory - factory producing extension instances
    • listExtensions

      public static Map<String,JawkExtension> listExtensions()
      Returns a snapshot of all registered extensions sorted by name. Each factory-registered entry maps to a freshly created instance.
      Returns:
      immutable view of registered extensions
    • resolve

      public static JawkExtension resolve(String name)
      Resolves an extension name to an extension instance. The lookup is case-insensitive and also supports class names. When the extension has not yet been registered, the method attempts to load the class by name and instantiate it.
      Parameters:
      name - name or class name of the extension
      Returns:
      extension instance (freshly created for factory-registered extensions), or null when the name cannot be resolved