Furnace Container: Guice
Setup
This Addon requires the following installation steps.
Add configuration to pom.xml
To use this addon, you must add it as a dependency in the pom.xml of your forge-addon
classified artifact:
<dependency>
<groupId>org.jboss.forge.furnace.container</groupId>
<artifactId>guice</artifactId>
<classifier>forge-addon</classifier>
<version>${version}</version>
</dependency>
Create a com.google.inject.Module
implementation as a Service provider in your addon
In order for Guice to detect your services, you must add a src/main/resources/META-INF/services/com.google.inject.Module
file in your project containing the com.google.inject.Module
implementation.
Features
- Observable events
-
The Furnace container publishes several observable events to all addons throughout their lifecycle. In order to listen for events, implement the
org.jboss.forge.furnace.container.guice.EventListener
interface.
public class MyEmitter {
@Inject
EventManager eventManager;
public void fire() {
eventManager.fireEvent("FOO");
}
}
public class MyObserver implements EventListener {
public void handleEvent(Object event, Annotation ... qualifiers) {
// "FOO".equals(event) == true
}
}
- Injection of Furnace APIs
-
This container also allows for injection of some of the core Furnace APIs into your objects. Below is a list of all injectable API types.
Injectable Type | Description |
---|---|
@Inject private Furnace service; |
A handle to the Furnace container in which this addon is being run. |
@Inject private Addon self; |
A reference to this addon itself. Allows access to the addon version, |
@Inject private AddonRegistry addonRegistry; |
A reference to the global Furnace addon registry - can be used to retrieve addon and exported service instances. |