/* * Copyright (C) 2014 Jörg Prante * * Licensed 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 org.xbib.elasticsearch.plugin.knapsack; import org.elasticsearch.action.ActionModule; import org.elasticsearch.cluster.ClusterModule; import org.elasticsearch.cluster.settings.Validator; import org.elasticsearch.common.component.LifecycleComponent; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.inject.Module; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.rest.RestModule; import org.xbib.elasticsearch.action.knapsack.abort.KnapsackAbortAction; import org.xbib.elasticsearch.action.knapsack.abort.TransportKnapsackAbortAction; import org.xbib.elasticsearch.action.knapsack.exp.KnapsackExportAction; import org.xbib.elasticsearch.action.knapsack.exp.TransportKnapsackExportAction; import org.xbib.elasticsearch.action.knapsack.imp.KnapsackImportAction; import org.xbib.elasticsearch.action.knapsack.imp.TransportKnapsackImportAction; import org.xbib.elasticsearch.action.knapsack.pull.KnapsackPullAction; import org.xbib.elasticsearch.action.knapsack.pull.TransportKnapsackPullAction; import org.xbib.elasticsearch.action.knapsack.push.KnapsackPushAction; import org.xbib.elasticsearch.action.knapsack.push.TransportKnapsackPushAction; import org.xbib.elasticsearch.action.knapsack.state.KnapsackStateAction; import org.xbib.elasticsearch.action.knapsack.state.TransportKnapsackStateAction; import org.xbib.elasticsearch.knapsack.KnapsackModule; import org.xbib.elasticsearch.knapsack.KnapsackService; import org.xbib.elasticsearch.rest.action.knapsack.abort.RestKnapsackAbortAction; import org.xbib.elasticsearch.rest.action.knapsack.exp.RestKnapsackExportAction; import org.xbib.elasticsearch.rest.action.knapsack.imp.RestKnapsackImportAction; import org.xbib.elasticsearch.rest.action.knapsack.pull.RestKnapsackPullAction; import org.xbib.elasticsearch.rest.action.knapsack.push.RestKnapsackPushAction; import org.xbib.elasticsearch.rest.action.knapsack.state.RestKnapsackStateAction; import java.util.ArrayList; import java.util.Collection; public class KnapsackPlugin extends Plugin { private final static String ENABLED = "plugins.knapsack.enabled"; private final Settings settings; @Inject public KnapsackPlugin(Settings settings) { this.settings = settings; } @Override public String name() { return "knapsack"; } @Override public String description() { return "Knapsack import/export plugin for Elasticsearch"; } public void onModule(ActionModule module) { if (settings.getAsBoolean(ENABLED, true)) { module.registerAction(KnapsackExportAction.INSTANCE, TransportKnapsackExportAction.class); module.registerAction(KnapsackPushAction.INSTANCE, TransportKnapsackPushAction.class); module.registerAction(KnapsackImportAction.INSTANCE, TransportKnapsackImportAction.class); module.registerAction(KnapsackPullAction.INSTANCE, TransportKnapsackPullAction.class); module.registerAction(KnapsackStateAction.INSTANCE, TransportKnapsackStateAction.class); module.registerAction(KnapsackAbortAction.INSTANCE, TransportKnapsackAbortAction.class); } } public void onModule(RestModule module) { if (settings.getAsBoolean(ENABLED, true)) { module.addRestAction(RestKnapsackExportAction.class); module.addRestAction(RestKnapsackImportAction.class); module.addRestAction(RestKnapsackPushAction.class); module.addRestAction(RestKnapsackPullAction.class); module.addRestAction(RestKnapsackStateAction.class); module.addRestAction(RestKnapsackAbortAction.class); } } /*public void onModule(ClusterModule module) { if ("node".equals(settings.get("client.type")) && settings.getAsBoolean(ENABLED, true)) { module.registerClusterDynamicSetting(KnapsackService.EXPORT_STATE_SETTING_NAME, Validator.EMPTY); module.registerClusterDynamicSetting(KnapsackService.IMPORT_STATE_SETTING_NAME, Validator.EMPTY); } }*/ @Override public Collection<Module> nodeModules() { Collection<Module> modules = new ArrayList<>(); if ("node".equals(settings.get("client.type")) && settings.getAsBoolean(ENABLED, true)) { modules.add(new KnapsackModule()); } return modules; } @Override public Collection<Class<? extends LifecycleComponent>> nodeServices() { Collection<Class<? extends LifecycleComponent>> services = new ArrayList<>(); if ("node".equals(settings.get("client.type")) && settings.getAsBoolean(ENABLED, true)) { services.add(KnapsackService.class); } return services; } }