package com.netflix.governator.guice.transformer;
import java.util.Collection;
import com.google.common.collect.ImmutableList;
import com.google.inject.AbstractModule;
import com.google.inject.Module;
import com.google.inject.util.Modules;
import com.netflix.governator.guice.ModuleTransformer;
/**
* Treat any binding in list order as an override for previous bindings.
*
* @author elandau
*/
public class OverrideAllDuplicateBindings implements ModuleTransformer {
@Override
public Collection<Module> call(Collection<Module> modules) {
// Starting point
Module current = new AbstractModule() {
@Override
protected void configure() {
}
};
// Accumulate bindings while allowing for each to override all
// previous bindings
for (Module module : modules) {
current = Modules.override(current).with(module);
}
return ImmutableList.of(current);
}
}