Java tutorial
/* * Copyright (c) 2016. Fbrica de Software - Instituto de Informtica (UFG) * Creative Commons Attribution 4.0 International License. */ package br.ufg.inf.es.saep.sandbox.dominio.infraestrutura; import br.ufg.inf.es.saep.sandbox.dominio.Pontuacao; import br.ufg.inf.es.saep.sandbox.dominio.Valor; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; /** * Servio para converso de objetos do domnio em * sequncias de caracteres e, no sentido inverso, * recuperao de objetos a partir de tais sequncias. */ public class Serializador { private static Gson gson; private static Type valorType; private static Type pontuacaoType; /** * Cria instncia de serializar preparada * para realizar converses entre objetos e * sequncias de caracters. */ public Serializador() { GsonBuilder gb = new GsonBuilder(); gb.registerTypeAdapter(Valor.class, new ValorSerializer()); gb.registerTypeAdapter(Valor.class, new ValorDeserializer()); gson = gb.create(); valorType = new TypeToken<Valor>() { }.getType(); pontuacaoType = new TypeToken<Pontuacao>() { }.getType(); } /** * Converte instncia de {@link Valor} em * sequncia de caracteres. * * @param v Instncia de {@link Valor}. * * @return Sequncia de caracteres correspondente ao * objeto fornecido no primeiro parmetro. */ public String toJson(Valor v) { return gson.toJson(v, valorType); } /** * Converte sequncia de caracteres em instncia * de {@link Valor}. * * @param json Sequncia de caracteres correspondente * a uma instncia de {@link Valor}. * * @return Instncia de {@link Valor} obtida da * sequncia de caracteres fornecida. */ public Valor valor(String json) { return gson.fromJson(json, valorType); } public String toJson(Pontuacao v) { return gson.toJson(v, pontuacaoType); } public Pontuacao pontuacao(String json) { return gson.fromJson(json, pontuacaoType); } }