add memcached.enabled setting allowing to disable memcached even if its added as a plugin (by default, it is enabled)

This commit is contained in:
kimchy 2010-04-18 00:16:45 +03:00
parent fbc138e38c
commit 9a35ddcb61
2 changed files with 25 additions and 4 deletions

View File

@ -24,6 +24,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.inject.Inject;
import com.google.inject.Module;
import org.elasticsearch.ElasticSearchException;
import org.elasticsearch.env.Environment;
import org.elasticsearch.util.component.AbstractComponent;
import org.elasticsearch.util.component.CloseableIndexComponent;
@ -258,8 +259,17 @@ public class PluginsService extends AbstractComponent {
is = pluginUrl.openStream();
pluginProps.load(is);
String sPluginClass = pluginProps.getProperty("plugin");
Class<?> pluginClass = settings.getClassLoader().loadClass(sPluginClass);
Plugin plugin = (Plugin) pluginClass.newInstance();
Class<? extends Plugin> pluginClass = (Class<? extends Plugin>) settings.getClassLoader().loadClass(sPluginClass);
Plugin plugin;
try {
plugin = pluginClass.getConstructor(Settings.class).newInstance(settings);
} catch (NoSuchMethodException e) {
try {
plugin = pluginClass.getConstructor().newInstance();
} catch (NoSuchMethodException e1) {
throw new ElasticSearchException("No constructor for [" + pluginClass + "]");
}
}
plugins.put(plugin.name(), plugin);
} catch (Exception e) {
logger.warn("Failed to load plugin from [" + pluginUrl + "]", e);

View File

@ -22,6 +22,7 @@ package org.elasticsearch.memcached;
import com.google.inject.Module;
import org.elasticsearch.plugins.AbstractPlugin;
import org.elasticsearch.util.component.LifecycleComponent;
import org.elasticsearch.util.settings.Settings;
import java.util.Collection;
@ -32,6 +33,12 @@ import static com.google.common.collect.Lists.*;
*/
public class MemcachedPlugin extends AbstractPlugin {
private final Settings settings;
public MemcachedPlugin(Settings settings) {
this.settings = settings;
}
@Override public String name() {
return "memcached";
}
@ -42,13 +49,17 @@ public class MemcachedPlugin extends AbstractPlugin {
@Override public Collection<Class<? extends Module>> modules() {
Collection<Class<? extends Module>> modules = newArrayList();
modules.add(MemcachedServerModule.class);
if (settings.getAsBoolean("memcached.enabled", true)) {
modules.add(MemcachedServerModule.class);
}
return modules;
}
@Override public Collection<Class<? extends LifecycleComponent>> services() {
Collection<Class<? extends LifecycleComponent>> services = newArrayList();
services.add(MemcachedServer.class);
if (settings.getAsBoolean("memcached.enabled", true)) {
services.add(MemcachedServer.class);
}
return services;
}
}