23 package org.matsim.core.replanning;
25 import com.google.inject.Key;
26 import com.google.inject.Singleton;
27 import com.google.inject.TypeLiteral;
28 import com.google.inject.multibindings.MapBinder;
29 import com.google.inject.name.Names;
30 import jakarta.inject.Provider;
56 String name = settings.getStrategyName() ;
57 if (name.contains(
".")) {
59 if (name.startsWith(
"org.matsim.core")
63 throw new RuntimeException(
"Strategies in the org.matsim.core package must not be loaded by name!");
66 Class klass = Class.forName(name);
68 planStrategyMapBinder.addBinding(settings).to(klass);
69 }
else if (Provider.class.isAssignableFrom(klass)) {
70 planStrategyMapBinder.addBinding(settings).toProvider(klass);
72 throw new RuntimeException(
"You specified a class name as a strategy, but it is neither a PlanStrategy nor a Provider.");
74 }
catch (ClassNotFoundException e) {
75 throw new RuntimeException(
"You specified something which looks like a class name as a strategy, but the class could not be found.", e);
80 planStrategyMapBinder.addBinding(settings).to(Key.get(
PlanStrategy.class, Names.named(settings.getStrategyName())));