68 lines
2.1 KiB
Java
68 lines
2.1 KiB
Java
package dagger.internal;
|
|
|
|
import dagger.Lazy;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public final class DoubleCheck<T> implements Provider<T>, Lazy<T> {
|
|
static final /* synthetic */ boolean $assertionsDisabled = false;
|
|
private static final Object UNINITIALIZED = new Object();
|
|
private volatile Object instance = UNINITIALIZED;
|
|
private volatile Provider<T> provider;
|
|
|
|
private DoubleCheck(Provider<T> provider) {
|
|
this.provider = provider;
|
|
}
|
|
|
|
public static <P extends Provider<T>, T> Lazy<T> lazy(P p) {
|
|
if (p instanceof Lazy) {
|
|
return (Lazy) p;
|
|
}
|
|
return new DoubleCheck((Provider) Preconditions.checkNotNull(p));
|
|
}
|
|
|
|
public static <P extends Provider<T>, T> Provider<T> provider(P p) {
|
|
Preconditions.checkNotNull(p);
|
|
return p instanceof DoubleCheck ? p : new DoubleCheck(p);
|
|
}
|
|
|
|
private static Object reentrantCheck(Object obj, Object obj2) {
|
|
if (obj == UNINITIALIZED || obj == obj2) {
|
|
return obj2;
|
|
}
|
|
throw new IllegalStateException("Scoped provider was invoked recursively returning different results: " + obj + " & " + obj2 + ". This is likely due to a circular dependency.");
|
|
}
|
|
|
|
@Override // javax.inject.Provider
|
|
public T get() {
|
|
T t2;
|
|
T t4 = (T) this.instance;
|
|
Object obj = UNINITIALIZED;
|
|
if (t4 != obj) {
|
|
return t4;
|
|
}
|
|
synchronized (this) {
|
|
try {
|
|
t2 = (T) this.instance;
|
|
if (t2 == obj) {
|
|
t2 = this.provider.get();
|
|
this.instance = reentrantCheck(this.instance, t2);
|
|
this.provider = null;
|
|
}
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
}
|
|
return t2;
|
|
}
|
|
|
|
@Deprecated
|
|
public static <P extends javax.inject.Provider<T>, T> Lazy<T> lazy(P p) {
|
|
return lazy(Providers.asDaggerProvider(p));
|
|
}
|
|
|
|
@Deprecated
|
|
public static <P extends javax.inject.Provider<T>, T> javax.inject.Provider<T> provider(P p) {
|
|
return provider(Providers.asDaggerProvider(p));
|
|
}
|
|
}
|