package br.com.caelum.vraptor.serialization.gson;
import java.util.Collections;
import java.util.List;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.serialization.gson.adapters.HibernateProxySerializer;
import com.google.common.collect.Lists;
import com.google.gson.JsonSerializer;
@Component
@SuppressWarnings("rawtypes")
public class DefaultJsonSerializers implements JsonSerializers {
private static boolean isHibernateProxyPresent;
static {
try {
Class.forName("org.hibernate.proxy.HibernateProxy");
isHibernateProxyPresent = true;
} catch (ClassNotFoundException e) {
isHibernateProxyPresent = false;
}
}
private final List<JsonSerializer> serializers;
public DefaultJsonSerializers(List<JsonSerializer> serializers) {
this.serializers = Lists.newArrayList(serializers);
if (isHibernateProxyPresent)
this.serializers.add(new HibernateProxySerializer());
sortSerializers();
}
public List<JsonSerializer> getSerializers() {
return serializers;
}
/**
* Override this method if you want another ordering strategy.
*/
protected void sortSerializers() {
Collections.sort(this.serializers, new PackageComparator());
}
}