Package io.jawk.ext
Class ExtensionRegistry
java.lang.Object
io.jawk.ext.ExtensionRegistry
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 Summary
Modifier and TypeMethodDescriptionstatic Map<String,JawkExtension> Returns a snapshot of all registered extensions sorted by name.static voidregister(String name, JawkExtension extension) Registers an extension instance under the supplied name.static voidregister(String name, Supplier<JawkExtension> factory) Registers an extension factory under the supplied name.static JawkExtensionResolves an extension name to an extension instance.
-
Method Details
-
register
Registers an extension instance under the supplied name. The same instance is returned by everyresolve(String)call; preferregister(String, Supplier)for stateful extensions that must not be shared across engines.- Parameters:
name- identifying nameextension- extension instance
-
register
Registers an extension factory under the supplied name. Everyresolve(String)call returns a freshly created instance, so per-engine extension state is never shared.- Parameters:
name- identifying namefactory- factory producing extension instances
-
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
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
nullwhen the name cannot be resolved
-