package tc.oc.commons.core.inject;
import javax.inject.Inject;
import javax.inject.Provider;
import com.google.inject.TypeLiteral;
import tc.oc.commons.core.util.Lazy;
import tc.oc.commons.core.util.ProxyUtils;
public class ProxyProvider<T> implements Provider<T> {
final Lazy<T> proxy;
@Inject
ProxyProvider(TypeLiteral<T> type, Provider<T> provider) {
proxy = Lazy.from(
() -> ProxyUtils.newProviderProxy((Class<T>) type.getRawType(), provider)
);
}
@Override
public T get() {
return proxy.get();
}
}