Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.koushikdutta.ion;
  
 
 
 import java.io.File;
 import java.util.Set;

Created by koush on 11/17/13.
 
 public class FileCacheStore {
     Ion ion;
     FileCache cache;
     String rawKey;
     FileCacheStore(Ion ionFileCache cacheString rawKey) {
         this. = ion;
         this. = cache;
         this. = rawKey;
     }
 
     private <T> Future<T> put(final T valuefinal AsyncParser<T> parser) {
         final SimpleFuture<T> ret = new SimpleFuture<T>();
         Ion.getIoExecutorService().execute(new Runnable() {
             @Override
             public void run() {
                 final String key = computeKey();
                 final File file = .getTempFile();
                 final FileDataSink sink = new FileDataSink(.getServer(), file);
                 parser.write(sinkvaluenew CompletedCallback() {
                     @Override
                     public void onCompleted(Exception ex) {
                         sink.end();
                         if (ex != null) {
                             file.delete();
                             ret.setComplete(ex);
                             return;
                         }
                         .commitTempFiles(keyfile);
                         ret.setComplete(value);
                     }
                 });
             }
         });
         return ret;
     }
 
     public Future<StringputString(String value) {
         return put(valuenew StringParser());
     }
 
     public Future<JsonObjectputJsonObject(JsonObject value) {
         return put(valuenew GsonObjectParser());
     }
 
     public Future<DocumentputDocument(Document value) {
         return put(valuenew DocumentParser());
     }
 
     public Future<JsonArrayputJsonArray(JsonArray value) {
         return put(valuenew GsonArrayParser());
     }
 
     /*
     public Future<InputStream> putInputStream(InputStream value) {
         throw new AssertionError("not implemented");
     }
 
     public Future<byte[]> putByteArray(byte[] bytes) {
         throw new AssertionError("not implemented");
     }
     */
 
     public <T> Future<T> put(T valueClass<T> clazz) {
         return put(valuenew GsonSerializer<T>(.configure().getGson(), clazz));
     }
 
     public <T> Future<T> put(T valueTypeToken<T> token) {
         return put(valuenew GsonSerializer<T>(.configure().getGson(), token));
     }
 
     private <T> Future<T> as(final AsyncParser<T> parser) {
         final SimpleFuture<T> ret = new SimpleFuture<T>();
        Ion.getIoExecutorService().execute(new Runnable() {
            @Override
            public void run() {
                try {
                    final String key = computeKey();
                    final File file = .getFile(key);
                    if (!file.exists()) {
                        ret.setComplete((T)null);
                        return;
                    }
                    .build(.getContext(), file)
                    .as(parser)
                    .setCallback(ret.getCompletionCallback());
                }
                catch (Exception e) {
                    ret.setComplete(e);
                }
            }
        });
        
        return ret;
    }
    private <T> T get(final AsyncParser<T> parser) {
        try {
            final String key = computeKey();
            final File file = .getFile(key);
            return .build(.getContext(), file)
            .as(parser)
            .get();
        }
        catch (Exception e) {
            return null;
        }
    }
    public String getString() {
        return get(new StringParser());
    }
    public Future<StringasString() {
        return as(new StringParser());
    }
    public Future<JsonObjectasJsonObject() {
        return as(new GsonObjectParser());
    }
    public JsonObject getJsonObject() {
        return get(new GsonObjectParser());
    }
    public Future<JsonArrayasJsonArray() {
        return as(new GsonArrayParser());
    }
    public JsonArray getJsonArray() {
        return get(new GsonArrayParser());
    }
    public Future<DocumentasDocument() {
        return as(new DocumentParser());
    }
    public Document getDocument() {
        return get(new DocumentParser());
    }
    public <T> Future<T> as(Class<T> clazz) {
        return as(new GsonSerializer<T>(.configure().getGson(), clazz));
    }
    public <T> T get(Class<T> clazz) {
        return get(new GsonSerializer<T>(.configure().getGson(), clazz));
    }
    public <T> Future<T> as(TypeToken<T> token) {
        return as(new GsonSerializer<T>(.configure().getGson(), token));
    }
    public <T> T get(TypeToken<T> token) {
        return get(new GsonSerializer<T>(.configure().getGson(), token));
    }
    private String computeKey() {
        return .replace(":""_");
    }
    public void remove() {
        final String key = computeKey();
        .remove(key);
    }
New to GrepCode? Check out our FAQ X