mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-17 10:25:15 +00:00
improvements to the module system, allow for a module to spawn other modules, and pre process modules before injector creation
This commit is contained in:
parent
aa28b93610
commit
664f28492d
@ -44,9 +44,8 @@ import org.elasticsearch.cluster.ClusterNameModule;
|
||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.collect.Tuple;
|
||||
import org.elasticsearch.common.inject.Guice;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.network.NetworkModule;
|
||||
import org.elasticsearch.common.settings.ImmutableSettings;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
@ -64,7 +63,6 @@ import org.elasticsearch.timer.TimerService;
|
||||
import org.elasticsearch.transport.TransportModule;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.elasticsearch.common.settings.ImmutableSettings.*;
|
||||
@ -125,7 +123,7 @@ public class TransportClient extends AbstractClient {
|
||||
.build();
|
||||
this.environment = tuple.v2();
|
||||
|
||||
ArrayList<Module> modules = new ArrayList<Module>();
|
||||
ModulesBuilder modules = new ModulesBuilder();
|
||||
modules.add(new EnvironmentModule(environment));
|
||||
modules.add(new SettingsModule(settings));
|
||||
modules.add(new NetworkModule());
|
||||
@ -141,7 +139,7 @@ public class TransportClient extends AbstractClient {
|
||||
modules.add(new TransportClientClusterModule(settings));
|
||||
}
|
||||
|
||||
injector = Guice.createInjector(modules);
|
||||
injector = modules.createInjector();
|
||||
|
||||
injector.getInstance(TransportService.class).start();
|
||||
try {
|
||||
|
@ -28,13 +28,16 @@ import org.elasticsearch.cluster.metadata.*;
|
||||
import org.elasticsearch.cluster.routing.RoutingService;
|
||||
import org.elasticsearch.cluster.routing.allocation.ShardAllocationModule;
|
||||
import org.elasticsearch.cluster.service.InternalClusterService;
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class ClusterModule extends AbstractModule {
|
||||
public class ClusterModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -42,11 +45,12 @@ public class ClusterModule extends AbstractModule {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
return ImmutableList.of(new ShardAllocationModule(settings));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
|
||||
new ShardAllocationModule().configure(binder());
|
||||
|
||||
bind(ClusterService.class).to(InternalClusterService.class).asEagerSingleton();
|
||||
bind(MetaDataCreateIndexService.class).asEagerSingleton();
|
||||
bind(MetaDataDeleteIndexService.class).asEagerSingleton();
|
||||
|
@ -21,12 +21,16 @@ package org.elasticsearch.cluster.routing.allocation;
|
||||
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.multibindings.Multibinder;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class ShardAllocationModule extends AbstractModule {
|
||||
|
||||
public ShardAllocationModule(Settings settings) {
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
bind(ShardsAllocation.class).asEagerSingleton();
|
||||
bind(PreferUnallocatedStrategy.class).to(PreferUnallocatedShardUnassignedStrategy.class).asEagerSingleton();
|
||||
|
@ -26,9 +26,9 @@ import javax.annotation.Nullable;
|
||||
import java.lang.reflect.Constructor;
|
||||
|
||||
/**
|
||||
* @author kimchy (Shay Banon)
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class ModulesFactory {
|
||||
public class Modules {
|
||||
|
||||
public static Module createModule(String moduleClass, Settings settings) throws ClassNotFoundException {
|
||||
return createModule((Class<? extends Module>) settings.getClassLoader().loadClass(moduleClass), settings);
|
||||
@ -56,4 +56,14 @@ public class ModulesFactory {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void processModules(Iterable<Module> modules) {
|
||||
for (Module module : modules) {
|
||||
if (module instanceof PreProcessModule) {
|
||||
for (Module module1 : modules) {
|
||||
((PreProcessModule) module).processModule(module1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Licensed to Elastic Search and Shay Banon under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. Elastic Search licenses this
|
||||
* file to you 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.elasticsearch.common.inject;
|
||||
|
||||
import org.elasticsearch.common.collect.Lists;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class ModulesBuilder {
|
||||
|
||||
private final List<Module> modules = Lists.newArrayList();
|
||||
|
||||
public ModulesBuilder add(Module... modules) {
|
||||
for (Module module : modules) {
|
||||
add(module);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ModulesBuilder add(Module module) {
|
||||
modules.add(module);
|
||||
if (module instanceof SpawnModules) {
|
||||
Iterable<? extends Module> spawned = ((SpawnModules) module).spawnModules();
|
||||
for (Module spawn : spawned) {
|
||||
add(spawn);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public Injector createInjector() {
|
||||
Modules.processModules(modules);
|
||||
return Guice.createInjector(modules);
|
||||
}
|
||||
|
||||
public Injector createChildInjector(Injector injector) {
|
||||
Modules.processModules(modules);
|
||||
return injector.createChildInjector(modules);
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Licensed to Elastic Search and Shay Banon under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. Elastic Search licenses this
|
||||
* file to you 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.elasticsearch.common.inject;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public interface PreProcessModule {
|
||||
|
||||
void processModule(Module module);
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Licensed to Elastic Search and Shay Banon under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. Elastic Search licenses this
|
||||
* file to you 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.elasticsearch.common.inject;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public interface SpawnModules {
|
||||
|
||||
Iterable<? extends Module> spawnModules();
|
||||
}
|
@ -19,44 +19,37 @@
|
||||
|
||||
package org.elasticsearch.discovery;
|
||||
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.Modules;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.discovery.local.LocalDiscoveryModule;
|
||||
import org.elasticsearch.discovery.zen.ZenDiscoveryModule;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class DiscoveryModule extends AbstractModule {
|
||||
public class DiscoveryModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
private Class<? extends Module> defaultDiscoModule;
|
||||
|
||||
public DiscoveryModule(Settings settings) {
|
||||
this.settings = settings;
|
||||
this.defaultDiscoModule = ZenDiscoveryModule.class;
|
||||
}
|
||||
|
||||
public void replaceDefaultDiscoModule(Class<? extends Module> defaultDiscoModule) {
|
||||
this.defaultDiscoModule = defaultDiscoModule;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
Class<? extends Module> defaultDiscoveryModule;
|
||||
if (settings.getAsBoolean("node.local", false)) {
|
||||
defaultDiscoveryModule = LocalDiscoveryModule.class;
|
||||
} else {
|
||||
defaultDiscoveryModule = defaultDiscoModule;
|
||||
defaultDiscoveryModule = ZenDiscoveryModule.class;
|
||||
}
|
||||
return ImmutableList.of(Modules.createModule(settings.getAsClass("discovery.type", defaultDiscoveryModule, "org.elasticsearch.discovery.", "DiscoveryModule"), settings));
|
||||
}
|
||||
|
||||
Class<? extends Module> moduleClass = settings.getAsClass("discovery.type", defaultDiscoveryModule, "org.elasticsearch.discovery.", "DiscoveryModule");
|
||||
createModule(moduleClass, settings).configure(binder());
|
||||
|
||||
@Override protected void configure() {
|
||||
bind(DiscoveryService.class).asEagerSingleton();
|
||||
}
|
||||
}
|
@ -19,15 +19,18 @@
|
||||
|
||||
package org.elasticsearch.gateway;
|
||||
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.ModulesFactory;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.Modules;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.gateway.none.NoneGatewayModule;
|
||||
|
||||
/**
|
||||
* @author kimchy (Shay Banon)
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class GatewayModule extends AbstractModule {
|
||||
public class GatewayModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -35,8 +38,11 @@ public class GatewayModule extends AbstractModule {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
return ImmutableList.of(Modules.createModule(settings.getAsClass("gateway.type", NoneGatewayModule.class, "org.elasticsearch.gateway.", "GatewayModule"), settings));
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
ModulesFactory.createModule(settings.getAsClass("gateway.type", NoneGatewayModule.class, "org.elasticsearch.gateway.", "GatewayModule"), settings).configure(binder());
|
||||
bind(GatewayService.class).asEagerSingleton();
|
||||
}
|
||||
}
|
||||
|
@ -19,17 +19,18 @@
|
||||
|
||||
package org.elasticsearch.http;
|
||||
|
||||
import org.elasticsearch.common.Classes;
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.Modules;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
import org.elasticsearch.http.netty.NettyHttpServerTransportModule;
|
||||
|
||||
/**
|
||||
* @author kimchy (Shay Banon)
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class HttpServerModule extends AbstractModule {
|
||||
public class HttpServerModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -37,22 +38,11 @@ public class HttpServerModule extends AbstractModule {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
return ImmutableList.of(Modules.createModule(settings.getAsClass("http.type", NettyHttpServerTransportModule.class, "org.elasticsearch.http.", "HttpServerTransportModule"), settings));
|
||||
}
|
||||
|
||||
@SuppressWarnings({"unchecked"}) @Override protected void configure() {
|
||||
bind(HttpServer.class).asEagerSingleton();
|
||||
|
||||
Class<? extends Module> defaultHttpServerTransportModule = null;
|
||||
try {
|
||||
Classes.getDefaultClassLoader().loadClass("org.elasticsearch.http.netty.NettyHttpServerTransport");
|
||||
defaultHttpServerTransportModule = (Class<? extends Module>) Classes.getDefaultClassLoader().loadClass("org.elasticsearch.http.netty.NettyHttpServerTransportModule");
|
||||
} catch (ClassNotFoundException e) {
|
||||
// no netty one, ok...
|
||||
if (settings.get("http.type") == null) {
|
||||
// no explicit one is configured, bail
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Class<? extends Module> moduleClass = settings.getAsClass("http.type", defaultHttpServerTransportModule, "org.elasticsearch.http.", "HttpServerTransportModule");
|
||||
createModule(moduleClass, settings).configure(binder());
|
||||
}
|
||||
}
|
||||
|
@ -19,14 +19,17 @@
|
||||
|
||||
package org.elasticsearch.index.engine;
|
||||
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.ModulesFactory;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.Modules;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
||||
/**
|
||||
* @author kimchy (Shay Banon)
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class EngineModule extends AbstractModule {
|
||||
public class EngineModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -34,7 +37,10 @@ public class EngineModule extends AbstractModule {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
return ImmutableList.of(Modules.createModule(settings.getAsClass(IndexEngineModule.EngineSettings.ENGINE_TYPE, IndexEngineModule.EngineSettings.DEFAULT_ENGINE, "org.elasticsearch.index.engine.", "EngineModule"), settings));
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
ModulesFactory.createModule(settings.getAsClass(IndexEngineModule.EngineSettings.ENGINE_TYPE, IndexEngineModule.EngineSettings.DEFAULT_ENGINE, "org.elasticsearch.index.engine.", "EngineModule"), settings).configure(binder());
|
||||
}
|
||||
}
|
||||
|
@ -19,18 +19,20 @@
|
||||
|
||||
package org.elasticsearch.index.engine;
|
||||
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.engine.robin.RobinEngineModule;
|
||||
import org.elasticsearch.index.engine.robin.RobinIndexEngineModule;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
import static org.elasticsearch.common.inject.Modules.*;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class IndexEngineModule extends AbstractModule {
|
||||
public class IndexEngineModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
public static final class EngineSettings {
|
||||
public static final String ENGINE_TYPE = "index.engine.type";
|
||||
@ -44,7 +46,10 @@ public class IndexEngineModule extends AbstractModule {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
return ImmutableList.of(createModule(settings.getAsClass(EngineSettings.ENGINE_TYPE, EngineSettings.DEFAULT_INDEX_ENGINE, "org.elasticsearch.index.engine.", "IndexEngineModule"), settings));
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
createModule(settings.getAsClass(EngineSettings.ENGINE_TYPE, EngineSettings.DEFAULT_INDEX_ENGINE, "org.elasticsearch.index.engine.", "IndexEngineModule"), settings).configure(binder());
|
||||
}
|
||||
}
|
@ -19,15 +19,18 @@
|
||||
|
||||
package org.elasticsearch.index.gateway;
|
||||
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.ModulesFactory;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.Modules;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.gateway.Gateway;
|
||||
|
||||
/**
|
||||
* @author kimchy (Shay Banon)
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class IndexGatewayModule extends AbstractModule {
|
||||
public class IndexGatewayModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -38,7 +41,10 @@ public class IndexGatewayModule extends AbstractModule {
|
||||
this.gateway = gateway;
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
return ImmutableList.of(Modules.createModule(settings.getAsClass("index.gateway.type", gateway.suggestIndexGateway(), "org.elasticsearch.index.gateway.", "IndexGatewayModule"), settings));
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
ModulesFactory.createModule(settings.getAsClass("index.gateway.type", gateway.suggestIndexGateway(), "org.elasticsearch.index.gateway.", "IndexGatewayModule"), settings).configure(binder());
|
||||
}
|
||||
}
|
||||
|
@ -19,18 +19,21 @@
|
||||
|
||||
package org.elasticsearch.index.routing;
|
||||
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.routing.hash.HashFunction;
|
||||
import org.elasticsearch.index.routing.hash.djb.DjbHashFunction;
|
||||
import org.elasticsearch.index.routing.plain.PlainOperationRoutingModule;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
import static org.elasticsearch.common.inject.Modules.*;
|
||||
|
||||
/**
|
||||
* @author kimchy (Shay Banon)
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class OperationRoutingModule extends AbstractModule {
|
||||
public class OperationRoutingModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings indexSettings;
|
||||
|
||||
@ -38,8 +41,11 @@ public class OperationRoutingModule extends AbstractModule {
|
||||
this.indexSettings = indexSettings;
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
return ImmutableList.of(createModule(indexSettings.getAsClass("index.routing.type", PlainOperationRoutingModule.class, "org.elasticsearch.index.routing.", "OperationRoutingModule"), indexSettings));
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
bind(HashFunction.class).to(indexSettings.getAsClass("index.routing.hash.type", DjbHashFunction.class, "org.elasticsearch.index.routing.hash.", "HashFunction")).asEagerSingleton();
|
||||
createModule(indexSettings.getAsClass("index.routing.type", PlainOperationRoutingModule.class, "org.elasticsearch.index.routing.", "OperationRoutingModule"), indexSettings).configure(binder());
|
||||
}
|
||||
}
|
||||
|
@ -23,13 +23,12 @@ import org.elasticsearch.ElasticSearchException;
|
||||
import org.elasticsearch.ElasticSearchInterruptedException;
|
||||
import org.elasticsearch.common.collect.ImmutableMap;
|
||||
import org.elasticsearch.common.collect.ImmutableSet;
|
||||
import org.elasticsearch.common.collect.Lists;
|
||||
import org.elasticsearch.common.collect.UnmodifiableIterator;
|
||||
import org.elasticsearch.common.component.CloseableIndexComponent;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.Injectors;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.gateway.none.NoneGateway;
|
||||
import org.elasticsearch.index.AbstractIndexComponent;
|
||||
@ -69,7 +68,6 @@ import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
@ -249,7 +247,7 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||
|
||||
logger.debug("creating shard_id [{}]", shardId.id());
|
||||
|
||||
List<Module> modules = Lists.newArrayList();
|
||||
ModulesBuilder modules = new ModulesBuilder();
|
||||
modules.add(new ShardsPluginsModule(indexSettings, pluginsService));
|
||||
modules.add(new IndexShardModule(shardId));
|
||||
modules.add(new StoreModule(indexSettings, injector.getInstance(IndexStore.class)));
|
||||
@ -260,9 +258,7 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||
modules.add(new EngineModule(indexSettings));
|
||||
modules.add(new IndexShardGatewayModule(injector.getInstance(IndexGateway.class)));
|
||||
|
||||
pluginsService.processModules(modules);
|
||||
|
||||
Injector shardInjector = injector.createChildInjector(modules);
|
||||
Injector shardInjector = modules.createChildInjector(injector);
|
||||
|
||||
shardsInjectors = newMapBuilder(shardsInjectors).put(shardId.id(), shardInjector).immutableMap();
|
||||
|
||||
|
@ -19,9 +19,11 @@
|
||||
|
||||
package org.elasticsearch.index.store;
|
||||
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.ModulesFactory;
|
||||
import org.elasticsearch.common.inject.Modules;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.os.OsUtils;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.store.fs.MmapFsIndexStoreModule;
|
||||
@ -31,9 +33,9 @@ import org.elasticsearch.index.store.memory.MemoryIndexStoreModule;
|
||||
import org.elasticsearch.index.store.ram.RamIndexStoreModule;
|
||||
|
||||
/**
|
||||
* @author kimchy (Shay Banon)
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class IndexStoreModule extends AbstractModule {
|
||||
public class IndexStoreModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -41,7 +43,7 @@ public class IndexStoreModule extends AbstractModule {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
Class<? extends Module> indexStoreModule = NioFsIndexStoreModule.class;
|
||||
if (OsUtils.WINDOWS) {
|
||||
indexStoreModule = SimpleFsIndexStoreModule.class;
|
||||
@ -62,6 +64,9 @@ public class IndexStoreModule extends AbstractModule {
|
||||
} else if (storeType != null) {
|
||||
indexStoreModule = settings.getAsClass("index.store.type", indexStoreModule, "org.elasticsearch.index.store.", "IndexStoreModule");
|
||||
}
|
||||
ModulesFactory.createModule(indexStoreModule, settings).configure(binder());
|
||||
return ImmutableList.of(Modules.createModule(indexStoreModule, settings));
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
}
|
||||
}
|
@ -33,7 +33,7 @@ import org.elasticsearch.common.component.CloseableIndexComponent;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.Injectors;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.util.concurrent.ThreadSafe;
|
||||
import org.elasticsearch.gateway.Gateway;
|
||||
@ -59,7 +59,6 @@ import org.elasticsearch.plugins.IndicesPluginsModule;
|
||||
import org.elasticsearch.plugins.PluginsService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@ -211,7 +210,7 @@ public class InternalIndicesService extends AbstractLifecycleComponent<IndicesSe
|
||||
.globalSettings(settings.getGlobalSettings())
|
||||
.build();
|
||||
|
||||
ArrayList<Module> modules = new ArrayList<Module>();
|
||||
ModulesBuilder modules = new ModulesBuilder();
|
||||
modules.add(new IndexNameModule(index));
|
||||
modules.add(new LocalNodeIdModule(localNodeId));
|
||||
modules.add(new IndexSettingsModule(indexSettings));
|
||||
@ -227,9 +226,7 @@ public class InternalIndicesService extends AbstractLifecycleComponent<IndicesSe
|
||||
modules.add(new OperationRoutingModule(indexSettings));
|
||||
modules.add(new IndexModule());
|
||||
|
||||
pluginsService.processModules(modules);
|
||||
|
||||
Injector indexInjector = injector.createChildInjector(modules);
|
||||
Injector indexInjector = modules.createChildInjector(injector);
|
||||
|
||||
indicesInjectors.put(index.name(), indexInjector);
|
||||
|
||||
|
@ -34,10 +34,9 @@ import org.elasticsearch.common.StopWatch;
|
||||
import org.elasticsearch.common.collect.Tuple;
|
||||
import org.elasticsearch.common.component.Lifecycle;
|
||||
import org.elasticsearch.common.component.LifecycleComponent;
|
||||
import org.elasticsearch.common.inject.Guice;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.Injectors;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.logging.ESLogger;
|
||||
import org.elasticsearch.common.logging.Loggers;
|
||||
import org.elasticsearch.common.network.NetworkModule;
|
||||
@ -78,7 +77,6 @@ import org.elasticsearch.timer.TimerService;
|
||||
import org.elasticsearch.transport.TransportModule;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.elasticsearch.common.settings.ImmutableSettings.*;
|
||||
@ -114,7 +112,7 @@ public final class InternalNode implements Node {
|
||||
this.settings = pluginsService.updatedSettings();
|
||||
this.environment = tuple.v2();
|
||||
|
||||
ArrayList<Module> modules = new ArrayList<Module>();
|
||||
ModulesBuilder modules = new ModulesBuilder();
|
||||
modules.add(new PluginsModule(settings, pluginsService));
|
||||
modules.add(new SettingsModule(settings));
|
||||
modules.add(new NodeModule(this));
|
||||
@ -141,9 +139,7 @@ public final class InternalNode implements Node {
|
||||
modules.add(new GatewayModule(settings));
|
||||
modules.add(new NodeClientModule());
|
||||
|
||||
pluginsService.processModules(modules);
|
||||
|
||||
injector = Guice.createInjector(modules);
|
||||
injector = modules.createInjector();
|
||||
|
||||
client = injector.getInstance(Client.class);
|
||||
|
||||
|
@ -19,18 +19,21 @@
|
||||
|
||||
package org.elasticsearch.plugins;
|
||||
|
||||
import org.elasticsearch.common.collect.Lists;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
import static org.elasticsearch.common.inject.Modules.*;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class IndicesPluginsModule extends AbstractModule {
|
||||
public class IndicesPluginsModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -41,10 +44,15 @@ public class IndicesPluginsModule extends AbstractModule {
|
||||
this.pluginsService = pluginsService;
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
Collection<Class<? extends Module>> modules = pluginsService.indexModules();
|
||||
for (Class<? extends Module> module : modules) {
|
||||
createModule(module, settings).configure(binder());
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
List<Module> modules = Lists.newArrayList();
|
||||
Collection<Class<? extends Module>> modulesClasses = pluginsService.indexModules();
|
||||
for (Class<? extends Module> moduleClass : modulesClasses) {
|
||||
modules.add(createModule(moduleClass, settings));
|
||||
}
|
||||
return modules;
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
}
|
||||
}
|
@ -19,18 +19,22 @@
|
||||
|
||||
package org.elasticsearch.plugins;
|
||||
|
||||
import org.elasticsearch.common.collect.Lists;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.PreProcessModule;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
import static org.elasticsearch.common.inject.Modules.*;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class PluginsModule extends AbstractModule {
|
||||
public class PluginsModule extends AbstractModule implements SpawnModules, PreProcessModule {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -41,12 +45,22 @@ public class PluginsModule extends AbstractModule {
|
||||
this.pluginsService = pluginsService;
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
bind(PluginsService.class).toInstance(pluginsService);
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
List<Module> modules = Lists.newArrayList();
|
||||
Collection<Class<? extends Module>> modulesClasses = pluginsService.modules();
|
||||
for (Class<? extends Module> moduleClass : modulesClasses) {
|
||||
modules.add(createModule(moduleClass, settings));
|
||||
}
|
||||
return modules;
|
||||
}
|
||||
|
||||
Collection<Class<? extends Module>> modules = pluginsService.modules();
|
||||
for (Class<? extends Module> module : modules) {
|
||||
createModule(module, settings).configure(binder());
|
||||
@Override public void processModule(Module module) {
|
||||
for (Plugin plugin : pluginsService.plugins().values()) {
|
||||
plugin.processModule(module);
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
bind(PluginsService.class).toInstance(pluginsService);
|
||||
}
|
||||
}
|
||||
|
@ -66,16 +66,12 @@ public class PluginsService extends AbstractComponent {
|
||||
this.plugins = ImmutableMap.copyOf(plugins);
|
||||
}
|
||||
|
||||
public Settings updatedSettings() {
|
||||
return this.settings;
|
||||
public ImmutableMap<String, Plugin> plugins() {
|
||||
return plugins;
|
||||
}
|
||||
|
||||
public void processModules(Iterable<Module> modules) {
|
||||
for (Module module : modules) {
|
||||
for (Plugin plugin : plugins.values()) {
|
||||
plugin.processModule(module);
|
||||
}
|
||||
}
|
||||
public Settings updatedSettings() {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
public Collection<Class<? extends Module>> modules() {
|
||||
|
@ -19,18 +19,21 @@
|
||||
|
||||
package org.elasticsearch.plugins;
|
||||
|
||||
import org.elasticsearch.common.collect.Lists;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
import static org.elasticsearch.common.inject.Modules.*;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class ShardsPluginsModule extends AbstractModule {
|
||||
public class ShardsPluginsModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -41,10 +44,15 @@ public class ShardsPluginsModule extends AbstractModule {
|
||||
this.pluginsService = pluginsService;
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
Collection<Class<? extends Module>> modules = pluginsService.shardModules();
|
||||
for (Class<? extends Module> module : modules) {
|
||||
createModule(module, settings).configure(binder());
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
List<Module> modules = Lists.newArrayList();
|
||||
Collection<Class<? extends Module>> modulesClasses = pluginsService.shardModules();
|
||||
for (Class<? extends Module> moduleClass : modulesClasses) {
|
||||
modules.add(createModule(moduleClass, settings));
|
||||
}
|
||||
return modules;
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
}
|
||||
}
|
@ -19,17 +19,18 @@
|
||||
|
||||
package org.elasticsearch.threadpool;
|
||||
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.Modules;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.threadpool.cached.CachedThreadPoolModule;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class ThreadPoolModule extends AbstractModule {
|
||||
public class ThreadPoolModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -37,8 +38,10 @@ public class ThreadPoolModule extends AbstractModule {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
return ImmutableList.of(Modules.createModule(settings.getAsClass("transport.type", CachedThreadPoolModule.class, "org.elasticsearch.threadpool.", "ThreadPoolModule"), settings));
|
||||
}
|
||||
|
||||
@Override protected void configure() {
|
||||
Class<? extends Module> moduleClass = settings.getAsClass("transport.type", CachedThreadPoolModule.class, "org.elasticsearch.threadpool.", "ThreadPoolModule");
|
||||
createModule(moduleClass, settings).configure(binder());
|
||||
}
|
||||
}
|
||||
|
@ -19,18 +19,19 @@
|
||||
|
||||
package org.elasticsearch.transport;
|
||||
|
||||
import org.elasticsearch.common.Classes;
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.Modules;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.transport.local.LocalTransportModule;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
import org.elasticsearch.transport.netty.NettyTransportModule;
|
||||
|
||||
/**
|
||||
* @author kimchy (Shay Banon)
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class TransportModule extends AbstractModule {
|
||||
public class TransportModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -38,24 +39,18 @@ public class TransportModule extends AbstractModule {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(TransportService.class).asEagerSingleton();
|
||||
bind(TransportServiceManagement.class).asEagerSingleton();
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
Class<? extends Module> defaultTransportModule;
|
||||
if (settings.getAsBoolean("node.local", false)) {
|
||||
defaultTransportModule = LocalTransportModule.class;
|
||||
} else {
|
||||
try {
|
||||
Classes.getDefaultClassLoader().loadClass("org.elasticsearch.transport.netty.NettyTransport");
|
||||
defaultTransportModule = (Class<? extends Module>) Classes.getDefaultClassLoader().loadClass("org.elasticsearch.transport.netty.NettyTransportModule");
|
||||
} catch (ClassNotFoundException e) {
|
||||
defaultTransportModule = LocalTransportModule.class;
|
||||
}
|
||||
defaultTransportModule = NettyTransportModule.class;
|
||||
}
|
||||
return ImmutableList.of(Modules.createModule(settings.getAsClass("transport.type", defaultTransportModule, "org.elasticsearch.transport.", "TransportModule"), settings));
|
||||
}
|
||||
|
||||
Class<? extends Module> moduleClass = settings.getAsClass("transport.type", defaultTransportModule, "org.elasticsearch.transport.", "TransportModule");
|
||||
createModule(moduleClass, settings).configure(binder());
|
||||
@Override protected void configure() {
|
||||
bind(TransportService.class).asEagerSingleton();
|
||||
bind(TransportServiceManagement.class).asEagerSingleton();
|
||||
}
|
||||
}
|
@ -20,8 +20,8 @@
|
||||
package org.elasticsearch.index.analysis;
|
||||
|
||||
import org.apache.lucene.analysis.Analyzer;
|
||||
import org.elasticsearch.common.inject.Guice;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.lucene.analysis.HTMLStripCharFilter;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.Index;
|
||||
@ -50,10 +50,10 @@ public class AnalysisModuleTests {
|
||||
|
||||
private void testSimpleConfiguration(Settings settings) {
|
||||
Index index = new Index("test");
|
||||
Injector injector = Guice.createInjector(
|
||||
Injector injector = new ModulesBuilder().add(
|
||||
new IndexSettingsModule(settings),
|
||||
new IndexNameModule(index),
|
||||
new AnalysisModule(settings));
|
||||
new AnalysisModule(settings)).createInjector();
|
||||
|
||||
AnalysisService analysisService = injector.getInstance(AnalysisService.class);
|
||||
|
||||
|
@ -19,8 +19,8 @@
|
||||
|
||||
package org.elasticsearch.index.query.xcontent.guice;
|
||||
|
||||
import org.elasticsearch.common.inject.Guice;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.index.Index;
|
||||
@ -56,7 +56,7 @@ public class IndexQueryParserModuleTests {
|
||||
.build();
|
||||
|
||||
Index index = new Index("test");
|
||||
Injector injector = Guice.createInjector(
|
||||
Injector injector = new ModulesBuilder().add(
|
||||
new SettingsModule(settings),
|
||||
new ScriptModule(),
|
||||
new IndexSettingsModule(settings),
|
||||
@ -66,7 +66,7 @@ public class IndexQueryParserModuleTests {
|
||||
new SimilarityModule(settings),
|
||||
new IndexQueryParserModule(settings),
|
||||
new IndexNameModule(index)
|
||||
);
|
||||
).createInjector();
|
||||
IndexQueryParserService indexQueryParserService = injector.getInstance(IndexQueryParserService.class);
|
||||
|
||||
|
||||
|
@ -19,8 +19,8 @@
|
||||
|
||||
package org.elasticsearch.index.query.xcontent.plugin;
|
||||
|
||||
import org.elasticsearch.common.inject.Guice;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.settings.ImmutableSettings;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
@ -61,7 +61,7 @@ public class IndexQueryParserPluginTests {
|
||||
});
|
||||
|
||||
Index index = new Index("test");
|
||||
Injector injector = Guice.createInjector(
|
||||
Injector injector = new ModulesBuilder().add(
|
||||
new SettingsModule(settings),
|
||||
new ScriptModule(),
|
||||
new IndexSettingsModule(settings),
|
||||
@ -71,7 +71,7 @@ public class IndexQueryParserPluginTests {
|
||||
new SimilarityModule(settings),
|
||||
queryParserModule,
|
||||
new IndexNameModule(index)
|
||||
);
|
||||
).createInjector();
|
||||
IndexQueryParserService indexQueryParserService = injector.getInstance(IndexQueryParserService.class);
|
||||
|
||||
|
||||
|
@ -19,8 +19,8 @@
|
||||
|
||||
package org.elasticsearch.index.analysis;
|
||||
|
||||
import org.elasticsearch.common.inject.Guice;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.index.Index;
|
||||
import org.elasticsearch.index.IndexNameModule;
|
||||
import org.elasticsearch.index.settings.IndexSettingsModule;
|
||||
@ -37,10 +37,10 @@ public class SimpleIcuAnalysisTests {
|
||||
|
||||
@Test public void testDefaultsIcuAnalysis() {
|
||||
Index index = new Index("test");
|
||||
Injector injector = Guice.createInjector(
|
||||
Injector injector = new ModulesBuilder().add(
|
||||
new IndexSettingsModule(EMPTY_SETTINGS),
|
||||
new IndexNameModule(index),
|
||||
new AnalysisModule(EMPTY_SETTINGS).addProcessor(new IcuAnalysisBinderProcessor()));
|
||||
new AnalysisModule(EMPTY_SETTINGS).addProcessor(new IcuAnalysisBinderProcessor())).createInjector();
|
||||
|
||||
AnalysisService analysisService = injector.getInstance(AnalysisService.class);
|
||||
|
||||
|
@ -19,17 +19,18 @@
|
||||
|
||||
package org.elasticsearch.memcached;
|
||||
|
||||
import org.elasticsearch.common.Classes;
|
||||
import org.elasticsearch.common.collect.ImmutableList;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.inject.Modules;
|
||||
import org.elasticsearch.common.inject.SpawnModules;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
||||
import static org.elasticsearch.common.inject.ModulesFactory.*;
|
||||
import org.elasticsearch.memcached.netty.NettyMemcachedServerTransportModule;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class MemcachedServerModule extends AbstractModule {
|
||||
public class MemcachedServerModule extends AbstractModule implements SpawnModules {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
@ -37,22 +38,11 @@ public class MemcachedServerModule extends AbstractModule {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Module> spawnModules() {
|
||||
return ImmutableList.of(Modules.createModule(settings.getAsClass("memcached.type", NettyMemcachedServerTransportModule.class, "org.elasticsearch.memcached.", "MemcachedServerTransportModule"), settings));
|
||||
}
|
||||
|
||||
@SuppressWarnings({"unchecked"}) @Override protected void configure() {
|
||||
bind(MemcachedServer.class).asEagerSingleton();
|
||||
|
||||
Class<? extends Module> defaultMemcachedServerTransportModule = null;
|
||||
try {
|
||||
Classes.getDefaultClassLoader().loadClass("org.elasticsearch.memcached.netty.NettyMemcachedServerTransport");
|
||||
defaultMemcachedServerTransportModule = (Class<? extends Module>) Classes.getDefaultClassLoader().loadClass("org.elasticsearch.memcached.netty.NettyMemcachedServerTransportModule");
|
||||
} catch (ClassNotFoundException e) {
|
||||
// no netty one, ok...
|
||||
if (settings.get("memcached.type") == null) {
|
||||
// no explicit one is configured, bail
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Class<? extends Module> moduleClass = settings.getAsClass("memcached.type", defaultMemcachedServerTransportModule, "org.elasticsearch.memcached.", "MemcachedServerTransportModule");
|
||||
createModule(moduleClass, settings).configure(binder());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user