001package org.xbib.elasticsearch.plugin.websocket; 002 003import org.elasticsearch.action.ActionModule; 004import org.elasticsearch.common.component.LifecycleComponent; 005import org.elasticsearch.common.inject.Module; 006import org.elasticsearch.common.settings.Settings; 007import org.elasticsearch.plugins.AbstractPlugin; 008import org.elasticsearch.rest.RestModule; 009import org.xbib.elasticsearch.action.cluster.admin.websocket.TransportWebsocketInfoAction; 010import org.xbib.elasticsearch.action.cluster.admin.websocket.WebsocketInfoAction; 011import org.xbib.elasticsearch.action.websocket.pubsub.Checkpointer; 012import org.xbib.elasticsearch.http.HttpServer; 013import org.xbib.elasticsearch.http.HttpServerModule; 014import org.xbib.elasticsearch.rest.action.websocket.RestPublishAction; 015import org.xbib.elasticsearch.rest.action.websocket.RestUnsubscribeAction; 016 017import java.util.Collection; 018 019import static org.elasticsearch.common.collect.Lists.newArrayList; 020 021/** 022 * Websocket plugin 023 */ 024public class WebSocketPlugin extends AbstractPlugin { 025 026 private final Settings settings; 027 028 public WebSocketPlugin(Settings settings) { 029 this.settings = settings; 030 } 031 032 @Override 033 public String name() { 034 return "transport-websocket-" 035 + Build.getInstance().getVersion() + "-" 036 + Build.getInstance().getShortHash(); 037 } 038 039 @Override 040 public String description() { 041 return "Websocket transport plugin"; 042 } 043 044 @Override 045 public Collection<Class<? extends Module>> modules() { 046 Collection<Class<? extends Module>> modules = newArrayList(); 047 if (settings.getAsBoolean("websocket.enabled", true)) { 048 modules.add(HttpServerModule.class); 049 modules.add(WebSocketModule.class); 050 } 051 return modules; 052 } 053 054 @Override 055 public Collection<Class<? extends LifecycleComponent>> services() { 056 Collection<Class<? extends LifecycleComponent>> services = newArrayList(); 057 if (settings.getAsBoolean("websocket.enabled", true)) { 058 services.add(HttpServer.class); 059 services.add(Checkpointer.class); 060 } 061 return services; 062 } 063 064 public void onModule(ActionModule module) { 065 module.registerAction(WebsocketInfoAction.INSTANCE, TransportWebsocketInfoAction.class); 066 } 067 068 public void onModule(RestModule module) { 069 module.addRestAction(RestPublishAction.class); 070 module.addRestAction(RestUnsubscribeAction.class); 071 } 072 073}