/** * */ package br.com.caelum.vraptor.ioc.guice; import java.util.ArrayList; import java.util.List; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Provider; final class AllImplementationsProvider<T> implements Provider<List<T>> { private final List<Class<? extends T>> types = new ArrayList<Class<? extends T>>(); private Injector injector; @Inject public void setInjector(Injector injector) { this.injector = injector; } public void addType(Class<? extends T> type) { types.add(type); } public List<T> get() { List<T> instances = new ArrayList<T>(); for (Class<? extends T> t : types) { instances.add(injector.getInstance(t)); } return instances; } }