Skip to content

forge/furnace-guice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Furnace Container: Guice

Build Status License Maven Central

This addon is a 'Furnace container' that provides lifecycle and service registry support for dependent addons. Other addons may depend on this to use the Guice programming model and dependency injection framework.

Dependencies: None

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, ClassLoader, service registry, current lifecycle status, and addon dependencies.

@Inject private AddonRegistry addonRegistry;

A reference to the global Furnace addon registry - can be used to retrieve addon and exported service instances.

About

Furnace Guice Service Container

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages