package org.apache.ode.di.guice.core;
import java.lang.annotation.Annotation;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.ode.spi.di.DIContainer;
import com.google.inject.Injector;
import com.google.inject.Key;
@Singleton
public class GuiceDIContainer implements DIContainer {
@Inject
protected Injector injector;
@Override
public <T> T getInstance(Class<T> clazz) {
return injector.getInstance(clazz);
}
@Override
public <T> T getInstance(Class<T> clazz, Annotation qualifier) {
return injector.getInstance(Key.get(clazz, qualifier));
}
@Override
public <T> T getInstance(TypeLiteral<T> type) {
return (T) injector.getInstance(Key.get(type.getType()));
}
@Override
public <T> T getInstance(TypeLiteral<T> type, Annotation qualifier) {
return (T) injector.getInstance(Key.get(type.getType(), qualifier));
}
}