@Override public void configure(Binder binder) { MapBinder<String, RowDecoderFactory> decoderFactoriesByName = MapBinder.newMapBinder(binder, String.class, RowDecoderFactory.class); decoderFactoriesByName.addBinding(DummyRowDecoder.NAME).to(DummyRowDecoderFactory.class).in(SINGLETON); decoderFactoriesByName.addBinding(CsvRowDecoder.NAME).to(CsvRowDecoderFactory.class).in(SINGLETON); decoderFactoriesByName.addBinding(JsonRowDecoder.NAME).to(JsonRowDecoderFactory.class).in(SINGLETON); decoderFactoriesByName.addBinding(RawRowDecoder.NAME).to(RawRowDecoderFactory.class).in(SINGLETON); decoderFactoriesByName.addBinding(AvroRowDecoder.NAME).to(AvroRowDecoderFactory.class).in(SINGLETON); binder.bind(DispatchingRowDecoderFactory.class).in(SINGLETON); } }
protected void addRestResource(Class<? extends PluginRestResource> restResourceClass) { MapBinder<String, Class<? extends PluginRestResource>> pluginRestResourceMapBinder = MapBinder.newMapBinder(binder(), new TypeLiteral<String>() {}, new TypeLiteral<Class<? extends PluginRestResource>>() {}) .permitDuplicates(); pluginRestResourceMapBinder.addBinding(this.getClass().getPackage().getName()).toInstance(restResourceClass); }
private static <T extends Statement> void bindDataDefinitionTask( Binder binder, MapBinder<Class<? extends Statement>, QueryExecutionFactory<?>> executionBinder, Class<T> statement, Class<? extends DataDefinitionTask<T>> task) { verify(getAllQueryTypes().get(statement) == QueryType.DATA_DEFINITION); MapBinder<Class<? extends Statement>, DataDefinitionTask<?>> taskBinder = newMapBinder(binder, new TypeLiteral<Class<? extends Statement>>() {}, new TypeLiteral<DataDefinitionTask<?>>() {}); taskBinder.addBinding(statement).to(task).in(Scopes.SINGLETON); executionBinder.addBinding(statement).to(DataDefinitionExecutionFactory.class).in(Scopes.SINGLETON); }
private JsonBinder(Binder binder) { binder = requireNonNull(binder, "binder is null").skipSources(getClass()); keySerializerMapBinder = MapBinder.newMapBinder(binder, new TypeLiteral<Class<?>>() {}, new TypeLiteral<JsonSerializer<?>>() {}, JsonKeySerde.class); keyDeserializerMapBinder = MapBinder.newMapBinder(binder, new TypeLiteral<Class<?>>() {}, new TypeLiteral<KeyDeserializer>() {}, JsonKeySerde.class); serializerMapBinder = MapBinder.newMapBinder(binder, new TypeLiteral<Class<?>>() {}, new TypeLiteral<JsonSerializer<?>>() {}); deserializerMapBinder = MapBinder.newMapBinder(binder, new TypeLiteral<Class<?>>() {}, new TypeLiteral<JsonDeserializer<?>>() {}); moduleBinder = newSetBinder(binder, Module.class); }
public <T> void bindSerializer(JsonSerializer<T> jsonSerializer) { requireNonNull(jsonSerializer, "jsonSerializer is null"); Class<?> type = jsonSerializer.handledType(); requireNonNull(type, "jsonSerializer.handledType is null"); Preconditions.checkArgument(type == Object.class, "jsonSerializer.handledType can not be Object.class"); serializerMapBinder.addBinding(type).toInstance(jsonSerializer); } }
public LinkedBindingBuilder<JsonSerializer<?>> addKeySerializerBinding(Class<?> type) { requireNonNull(type, "type is null"); return keySerializerMapBinder.addBinding(type); }
@Override public void configure(Binder binder) PolyBind.createChoiceWithDefault(binder, "druid.publish.type", Key.get(SegmentPublisher.class), "metadata"); final MapBinder<String, SegmentPublisher> publisherBinder = PolyBind.optionBinder( binder, Key.get(SegmentPublisher.class) ); publisherBinder.addBinding("noop").to(NoopSegmentPublisher.class).in(LazySingleton.class); publisherBinder.addBinding("metadata").to(MetadataSegmentPublisher.class).in(LazySingleton.class); Key.get(RowIngestionMetersFactory.class), .addBinding("dropwizard") .to(DropwizardRowIngestionMetersFactory.class) .in(LazySingleton.class); binder.bind(DropwizardRowIngestionMetersFactory.class).in(LazySingleton.class); .addBinding("announce") handlerProviderBinder .addBinding("noop") binder.bind( new TypeLiteral<List<FireDepartment>>() .toProvider(FireDepartmentsProvider.class)
@Override public void configure(Binder binder) binder.bindConstant().annotatedWith(Names.named("serviceName")).to("druid/middlemanager"); binder.bindConstant().annotatedWith(Names.named("servicePort")).to(8091); binder.bindConstant().annotatedWith(Names.named("tlsServicePort")).to(8291); JsonConfigProvider.bind(binder, "druid.worker", WorkerConfig.class); binder.bind(TaskRunner.class).to(ForkingTaskRunner.class); binder.bind(ForkingTaskRunner.class).in(LazySingleton.class); binder.bind(IndexingServiceClient.class).toProvider(Providers.of(null)); binder.bind(new TypeLiteral<IndexTaskClientFactory<ParallelIndexTaskClient>>() {}) .toProvider(Providers.of(null)); binder, "druid.indexer.task.rowIngestionMeters.type", Key.get(RowIngestionMetersFactory.class), Key.get(DropwizardRowIngestionMetersFactory.class) ); final MapBinder<String, RowIngestionMetersFactory> rowIngestionMetersHandlerProviderBinder = PolyBind.optionBinder(binder, Key.get(RowIngestionMetersFactory.class)); rowIngestionMetersHandlerProviderBinder .addBinding("dropwizard") .to(DropwizardRowIngestionMetersFactory.class) .in(LazySingleton.class); binder.bind(DropwizardRowIngestionMetersFactory.class).in(LazySingleton.class);
@Override public void configure(final Env env, final Config conf, final Binder binder) { // empty metric & checks MapBinder.newMapBinder(binder, String.class, Metric.class); MapBinder.newMapBinder(binder, String.class, HealthCheck.class); Router routes = env.router(); MetricHandler mhandler = new MetricHandler(); routes.use("GET", this.pattern + "/metrics", mhandler); routes.use("GET", this.pattern + "/metrics/:type", mhandler); routes.use("GET", this.pattern + "/healthcheck", new HealthCheckHandler()); Multibinder<Reporter> reporters = Multibinder.newSetBinder(binder, Reporter.class); binder.bind(MetricRegistry.class).toInstance(metricRegistry); this.reporters.forEach(it -> reporters.addBinding().toInstance(it.apply(metricRegistry, conf))); binder.bind(MetricRegistryInitializer.class).asEagerSingleton(); env.onStop(app -> app.require(MetricRegistryInitializer.class).close()); binder.bind(HealthCheckRegistry.class).toInstance(healthCheckRegistry); binder.bind(HealthCheckRegistryInitializer.class).asEagerSingleton(); bindings.forEach(it -> it.bind(binder, routes, conf)); this.routes.forEach(it -> it.accept(routes)); }
protected void installWidgetStrategyWithAlias(MapBinder<String, WidgetStrategy.Factory<? extends WidgetStrategy>> widgetStrategyBinder, String key, Class<? extends WidgetStrategy> target, Class<? extends WidgetStrategy.Factory<? extends WidgetStrategy>> targetFactory) { installWidgetStrategy(widgetStrategyBinder, target, targetFactory); widgetStrategyBinder.addBinding(key).to(Key.get(targetFactory)); }
@Override public void configure(Binder binder) { createBindingChoices(binder, TYPE); super.configure(binder); binder.bind(MetadataStorage.class).toProvider(NoopMetadataStorageProvider.class); PolyBind.optionBinder(binder, Key.get(MetadataStorageProvider.class)) .addBinding(TYPE) .to(DerbyMetadataStorageProvider.class) .in(LazySingleton.class); PolyBind.optionBinder(binder, Key.get(MetadataStorageConnector.class)) .addBinding(TYPE) .to(DerbyConnector.class) .in(LazySingleton.class); PolyBind.optionBinder(binder, Key.get(SQLMetadataConnector.class)) .addBinding(TYPE) .to(DerbyConnector.class) .in(LazySingleton.class); PolyBind.optionBinder(binder, Key.get(MetadataStorageActionHandlerFactory.class)) .addBinding(TYPE) .to(DerbyMetadataStorageActionHandlerFactory.class) .in(LazySingleton.class); } }
@Override public void configure(Binder binder) { String emitterType = props.getProperty(EMITTER_PROPERTY, ""); binder.install(new NoopEmitterModule()); binder.install(new LogEmitterModule()); binder.install(new HttpEmitterModule()); binder.install(new ParametrizedUriEmitterModule()); binder.install(new ComposingEmitterModule()); binder.bind(Emitter.class).toProvider(new EmitterProvider(emitterType)).in(LazySingleton.class); MapBinder<String, String> extraServiceDimensions = MapBinder.newMapBinder( binder, String.class, String.class, ExtraServiceDimensions.class ); String version = getClass().getPackage().getImplementationVersion(); extraServiceDimensions .addBinding("version") .toInstance(StringUtils.nullToEmptyNonDruidDataString(version)); // Version is null during `mvn test`. }
private void bindPasswordAlgorithms() { MapBinder<String, PasswordAlgorithm> passwordAlgorithms = MapBinder.newMapBinder(binder(), String.class, PasswordAlgorithm.class); passwordAlgorithms.addBinding("sha-1").to(SHA1HashPasswordAlgorithm.class); passwordAlgorithms.addBinding("bcrypt").to(BCryptPasswordAlgorithm.class); bind(PasswordAlgorithm.class).annotatedWith(DefaultPasswordAlgorithm.class).toProvider(DefaultPasswordAlgorithmProvider.class); } }
@Override protected void configure() { final MapBinder<String, AuthenticatingRealm> auth = authenticationRealmBinder(); auth.addBinding(AccessTokenAuthenticator.NAME).to(AccessTokenAuthenticator.class).in(Scopes.SINGLETON); auth.addBinding(RootAccountRealm.NAME).to(RootAccountRealm.class).in(Scopes.SINGLETON); auth.addBinding(LdapUserAuthenticator.NAME).to(LdapUserAuthenticator.class).in(Scopes.SINGLETON); auth.addBinding(PasswordAuthenticator.NAME).to(PasswordAuthenticator.class).in(Scopes.SINGLETON); auth.addBinding(SessionAuthenticator.NAME).to(SessionAuthenticator.class).in(Scopes.SINGLETON); } }
@Override protected void configure() { final Multibinder<Plugin> pluginbinder = Multibinder.newSetBinder(binder(), Plugin.class); final Multibinder<PluginMetaData> pluginMetaDataBinder = Multibinder.newSetBinder(binder(), PluginMetaData.class); // Make sure there is a binding for the plugin rest resource classes to avoid binding errors when running // without plugins. MapBinder.newMapBinder(binder(), new TypeLiteral<String>() {}, new TypeLiteral<Class<? extends PluginRestResource>>() {}) .permitDuplicates(); for (final Plugin plugin : plugins) { pluginbinder.addBinding().toInstance(plugin); for (final PluginModule pluginModule : plugin.modules()) { binder().install(pluginModule); } pluginMetaDataBinder.addBinding().toInstance(plugin.metadata()); } } }
@Override public void configure() { final Map<String, String> optionMap = Collections.singletonMap("httpclient_name", clientName); final Annotation annotation = Names.named(clientName); bind(HttpClientDefaults.class).annotatedWith(annotation).toProvider(ConfigProvider.of(null, HttpClientDefaults.class, optionMap)).in(Scopes.SINGLETON); bind(HttpClientFactory.class).annotatedWith(annotation).toProvider(new ApacheHttpClient4FactoryProvider(annotation, observerGroups)).in(Scopes.SINGLETON); bind(HttpClient.class).annotatedWith(annotation).toProvider(new HttpClientProvider(annotation)).asEagerSingleton(); MapBinder.newMapBinder(binder(), HttpClientObserverGroup.class, HttpClientObserver.class, Names.named(OBSERVER_GROUP)).permitDuplicates(); MapBinder.newMapBinder(binder(), HttpClientObserverGroup.class, HttpClientObserverGroup.class, Names.named(INHERIT_MAP)).permitDuplicates(); }
/** * Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a * {@link Map} that is itself bound with no binding annotation. */ public static <K, V> MapBinder<K, V> newMapBinder(Binder binder, TypeLiteral<K> keyType, TypeLiteral<V> valueType) { binder = binder.skipSources(MapBinder.class, RealMapBinder.class); return newMapBinder(binder, keyType, valueType, Key.get(mapOf(keyType, valueType)), Key.get(mapOfProviderOf(keyType, valueType)), Key.get(mapOf(keyType, setOf(valueType))), Key.get(mapOfSetOfProviderOf(keyType, valueType)), Multibinder.newSetBinder(binder, entryOfProviderOf(keyType, valueType))); }
public MapBinder<String, Supplier<JsonBall>> bindOhai() { MapBinder<String, Supplier<JsonBall>> mapbinder = ohaiAutomaticAttributeBinder(binder()).permitDuplicates(); mapbinder.addBinding("ohai_time").to(OhaiTimeProvider.class); mapbinder.addBinding("jvm/system").to(SystemPropertiesProvider.class); mapbinder.addBinding("platform").to(PlatformProvider.class); mapbinder.addBinding("platform_version").to(PlatformVersionProvider.class); mapbinder.addBinding("current_user").to(CurrentUserProvider.class); return mapbinder; }
@Override public final void configure(Binder binder) { if (this.config == null) { this.config = bootstrapInjector.getInstance(Config.class); } // Guice error messages should give the code location of the error in the user's module, // not in this class. this.binder = binder.skipSources(AbstractModule.class); this.mobsimListenerMultibinder = Multibinder.newSetBinder(this.binder, MobsimListener.class); this.snapshotWriterMultibinder = Multibinder.newSetBinder(this.binder, SnapshotWriter.class); this.eventHandlerMultibinder = Multibinder.newSetBinder(this.binder, EventHandler.class); this.controlerListenerMultibinder = Multibinder.newSetBinder(this.binder, ControlerListener.class); this.attributeConverterMapBinder = MapBinder.newMapBinder( this.binder, new TypeLiteral<Class<?>>(){}, new TypeLiteral<AttributeConverter<?>>() {} ); this.qsimModulesMultibinder = Multibinder.newSetBinder(this.binder, AbstractQSimModule.class); this.install(); }
public static MapBinder<URI, URI> namespaceAliasBinder(Binder binder) { return MapBinder.newMapBinder(binder, URI.class, URI.class, NamespaceAliases.class).permitDuplicates(); }