Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
To support pluggable extensions, e.g. custom HTTP clients for remote invocation, we'd like to add a generic way for users to provide their own implementations of various pluggable components.
This will take the form of ExtensionModule}}s, where a user that is providing an extension implements such a module to be included into the StateFun app. Each {{ExtensionModule may bind multiple extensions identified by unique typenames. Other components of the application, such as functions and IO modules, may access these extensions through their typenames.
The SPI would likely look like this:
public interface ExtensionModule { void configure(Map<String, String> globalConfiguration, Binder binder); interface Binder { <T> void bindExtension(TypeName typeName, T extension); } }