package br.com.ec.ws.util;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.internal.StringMap;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.json.JSONConfiguration;
public class JsonUtils
{
private static Gson gsonComDataHora =
new GsonBuilder
().
setDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").
create();
private static Gson gsonComData =
new GsonBuilder
().
setDateFormat("yyyy-MM-dd").
create();
public static String gerarObjetoJsonComDataHora
(Object objeto
) {
return gsonComDataHora.
toJson(objeto
);
}
public static <T
> T gerarObjetoInformadoComDataHora
(String json,
Class<T
> objetoInformado
){
return gsonComDataHora.
fromJson(json, objetoInformado
);
}
public static String gerarObjetoJsonComData
(Object objeto
) {
return gsonComData.
toJson(objeto
);
}
public static <T
> T gerarObjetoInformadoComData
(String json,
Class<T
> objetoInformado
){
return gsonComData.
fromJson(json, objetoInformado
);
}
@
SuppressWarnings({ "rawtypes",
"unchecked" })
public static <T
> List<T
> gerarListaObjetoInformadoComDataHora
(String json,
Class<T
> classeEsperada
){
List<T
> lista =
new ArrayList<T
>();
List<StringMap
> listaObjetos = gsonComDataHora.
fromJson(json,
List.
class);
for(StringMap objeto : listaObjetos
){
T objetoGerado = gsonComDataHora.
fromJson(objeto.
toString(), classeEsperada
);
lista.
add(objetoGerado
);
}
return lista
;
}
public static <T
> List<T
> gerarListaObjetoInformadoComData
(String json,
Type type
){
List<T
> lista = gsonComData.
fromJson(json, type
);
return lista
;
}
public static Client gerarClientJsonWs
() {
ClientConfig clientConfig =
new DefaultClientConfig
();
clientConfig.
getFeatures().
put(JSONConfiguration.
FEATURE_POJO_MAPPING,
Boolean.
TRUE);
Client client = Client.
create(clientConfig
);
return client
;
}
}