Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package com.koushikdutta.ion.gson;
 
 import  com.google.gson.JsonElement;
 import  com.google.gson.JsonParseException;
 import  com.google.gson.JsonParser;
 import  com.google.gson.stream.JsonReader;
Created by koush on 5/27/13.
public abstract class GsonParser<T extends JsonElement> implements AsyncParser<T> {
    Class<? extends JsonElement> clazz;
    public GsonParser(Class<? extends T> clazz) {
        this. = clazz;
    }
    @Override
    public Future<T> parse(DataEmitter emitter) {
        final String charset = emitter.charset() == null ? Charset.defaultCharset().name() : emitter.charset();
        return new ByteBufferListParser().parse(emitter)
        .then(new TransformFuture<T, ByteBufferList>() {
            @Override
            protected void transform(ByteBufferList resultthrows Exception {
                JsonParser parser = new JsonParser();
                JsonElement parsed = parser.parse(new JsonReader(new InputStreamReader(new ByteBufferListInputStream(result), charset)));
                if (parsed.isJsonNull() || parsed.isJsonPrimitive())
                    throw new JsonParseException("unable to parse json");
                if (!.isInstance(parsed))
                    throw new ClassCastException(parsed.getClass().getCanonicalName() + " can not be casted to " + .getCanonicalName());
                setComplete(null, (T)parsed);
            }
        });
    }
    @Override
    public void write(DataSink sink, T valueCompletedCallback completed) {
        new StringParser().write(sinkvalue.toString(), completed);
    }
New to GrepCode? Check out our FAQ X