001package org.xbib.elasticsearch.plugin.websocket;
002
003import org.elasticsearch.common.collect.Lists;
004import org.elasticsearch.common.inject.AbstractModule;
005import org.elasticsearch.common.settings.Settings;
006import org.xbib.elasticsearch.rest.HttpPatchRestController;
007import org.xbib.elasticsearch.websocket.BaseInteractiveHandler;
008import org.xbib.elasticsearch.websocket.InteractiveActionModule;
009import org.xbib.elasticsearch.websocket.InteractiveController;
010
011import java.util.List;
012
013public class WebSocketModule extends AbstractModule {
014
015    private final Settings settings;
016
017    private List<Class<? extends BaseInteractiveHandler>> webSocketActions = Lists.newArrayList();
018
019    public WebSocketModule(Settings settings) {
020        this.settings = settings;
021    }
022
023    public void addInteractiveAction(Class<? extends BaseInteractiveHandler> action) {
024        webSocketActions.add(action);
025    }
026
027    @Override
028    protected void configure() {
029        bind(InteractiveController.class).asEagerSingleton();
030        new InteractiveActionModule(webSocketActions).configure(binder());
031        bind(HttpPatchRestController.class).asEagerSingleton();
032    }
033
034}