Example usage for com.fasterxml.jackson.databind JsonSerializer unwrappingSerializer

List of usage examples for com.fasterxml.jackson.databind JsonSerializer unwrappingSerializer

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind JsonSerializer unwrappingSerializer.

Prototype

public JsonSerializer<T> unwrappingSerializer(NameTransformer paramNameTransformer) 

Source Link

Usage

From source file:de.escalon.hypermedia.spring.hydra.ResourceSerializer.java

@Override
public void serialize(Resource value, JsonGenerator jgen, SerializerProvider provider) throws IOException {

    final SerializationConfig config = provider.getConfig();
    JavaType javaType = config.constructType(value.getClass());

    JsonSerializer<Object> serializer = BeanSerializerFactory.instance.createSerializer(provider, javaType);

    jgen.writeStartObject();/* w w w.j a v a 2s .  co m*/
    serializer.unwrappingSerializer(NameTransformer.NOP).serialize(value, jgen, provider);

    jgen.writeEndObject();

}

From source file:de.escalon.hypermedia.spring.de.escalon.hypermedia.spring.jackson.ResourceSerializer.java

@Override
public void serialize(Resource value, JsonGenerator jgen, SerializerProvider provider) throws IOException {

    final SerializationConfig config = provider.getConfig();
    JavaType javaType = config.constructType(value.getClass());

    JsonSerializer<Object> serializer = BeanSerializerFactory.instance.createSerializer(provider, javaType);

    jgen.writeStartObject();//from ww w  . j a  v a  2  s .  c o m
    serializer.unwrappingSerializer(NameTransformer.NOP).serialize(value, jgen, provider);

    //        // make a Link Serializer
    //        for (Link link : value.getLinks()) {
    //            final String rel = link.getRel();
    //            String linkFieldName = IanaRels.isIanaRel(rel) ? IANA_REL_PREFIX + rel : rel;
    //            jgen.writeFieldName(linkFieldName);
    //            jgen.writeStartObject();
    //            jgen.writeStringField("@id", link.getHref());
    //            jgen.writeEndObject();
    //        }
    jgen.writeEndObject();

}

From source file:de.escalon.hypermedia.spring.hydra.PagedResourcesSerializer.java

@Override
public void serialize(PagedResources pagedResources, JsonGenerator jgen, SerializerProvider serializerProvider)
        throws IOException {

    final SerializationConfig config = serializerProvider.getConfig();
    JavaType javaType = config.constructType(pagedResources.getClass());

    JsonSerializer<Object> serializer = BeanSerializerFactory.instance.createSerializer(serializerProvider,
            javaType);//ww w.j  av  a 2s .  c o  m

    // replicate pretty much everything from JacksonHydraSerializer
    // since we must reorganize the internals of pagedResources to get a hydra collection
    // with partial page view, we have to serialize pagedResources with an
    // unwrapping serializer
    Deque<LdContext> contextStack = (Deque<LdContext>) serializerProvider.getAttribute(KEY_LD_CONTEXT);
    if (contextStack == null) {
        contextStack = new ArrayDeque<LdContext>();
        serializerProvider.setAttribute(KEY_LD_CONTEXT, contextStack);
    }

    // TODO: filter next/previous/first/last from link list - maybe create new PagedResources without them?
    List<Link> links = pagedResources.getLinks();
    List<Link> filteredLinks = new ArrayList<Link>();
    for (Link link : links) {
        String rel = link.getRel();
        if (navigationRels.contains(rel)) {
            continue;
        } else {
            filteredLinks.add(link);
        }
    }

    PagedResources toRender = new PagedResources(pagedResources.getContent(), pagedResources.getMetadata(),
            filteredLinks);

    jgen.writeStartObject();

    serializeContext(toRender, jgen, serializerProvider, contextStack);

    jgen.writeStringField(JsonLdKeywords.AT_TYPE, "hydra:Collection");

    // serialize with PagedResourcesMixin
    serializer.unwrappingSerializer(NameTransformer.NOP).serialize(toRender, jgen, serializerProvider);

    PagedResources.PageMetadata metadata = pagedResources.getMetadata();
    jgen.writeNumberField("hydra:totalItems", metadata.getTotalElements());

    // begin hydra:view
    jgen.writeObjectFieldStart("hydra:view");
    jgen.writeStringField(JsonLdKeywords.AT_TYPE, "hydra:PartialCollectionView");
    writeRelLink(pagedResources, jgen, Link.REL_NEXT);
    writeRelLink(pagedResources, jgen, "previous");
    // must also translate prev to its synonym previous
    writeRelLink(pagedResources, jgen, Link.REL_PREVIOUS, "previous");
    writeRelLink(pagedResources, jgen, Link.REL_FIRST);
    writeRelLink(pagedResources, jgen, Link.REL_LAST);
    jgen.writeEndObject();
    // end hydra:view

    jgen.writeEndObject();

    contextStack = (Deque<LdContext>) serializerProvider.getAttribute(KEY_LD_CONTEXT);
    if (!contextStack.isEmpty()) {
        contextStack.pop();
    }

}