23 package org.matsim.core.controler;
25 import java.util.ArrayList;
26 import java.util.List;
28 import com.google.inject.multibindings.MapBinder;
50 import com.google.inject.Binder;
51 import com.google.inject.Inject;
52 import com.google.inject.Key;
53 import com.google.inject.Module;
54 import com.google.inject.TypeLiteral;
55 import com.google.inject.binder.AnnotatedBindingBuilder;
56 import com.google.inject.binder.LinkedBindingBuilder;
57 import com.google.inject.multibindings.Multibinder;
58 import com.google.inject.name.Names;
59 import com.google.inject.util.Modules;
81 com.google.inject.Injector bootstrapInjector;
94 if (this.config == null) {
95 this.config = bootstrapInjector.getInstance(
Config.class);
111 Multibinder.newSetBinder(this.binder,
EventHandler.class);
113 MapBinder.newMapBinder(this.binder,
new TypeLiteral<Class<?>>(){},
new TypeLiteral<AttributeConverter<?>>() {} );
115 Multibinder.newSetBinder( this.binder,
AbstractQSimModule.class, Names.named(
"overridesFromAbstractModule" ) );
118 public abstract void install();
125 bootstrapInjector.injectMembers(module);
126 binder.install(module);
130 return Multibinder.newSetBinder(this.binder,
EventHandler.class).addBinding();
134 Multibinder.newSetBinder(this.binder,
AbstractQSimModule.class).addBinding().toInstance(qsimModule);
137 Multibinder.newSetBinder( this.binder,
AbstractQSimModule.class, Names.named(
"overridesFromAbstractModule" ) ).addBinding().toInstance(qsimModule);
144 return Multibinder.newSetBinder(this.binder,
ControlerListener.class).addBinding();
159 return bind(
Mobsim.class);
173 return Multibinder.newSetBinder(this.binder,
MobsimListener.class).addBinding();
177 return Multibinder.newSetBinder(this.binder,
SnapshotWriter.class).addBinding();
181 return MapBinder.newMapBinder(this.binder,
new TypeLiteral<Class<?>>(){},
new TypeLiteral<AttributeConverter<?>>() {} ).addBinding( clazz );
234 protected <T> AnnotatedBindingBuilder<T> bind(Class<T> aClass) {
235 return binder.bind(aClass);
238 protected <T> AnnotatedBindingBuilder<T> bind(TypeLiteral<T> typeLiteral) {
239 return binder.bind(typeLiteral);
242 protected <T> LinkedBindingBuilder<T> bind(Key<T> key) {
243 return binder.bind(key);
250 protected final <T> jakarta.inject.Provider<T>
getProvider(TypeLiteral<T> typeLiteral) {
251 return binder.getProvider(Key.get(typeLiteral));
258 final List<com.google.inject.Module> guiceModules =
new ArrayList<>();
260 bootstrapInjector.injectMembers(module);
261 guiceModules.add(module);
263 bootstrapInjector.injectMembers(abstractModule);
264 binder().install(Modules.override(guiceModules).with(abstractModule));
final com.google.inject.binder.LinkedBindingBuilder< TravelDisutilityFactory > bindCarTravelDisutilityFactory()
final< T > jakarta.inject.Provider< T > getProvider(TypeLiteral< T > typeLiteral)
final LinkedBindingBuilder< PersonPrepareForSimAlgorithm > addPersonPrepareForSimAlgorithm()
final void installQSimModule(AbstractQSimModule qsimModule)
final com.google.inject.binder.LinkedBindingBuilder< LeastCostPathCalculatorFactory > bindLeastCostPathCalculatorFactory()
final com.google.inject.binder.LinkedBindingBuilder< MobsimListener > addMobsimListenerBinding()
final com.google.inject.binder.LinkedBindingBuilder< SnapshotWriter > addSnapshotWriterBinding()
final com.google.inject.binder.LinkedBindingBuilder< Mobsim > bindMobsim()
final com.google.inject.binder.LinkedBindingBuilder< PlanStrategy > addPlanStrategyBinding(String selectorName)
final void configure(Binder binder)
final Key< TravelTime > carTravelTime()
final LinkedBindingBuilder< TravelTime > bindNetworkTravelTime()
final LinkedBindingBuilder< AttributeConverter<?> > addAttributeConverterBinding(final Class<?> clazz)
final Key< TravelDisutilityFactory > carTravelDisutilityFactoryKey()
void initializeMultibinders()
final LinkedBindingBuilder< RoutingModule > addRoutingModuleBinding(String mode)
final LinkedBindingBuilder< ControlerListener > addControlerListenerBinding()
static AbstractModule emptyModule()
final void install(Module module)
final com.google.inject.binder.LinkedBindingBuilder< ScoringFunctionFactory > bindScoringFunctionFactory()
final LinkedBindingBuilder< EventHandler > addEventHandlerBinding()
final Key< TravelTime > networkTravelTime()
AbstractModule(Config config)
final com.google.inject.binder.LinkedBindingBuilder< PlanSelector< Plan, Person > > bindPlanSelectorForRemoval()
final com.google.inject.binder.LinkedBindingBuilder< TravelDisutilityFactory > addTravelDisutilityFactoryBinding(String mode)
final void installOverridingQSimModule(AbstractQSimModule qsimModule)
final com.google.inject.binder.LinkedBindingBuilder< EventsManager > bindEventsManager()
final com.google.inject.binder.LinkedBindingBuilder< TravelTime > addTravelTimeBinding(String mode)