All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.squareup.tape.sample.GsonConverter Maven / Gradle / Ivy

// Copyright 2012 Square, Inc.
package com.squareup.tape.sample;

import com.google.gson.Gson;
import com.squareup.tape.FileObjectQueue;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

/**
 * Use GSON to serialize classes to a bytes.
 * 

* Note: This will only work when concrete classes are specified for {@code T}. If you want to specify an interface for * {@code T} then you need to also include the concrete class name in the serialized byte array so that you can * deserialize to the appropriate type. */ public class GsonConverter implements FileObjectQueue.Converter { private final Gson gson; private final Class type; public GsonConverter(Gson gson, Class type) { this.gson = gson; this.type = type; } @Override public T from(byte[] bytes) { Reader reader = new InputStreamReader(new ByteArrayInputStream(bytes)); return gson.fromJson(reader, type); } @Override public void toStream(T object, OutputStream bytes) throws IOException { Writer writer = new OutputStreamWriter(bytes); gson.toJson(object, writer); writer.close(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy