001package org.xbib.elasticsearch.http;
002
003import org.elasticsearch.common.collect.ImmutableList;
004import org.elasticsearch.common.inject.AbstractModule;
005import org.elasticsearch.common.inject.Module;
006import org.elasticsearch.common.inject.Modules;
007import org.elasticsearch.common.inject.SpawnModules;
008import org.elasticsearch.common.settings.Settings;
009import org.xbib.elasticsearch.http.netty.NettyWebSocketServerTransportModule;
010
011public class HttpServerModule extends AbstractModule implements SpawnModules {
012
013    private final Settings settings;
014
015    public HttpServerModule(Settings settings) {
016        this.settings = settings;
017    }
018
019    @Override
020    public Iterable<? extends Module> spawnModules() {
021        return ImmutableList.of(Modules.createModule(settings.getAsClass("websocket.type", NettyWebSocketServerTransportModule.class, "org.xbib.elasticsearch.websocket.http.", "HttpServerTransportModule"), settings));
022    }
023
024    @SuppressWarnings({"unchecked"})
025    @Override
026    protected void configure() {
027        bind(HttpServer.class).asEagerSingleton();
028    }
029}