
br.eti.clairton.gson.hypermedia.HypermediablePaginatedCollectionSerializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gson-hypermedia Show documentation
Show all versions of gson-hypermedia Show documentation
Possibilidade de usar Hypermedia com o GSON
The newest version!
package br.eti.clairton.gson.hypermedia;
import static java.util.logging.Level.FINE;
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.logging.Logger;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import br.eti.clairton.jpa.serializer.Tagable;
import br.eti.clairton.paginated.collection.Meta;
import br.eti.clairton.paginated.collection.PaginatedCollection;
public abstract class HypermediablePaginatedCollectionSerializer extends Tagable implements JsonSerializer>, Hypermediable> {
private static final Logger logger = Logger.getLogger(HypermediablePaginatedCollectionSerializer.class.getSimpleName());
private static final long serialVersionUID = 1L;
@Override
public JsonElement serialize(final PaginatedCollection src, final Type type, final JsonSerializationContext context) {
final Collection collection = src;
final JsonElement json = context.serialize(collection, Collection.class);
final JsonObject object;
if (JsonObject.class.isInstance(json)) {
object = (JsonObject) json;
logger.log(FINE, "Already is JsonObject instance");
} else {
object = new JsonObject();
final String tag = getRootTagCollection(src);
object.add(tag, json);
logger.log(FINE, "Create json with root tag {}", tag);
}
final Meta meta = src.unwrap(Meta.class);
final JsonElement element = context.serialize(meta);
logger.log(FINE, "Add meta {}", element);
object.add("meta", element);
return object;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy