Consolidated the modules.

Added a few missing bindings.
This commit is contained in:
Jonathan Halterman 2014-02-20 09:36:09 -08:00
parent 9f94868e47
commit 71a5ae8eb5
5 changed files with 49 additions and 54 deletions

View File

@ -1,35 +0,0 @@
package com.hpcloud.mon;
import java.util.Map.Entry;
import com.google.inject.AbstractModule;
import com.google.inject.name.Names;
import com.hpcloud.mon.MonApiConfiguration.CloudServiceConfiguration;
import com.hpcloud.mon.domain.DomainModule;
import com.hpcloud.mon.infrastructure.InfrastructureModule;
import com.hpcloud.mon.infrastructure.identity.IdentityServiceConfiguration;
/**
* Application specific bindings.
*
* @author Jonathan Halterman
*/
public class ApplicationModule extends AbstractModule {
private final MonApiConfiguration config;
public ApplicationModule(MonApiConfiguration config) {
this.config = config;
}
@Override
protected void configure() {
bind(MonApiConfiguration.class).toInstance(config);
for (Entry<String, CloudServiceConfiguration> cloudServiceConf : config.cloudServices.entrySet())
bind(CloudServiceConfiguration.class).annotatedWith(Names.named(cloudServiceConf.getKey()))
.toInstance(cloudServiceConf.getValue());
bind(IdentityServiceConfiguration.class).toInstance(config.identityService);
install(new DomainModule());
install(new InfrastructureModule());
}
}

View File

@ -56,7 +56,7 @@ public class MonApiApplication extends Application<MonApiConfiguration> {
@Override
public void run(MonApiConfiguration config, Environment environment) throws Exception {
/** Wire services */
Injector.registerModules(new PlatformModule(environment, config), new ApplicationModule(config));
Injector.registerModules(new MonApiModule(environment, config));
/** Configure managed services */

View File

@ -5,6 +5,7 @@ import io.dropwizard.db.DataSourceFactory;
import io.dropwizard.jdbi.DBIFactory;
import io.dropwizard.setup.Environment;
import java.util.Map.Entry;
import java.util.Properties;
import javax.inject.Singleton;
@ -19,27 +20,41 @@ import com.google.common.base.Joiner;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.ProvisionException;
import com.google.inject.Scopes;
import com.google.inject.name.Names;
import com.hpcloud.mon.MonApiConfiguration.CloudServiceConfiguration;
import com.hpcloud.mon.app.ApplicationModule;
import com.hpcloud.mon.domain.DomainModule;
import com.hpcloud.mon.infrastructure.InfrastructureModule;
import com.hpcloud.mon.infrastructure.identity.IdentityServiceConfiguration;
import com.sun.jersey.api.client.Client;
/**
* Platform (non-application) specific bindings.
* Monitoring API server bindings.
*
* @author Jonathan Halterman
*/
public class PlatformModule extends AbstractModule {
public class MonApiModule extends AbstractModule {
private final MonApiConfiguration config;
private final Environment environment;
public PlatformModule(Environment environment, MonApiConfiguration config) {
public MonApiModule(Environment environment, MonApiConfiguration config) {
this.environment = environment;
this.config = config;
}
@Override
protected void configure() {
bind(MetricRegistry.class).in(Scopes.SINGLETON);
bind(MonApiConfiguration.class).toInstance(config);
for (Entry<String, CloudServiceConfiguration> cloudServiceConf : config.cloudServices.entrySet())
bind(CloudServiceConfiguration.class).annotatedWith(Names.named(cloudServiceConf.getKey()))
.toInstance(cloudServiceConf.getValue());
bind(IdentityServiceConfiguration.class).toInstance(config.identityService);
bind(MetricRegistry.class).in(Singleton.class);
bind(DataSourceFactory.class).toInstance(config.database);
install(new ApplicationModule());
install(new DomainModule());
install(new InfrastructureModule());
}
@Provides
@ -62,7 +77,7 @@ public class PlatformModule extends AbstractModule {
@Provides
@Singleton
public Producer<?, ?> getProducer() {
public Producer<String, String> getProducer() {
Properties props = new Properties();
props.put("metadata.broker.list", Joiner.on(',').join(config.kafka.hosts));
props.put("serializer.class", "kafka.serializer.StringEncoder");

View File

@ -0,0 +1,18 @@
package com.hpcloud.mon.app;
import javax.inject.Singleton;
import com.google.inject.AbstractModule;
/**
* Application layer bindings.
*
* @author Jonathan Halterman
*/
public class ApplicationModule extends AbstractModule {
@Override
protected void configure() {
bind(MetricService.class).in(Singleton.class);
bind(AlarmService.class).in(Singleton.class);
}
}

View File

@ -1,6 +1,12 @@
package com.hpcloud.mon.domain;
import javax.inject.Singleton;
import com.google.inject.AbstractModule;
import com.hpcloud.mon.app.AlarmService;
import com.hpcloud.mon.app.MetricService;
import com.hpcloud.mon.domain.model.version.VersionRepository;
import com.hpcloud.mon.domain.service.impl.VersionRepositoryImpl;
/**
* Domain layer bindings.
@ -10,17 +16,8 @@ import com.google.inject.AbstractModule;
public class DomainModule extends AbstractModule {
@Override
protected void configure() {
// bind(SubscriptionService.class).to(SubscriptionServiceImpl.class).in(Scopes.SINGLETON);
// bind(EndpointService.class).to(EndpointServiceImpl.class).in(Scopes.SINGLETON);
// bind(AlarmService.class).to(AlarmServiceImpl.class).in(Scopes.SINGLETON);
// bind(VersionRepository.class).to(VersionRepositoryImpl.class).in(Scopes.SINGLETON);
// bind(MetricService.class).to(MetricServiceImpl.class).in(Scopes.SINGLETON);
// bind(MetricRepository.class).to(MetricRepositoryImpl.class).in(Scopes.SINGLETON);
// bind(AccessRepository.class).to(AccessRepositoryImpl.class).in(Scopes.SINGLETON);
// bind(MeteringService.class).to(MeteringServiceImpl.class).in(Scopes.SINGLETON);
// bind(MeteringRepository.class).to(MeteringRepositoryImpl.class).in(Scopes.SINGLETON);
// bind(WorkService.class).to(WorkServiceImpl.class).in(Scopes.SINGLETON);
// bind(ApiCallCountService.class).to(ApiCallCountServiceImpl.class).in(Scopes.SINGLETON);
// bind(ApiCallCountRepository.class).to(ApiCallCountRepositoryImpl.class).in(Scopes.SINGLETON);
bind(MetricService.class).in(Singleton.class);
bind(AlarmService.class).in(Singleton.class);
bind(VersionRepository.class).to(VersionRepositoryImpl.class).in(Singleton.class);
}
}