package com.metrink.croquet.inject;
import com.google.inject.AbstractModule;
import com.metrink.croquet.AbstractSettings;
import com.metrink.croquet.RestSettings;
/**
* Croquet's Guice module that configures most of the dependencies.
* @param <T> the subclass type of the settings instance
*/
public class CroquetRestModule<T extends RestSettings> extends AbstractModule {
private final T settings;
private Class<T> clazz;
/**
* Constructor for the CroquetModule.
* @param clazz the settings base class.
* @param settings the settings.
*/
public CroquetRestModule(final Class<T> clazz, final T settings) {
this.clazz = clazz;
this.settings = settings;
}
@Override
protected void configure() {
// bind the settings classes
bind(AbstractSettings.class).toInstance(settings);
bind(clazz).toInstance(settings);
bind(RestSettings.class).toInstance(settings);
}
}