HONEYCOMB-374: move BGP to minimal-distribution
[honeycomb.git] / infra / northbound / bgp / src / main / java / io / fd / honeycomb / infra / bgp / BgpReadersModule.java
1 /*
2  * Copyright (c) 2017 Cisco and/or its affiliates.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package io.fd.honeycomb.infra.bgp;
18
19 import com.google.inject.Singleton;
20 import com.google.inject.multibindings.Multibinder;
21 import io.fd.honeycomb.northbound.NorthboundAbstractModule;
22 import io.fd.honeycomb.translate.read.ReaderFactory;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
25
26 public class BgpReadersModule extends NorthboundAbstractModule<BgpConfiguration> {
27     private static final Logger LOG = LoggerFactory.getLogger(BgpReadersModule.class);
28
29     public BgpReadersModule() {
30         super(new BgpConfigurationModule(), BgpConfiguration.class);
31     }
32
33     protected void configure() {
34         if (!getConfiguration().isBgpEnabled()) {
35             LOG.debug("BGP disabled. Skipping initialization");
36             return;
37         }
38         LOG.debug("Initializing BgpReadersModule");
39         // This should be part of BgpModule, but that one is Private and Multibinders + private BASE_MODULES
40         // do not work together, that's why there's a dedicated module here
41         // https://github.com/google/guice/issues/906
42         final Multibinder<ReaderFactory> binder = Multibinder.newSetBinder(binder(), ReaderFactory.class);
43         binder.addBinding().toProvider(BgpReaderFactoryProvider.class).in(Singleton.class);
44     }
45 }