001package org.nuxeo.sample;
002
003import static org.nuxeo.ecm.core.io.registry.reflect.Instantiations.SINGLETON;
004import static org.nuxeo.ecm.core.io.registry.reflect.Priorities.REFERENCE;
005
006import java.io.IOException;
007import java.util.Collections;
008
009import org.nuxeo.ecm.core.api.DocumentModel;
010import org.nuxeo.ecm.core.io.marshallers.json.enrichers.AbstractJsonEnricher;
011import org.nuxeo.ecm.core.io.registry.reflect.Setup;
012
013import com.fasterxml.jackson.core.JsonGenerator;
014
015/**
016 * Enrich {@link nuxeo.ecm.core.api.DocumentModel} Json.
017 * <p>
018 * Format is:
019 *
020 * <pre>
021 * {@code
022 * {
023 *   ...
024 *   "contextParameters": {
025 *     "sample_document": { ... }
026 *   }
027 * }
028 * </pre>
029 * </p>
030 */
031@Setup(mode = SINGLETON, priority = REFERENCE)
032public class SampleDocumentEnricher extends AbstractJsonEnricher<DocumentModel> {
033
034    public static final String NAME = "sample_document";
035
036    public SampleDocumentEnricher() {
037        super(NAME);
038    }
039
040    @Override
041    public void write(JsonGenerator jg, DocumentModel obj) throws IOException {
042        // How to instanciate a Session if `obj` is a DocumentModel
043        //try (SessionWrapper wrapper = ctx.getSession(obj)) {
044        //    CoreSession session = wrapper.getSession();
045        //    ...
046        //}
047
048        jg.writeFieldName(NAME);
049        jg.writeObject(Collections.EMPTY_MAP);
050    }
051}