package com.netflix.fabricator.guice; import java.lang.annotation.Annotation; import java.util.List; import java.util.Map; import java.util.Set; import com.google.inject.Binding; import com.google.inject.Injector; import com.google.inject.Key; import com.google.inject.MembersInjector; import com.google.inject.Module; import com.google.inject.Provider; import com.google.inject.Scope; import com.google.inject.TypeLiteral; import com.google.inject.spi.TypeConverterBinding; public class SettableInjector implements Injector { private Injector injector; @Override public void injectMembers(Object instance) { injector.injectMembers(instance); } @Override public <T> MembersInjector<T> getMembersInjector(TypeLiteral<T> typeLiteral) { return injector.getMembersInjector(typeLiteral); } @Override public <T> MembersInjector<T> getMembersInjector(Class<T> type) { return injector.getMembersInjector(type); } @Override public Map<Key<?>, Binding<?>> getBindings() { return injector.getBindings(); } @Override public Map<Key<?>, Binding<?>> getAllBindings() { return injector.getAllBindings(); } @Override public <T> Binding<T> getBinding(Key<T> key) { return injector.getBinding(key); } @Override public <T> Binding<T> getBinding(Class<T> type) { return injector.getBinding(type); } @Override public <T> Binding<T> getExistingBinding(Key<T> key) { return injector.getExistingBinding(key); } @Override public <T> List<Binding<T>> findBindingsByType(TypeLiteral<T> type) { return injector.findBindingsByType(type); } @Override public <T> Provider<T> getProvider(Key<T> key) { return injector.getProvider(key); } @Override public <T> Provider<T> getProvider(Class<T> type) { return injector.getProvider(type); } @Override public <T> T getInstance(Key<T> key) { return injector.getInstance(key); } @Override public <T> T getInstance(Class<T> type) { return injector.getInstance(type); } @Override public Injector getParent() { return injector.getParent(); } @Override public Injector createChildInjector(Iterable<? extends Module> modules) { return injector.createChildInjector(modules); } @Override public Injector createChildInjector(Module... modules) { return injector.createChildInjector(modules); } @Override public Map<Class<? extends Annotation>, Scope> getScopeBindings() { return injector.getScopeBindings(); } @Override public Set<TypeConverterBinding> getTypeConverterBindings() { return injector.getTypeConverterBindings(); } public void set(Injector injector) { this.injector = injector; } }