LazyBinding.java 1.37 KB
package dagger.internal;

import dagger.Lazy;

final class LazyBinding<T>
  extends Binding<Lazy<T>>
{
  private static final Object NOT_PRESENT = new Object();
  private Binding<T> delegate;
  private final String lazyKey;
  private final ClassLoader loader;
  
  public LazyBinding(String paramString1, Object paramObject, ClassLoader paramClassLoader, String paramString2)
  {
    super(paramString1, null, false, paramObject);
    this.loader = paramClassLoader;
    this.lazyKey = paramString2;
  }
  
  public final void attach(Linker paramLinker)
  {
    this.delegate = paramLinker.requestBinding(this.lazyKey, this.requiredBy, this.loader);
  }
  
  public final Lazy<T> get()
  {
    new Lazy()
    {
      private volatile Object cacheValue = LazyBinding.NOT_PRESENT;
      
      public T get()
      {
        if (this.cacheValue == LazyBinding.NOT_PRESENT) {}
        try
        {
          if (this.cacheValue == LazyBinding.NOT_PRESENT) {
            this.cacheValue = LazyBinding.this.delegate.get();
          }
          return (T)this.cacheValue;
        }
        finally {}
      }
    };
  }
  
  public final void injectMembers(Lazy<T> paramLazy)
  {
    throw new UnsupportedOperationException();
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/dagger/internal/LazyBinding.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */