CacheLoader.java 3.72 KB
package com.google.common.cache;

import com.google.common.annotations.Beta;
import com.google.common.annotations.GwtCompatible;
import com.google.common.annotations.GwtIncompatible;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.base.Supplier;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListenableFutureTask;
import java.io.Serializable;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;

@GwtCompatible(emulated=true)
public abstract class CacheLoader<K, V>
{
  @Beta
  @GwtIncompatible("Executor + Futures")
  public static <K, V> CacheLoader<K, V> asyncReloading(CacheLoader<K, V> paramCacheLoader, final Executor paramExecutor)
  {
    Preconditions.checkNotNull(paramCacheLoader);
    Preconditions.checkNotNull(paramExecutor);
    new CacheLoader()
    {
      public final V load(K paramAnonymousK)
        throws Exception
      {
        return (V)this.a.load(paramAnonymousK);
      }
      
      public final Map<K, V> loadAll(Iterable<? extends K> paramAnonymousIterable)
        throws Exception
      {
        return this.a.loadAll(paramAnonymousIterable);
      }
      
      public final ListenableFuture<V> reload(final K paramAnonymousK, final V paramAnonymousV)
        throws Exception
      {
        paramAnonymousK = ListenableFutureTask.create(new Callable()
        {
          public final V call()
            throws Exception
          {
            return (V)CacheLoader.1.this.a.reload(paramAnonymousK, paramAnonymousV).get();
          }
        });
        paramExecutor.execute(paramAnonymousK);
        return paramAnonymousK;
      }
    };
  }
  
  @Beta
  public static <K, V> CacheLoader<K, V> from(Function<K, V> paramFunction)
  {
    return new a(paramFunction);
  }
  
  @Beta
  public static <V> CacheLoader<Object, V> from(Supplier<V> paramSupplier)
  {
    return new b(paramSupplier);
  }
  
  public abstract V load(K paramK)
    throws Exception;
  
  public Map<K, V> loadAll(Iterable<? extends K> paramIterable)
    throws Exception
  {
    throw new c();
  }
  
  @GwtIncompatible("Futures")
  public ListenableFuture<V> reload(K paramK, V paramV)
    throws Exception
  {
    Preconditions.checkNotNull(paramK);
    Preconditions.checkNotNull(paramV);
    return Futures.immediateFuture(load(paramK));
  }
  
  public static final class InvalidCacheLoadException
    extends RuntimeException
  {
    public InvalidCacheLoadException(String paramString)
    {
      super();
    }
  }
  
  static final class a<K, V>
    extends CacheLoader<K, V>
    implements Serializable
  {
    private static final long serialVersionUID = 0L;
    private final Function<K, V> a;
    
    public a(Function<K, V> paramFunction)
    {
      this.a = ((Function)Preconditions.checkNotNull(paramFunction));
    }
    
    public final V load(K paramK)
    {
      return (V)this.a.apply(Preconditions.checkNotNull(paramK));
    }
  }
  
  static final class b<V>
    extends CacheLoader<Object, V>
    implements Serializable
  {
    private static final long serialVersionUID = 0L;
    private final Supplier<V> a;
    
    public b(Supplier<V> paramSupplier)
    {
      this.a = ((Supplier)Preconditions.checkNotNull(paramSupplier));
    }
    
    public final V load(Object paramObject)
    {
      Preconditions.checkNotNull(paramObject);
      return (V)this.a.get();
    }
  }
  
  public static final class c
    extends UnsupportedOperationException
  {}
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/com/google/common/cache/CacheLoader.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */