2014-05-01 12:45:08 -06:00

84 lines
3.6 KiB
Java

/*
* Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hpcloud.mon.persister;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
import com.google.inject.assistedinject.FactoryModuleBuilder;
import com.hpcloud.mon.persister.configuration.MonPersisterConfiguration;
import com.hpcloud.mon.persister.consumer.*;
import com.hpcloud.mon.persister.dbi.DBIProvider;
import com.hpcloud.mon.persister.disruptor.*;
import com.hpcloud.mon.persister.disruptor.event.*;
import com.hpcloud.mon.persister.disruptor.event.MetricHandler;
import com.hpcloud.mon.persister.disruptor.event.MetricHandlerFactory;
import com.hpcloud.mon.persister.repository.RepositoryCommitHeartbeat;
import com.lmax.disruptor.ExceptionHandler;
import io.dropwizard.setup.Environment;
import org.skife.jdbi.v2.DBI;
public class MonPersisterModule extends AbstractModule {
private final MonPersisterConfiguration configuration;
private final Environment environment;
public MonPersisterModule(MonPersisterConfiguration configuration, Environment environment) {
this.configuration = configuration;
this.environment = environment;
}
@Override
protected void configure() {
bind(MonPersisterConfiguration.class).toInstance(configuration);
bind(Environment.class).toInstance(environment);
install(new FactoryModuleBuilder()
.implement(MetricHandler.class, MetricHandler.class)
.build(MetricHandlerFactory.class));
install(new FactoryModuleBuilder()
.implement(AlarmStateTransitionedEventHandler.class, AlarmStateTransitionedEventHandler.class)
.build(AlarmStateTransitionedEventHandlerFactory.class));
install(new FactoryModuleBuilder()
.implement(KafkaMetricsConsumerRunnableBasic.class, KafkaMetricsConsumerRunnableBasic.class)
.build(KafkaMetricsConsumerRunnableBasicFactory.class));
install(new FactoryModuleBuilder()
.implement(KafkaAlarmStateTransitionConsumerRunnableBasic.class, KafkaAlarmStateTransitionConsumerRunnableBasic.class)
.build(KafkaAlarmStateTransitionConsumerRunnableBasicFactory.class));
bind(ExceptionHandler.class).to(DisruptorExceptionHandler.class);
bind(MetricDisruptor.class)
.toProvider(MetricDisruptorProvider.class).in(Scopes.SINGLETON);
bind(AlarmStateHistoryDisruptor.class)
.toProvider(AlarmHistoryDisruptorProvider.class).in(Scopes.SINGLETON);
bind(DBI.class).toProvider(DBIProvider.class).in(Scopes.SINGLETON);
bind(KafkaStreams.class).toProvider(KafkaStreamsProvider.class).in(Scopes.SINGLETON);
bind(MetricsConsumer.class);
bind(AlarmStateTransitionsConsumer.class);
bind(RepositoryCommitHeartbeat.class);
}
}