The Gravitee.io plugin project contains a set of classes that are used in Gravitee.io products (APIM, AM, …) to load and manage plugins. Several type of plugins are supported:
-
Repositories
-
Services
-
Policies
-
Identity Providers
-
Notifiers
-
Reporters
-
…
Additionally, the plugin project offer handy annotation processors that are helpful when developing policies.
The Gravitee Plugin Alert module provides a plugin handler that detects and loads the alert plugin. It also regroups all the interfaces needed for declaring alert triggers (kind of alert definition) and sending alert event. It allows working seamlessly with Alert Engine but can be used for any custom external system.
The Gravitee Plugin Annotation Processors module aims to provide useful set of annotations that can be used when developing new plugins such as policies.
For now, it provides a @ConfigurationEvaluator
that is useful for any plugin that needs to support dynamic configuration based on context attributes and wants to do it in a conventional ways. See the dedicated README for details.
The Gravitee Plugin Api module exposes some handy interfaces that can be implemented to influence the plugin deployments.
The Gravitee Plugin Cockpit module provides a plugin handler capable to load and start a Cockpit Connector plugin.
The Gravitee Plugin Connector module provides a specific plugin handler that loads Gravitee APIM v3 connector plugins. This module is now deprecated in favor of new Entrypoint and Endpoint Connector concept that are specific to Gravitee APIM and offer support for Event Native capabilities.
These new concepts come with new plugin handlers. The specific Entrypoint plugin handler and Endpoint plugin handler are now located in the APIM repository.
Here are some concrete examples of the kind of plugins that can be loaded by the new plugin endpoint and entrypoint handlers:
-
Kafka endpoint
-
Mqtt5 endpoint
-
SSE entrypoint
-
Websocket entrypoint
The Gravitee Plugin Core module offers all the core capabilities needed to load and register the plugins.
The Gravitee Plugin Fetcher module provides a plugin handler capable to load and start a fetcher plugin. A fetcher allows retrieving content from an external source. It is mainly intended for use on management side and is not supposed to be used by gateways.
Here are some examples of concrete fetcher plugins the plugin handler can load:
Note
|
A concrete example on how fetchers are used in Gravitee API Management is accessible in the online documentation. |
The Gravitee Plugin Identity Provider module brings the ability to load identity provider plugins that can be used to implement authentication.
The Gravitee Plugin Notifier module provides a handler to load notifier plugins. Notifier are used to send notification to a remote system.
Here are some examples of notifier plugins that can be loaded by the notifier plugin handler:
Note
|
You can find how to use notifiers with Gravitee APIM in the online documentation. |
The Gravitee Plugin Policy module provides a specific handler capable of loading all the policy plugin that are detected.
There a many policy plugins that are implemented and can be loaded by the policy plugin handler.
Note
|
You can find a list of all the policies available for APIM in the online documentation. |
The Gravitee Plugin Repository module implement a plugin handler that aims to detect and load repository plugins.
Gravitee products rely on a repository layer to store all the necessary data. They are implemented as repository plugin that allows for implementing support for different database technologies such as MongoDB or JDBC.
The Gravitee Plugin Resource module provides a resource plugin handler in charge of detecting and loading all the resource plugins.
A resource plugin is a generic concept that can be implemented by each product. For example, APIM makes use of cache resources or oauth2 resources. There can be several implementations for each type of resource. For example, oauth2 resource can have a generic implementation as well as a Gravitee AM implementation or a KeyCloack implementation.