public static <F> Provider<F> newFactory( Class<F> factoryType, Class<?> implementationType) { return newFactory(TypeLiteral.get(factoryType), TypeLiteral.get(implementationType)); }
private void configureFilters() { MapBinder<String, FilterHttpServerAdapterFactory> filterBinder = MapBinder.newMapBinder(binder(), String.class, FilterHttpServerAdapterFactory.class); Map<String, Settings> filtersSettings = componentSettings.getGroups("http_filter"); for (Map.Entry<String, Settings> entry : filtersSettings.entrySet()) { String filterName = entry.getKey(); Settings filterSettings = entry.getValue(); Class<? extends FilterHttpServerAdapter> type = null; try { type = filterSettings.getAsClass("type", null, "com.sonian.elasticsearch.http.filter.", "FilterHttpServerAdapter"); } catch (NoClassSettingsException e) { // Ignore } if (type == null) { throw new ElasticsearchIllegalArgumentException("Http Filter [" + filterName + "] must have a type associated with it"); } filterBinder.addBinding(filterName) .toProvider(FactoryProvider.newFactory(FilterHttpServerAdapterFactory.class, type)) .in(Scopes.SINGLETON); } } }
@Override protected void configure() { MapBinder<String, SimilarityProvider.Factory> similarityBinder = MapBinder.newMapBinder(binder(), String.class, SimilarityProvider.Factory.class); Map<String, Settings> similaritySettings = settings.getGroups(SIMILARITY_SETTINGS_PREFIX); for (Map.Entry<String, Settings> entry : similaritySettings.entrySet()) { String name = entry.getKey(); Settings settings = entry.getValue(); String typeName = settings.get("type"); if (typeName == null) { throw new IllegalArgumentException("Similarity [" + name + "] must have an associated type"); } else if (similarities.containsKey(typeName) == false) { throw new IllegalArgumentException("Unknown Similarity type [" + typeName + "] for [" + name + "]"); } similarityBinder.addBinding(entry.getKey()).toProvider(FactoryProvider.newFactory(SimilarityProvider.Factory.class, similarities.get(typeName))).in(Scopes.SINGLETON); } for (PreBuiltSimilarityProvider.Factory factory : Similarities.listFactories()) { if (!similarities.containsKey(factory.name())) { similarityBinder.addBinding(factory.name()).toInstance(factory); } } bind(SimilarityLookupService.class).asEagerSingleton(); bind(SimilarityService.class).asEagerSingleton(); } }
throw new IllegalArgumentException("Unknown CharFilter type [" + typeName + "] for [" + charFilterName + "]"); charFilterBinder.addBinding(charFilterName).toProvider(FactoryProvider.newFactory(CharFilterFactoryFactory.class, type)).in(Scopes.SINGLETON); charFilterBinder.addBinding(charFilterName).toProvider(FactoryProvider.newFactory(CharFilterFactoryFactory.class, clazz)).in(Scopes.SINGLETON); throw new IllegalArgumentException("Unknown TokenFilter type [" + typeName + "] for [" + tokenFilterName + "]"); tokenFilterBinder.addBinding(tokenFilterName).toProvider(FactoryProvider.newFactory(TokenFilterFactoryFactory.class, type)).in(Scopes.SINGLETON); tokenFilterBinder.addBinding(tokenFilterName).toProvider(FactoryProvider.newFactory(TokenFilterFactoryFactory.class, clazz)).in(Scopes.SINGLETON); throw new IllegalArgumentException("Unknown Tokenizer type [" + typeName + "] for [" + tokenizerName + "]"); tokenizerBinder.addBinding(tokenizerName).toProvider(FactoryProvider.newFactory(TokenizerFactoryFactory.class, type)).in(Scopes.SINGLETON); tokenizerBinder.addBinding(tokenizerName).toProvider(FactoryProvider.newFactory(TokenizerFactoryFactory.class, clazz)).in(Scopes.SINGLETON); analyzerBinder.addBinding(analyzerName).toProvider(FactoryProvider.newFactory(AnalyzerProviderFactory.class, type)).in(Scopes.SINGLETON); analyzerBinder.addBinding(analyzerName).toProvider(FactoryProvider.newFactory(AnalyzerProviderFactory.class, clazz)).in(Scopes.SINGLETON);
.newFactory(WriterCollectorFactory.class, BulkWriterCollector.class));