Example usage for com.fasterxml.jackson.core JsonGenerator writeObjectField

List of usage examples for com.fasterxml.jackson.core JsonGenerator writeObjectField

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonGenerator writeObjectField.

Prototype

public final void writeObjectField(String fieldName, Object pojo) throws IOException, JsonProcessingException 

Source Link

Document

Convenience method for outputting a field entry ("member") that has contents of specific Java object as its value.

Usage

From source file:com.msopentech.odatajclient.engine.data.impl.JSONEntrySerializer.java

@Override
protected void doSerialize(final AbstractJSONEntry entry, final JsonGenerator jgen,
        final SerializerProvider provider) throws IOException, JsonProcessingException {

    jgen.writeStartObject();//from   www. j av a  2  s .  c  o  m

    if (entry.getMetadata() != null) {
        jgen.writeStringField(ODataConstants.JSON_METADATA, entry.getMetadata().toASCIIString());
    }
    if (StringUtils.isNotBlank(entry.getType())) {
        jgen.writeStringField(ODataConstants.JSON_TYPE, entry.getType());
    }
    if (entry.getId() != null) {
        jgen.writeStringField(ODataConstants.JSON_ID, entry.getId());
    }

    if (entry.getSelfLink() != null) {
        jgen.writeStringField(ODataConstants.JSON_READ_LINK, entry.getSelfLink().getHref());
    }

    if (entry.getEditLink() != null) {
        jgen.writeStringField(ODataConstants.JSON_EDIT_LINK, entry.getEditLink().getHref());
    }

    if (entry.getMediaContentSource() != null) {
        jgen.writeStringField(ODataConstants.JSON_MEDIAREAD_LINK, entry.getMediaContentSource());
    }
    if (entry.getMediaContentType() != null) {
        jgen.writeStringField(ODataConstants.JSON_MEDIA_CONTENT_TYPE, entry.getMediaContentType());
    }

    final Map<String, List<String>> entitySetLinks = new HashMap<String, List<String>>();

    for (JSONLink link : entry.getNavigationLinks()) {
        if (link.getInlineEntry() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
        } else if (link.getInlineFeed() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineFeed());
        } else {
            ODataLinkType type = null;
            try {
                type = ODataLinkType.fromString(client, link.getRel(), link.getType());
            } catch (IllegalArgumentException e) {
                // ignore   
            }

            if (type == ODataLinkType.ENTITY_SET_NAVIGATION) {
                final List<String> uris;
                if (entitySetLinks.containsKey(link.getTitle())) {
                    uris = entitySetLinks.get(link.getTitle());
                } else {
                    uris = new ArrayList<String>();
                    entitySetLinks.put(link.getTitle(), uris);
                }
                uris.add(link.getHref());
            } else {
                jgen.writeStringField(link.getTitle() + ODataConstants.JSON_BIND_LINK_SUFFIX, link.getHref());
            }
        }
    }
    for (Map.Entry<String, List<String>> entitySetLink : entitySetLinks.entrySet()) {
        jgen.writeArrayFieldStart(entitySetLink.getKey() + ODataConstants.JSON_BIND_LINK_SUFFIX);
        for (String uri : entitySetLink.getValue()) {
            jgen.writeString(uri);
        }
        jgen.writeEndArray();
    }

    for (JSONLink link : entry.getMediaEditLinks()) {
        if (link.getTitle() == null) {
            jgen.writeStringField(ODataConstants.JSON_MEDIAEDIT_LINK, link.getHref());
        }

        if (link.getInlineEntry() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
        }
        if (link.getInlineFeed() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineFeed());
        }
    }

    if (entry.getMediaEntryProperties() == null) {
        JSONDOMTreeUtils.writeSubtree(client, jgen, entry.getContent());
    } else {
        JSONDOMTreeUtils.writeSubtree(client, jgen, entry.getMediaEntryProperties());
    }

    jgen.writeEndObject();
}

From source file:org.apache.olingo.commons.core.data.JSONEntrySerializer.java

@Override
protected void doSerialize(final JSONEntryImpl entry, final JsonGenerator jgen,
        final SerializerProvider provider) throws IOException, JsonProcessingException {

    jgen.writeStartObject();/*from  w w w  .  j  a v a 2s  .c om*/

    if (entry.getMetadata() != null) {
        jgen.writeStringField(Constants.JSON_METADATA, entry.getMetadata().toASCIIString());
    }
    if (entry.getId() != null) {
        jgen.writeStringField(Constants.JSON_ID, entry.getId());
    }

    final Map<String, List<String>> entitySetLinks = new HashMap<String, List<String>>();

    for (Link link : entry.getNavigationLinks()) {
        ODataLinkType type = null;
        try {
            type = ODataLinkType.fromString(version, link.getRel(), link.getType());
        } catch (IllegalArgumentException e) {
            // ignore   
        }

        if (type == ODataLinkType.ENTITY_SET_NAVIGATION) {
            final List<String> uris;
            if (entitySetLinks.containsKey(link.getTitle())) {
                uris = entitySetLinks.get(link.getTitle());
            } else {
                uris = new ArrayList<String>();
                entitySetLinks.put(link.getTitle(), uris);
            }
            uris.add(link.getHref());
        } else {
            if (StringUtils.isNotBlank(link.getHref())) {
                jgen.writeStringField(link.getTitle() + Constants.JSON_BIND_LINK_SUFFIX, link.getHref());
            }
        }

        if (link.getInlineEntry() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
        } else if (link.getInlineFeed() != null) {
            jgen.writeArrayFieldStart(link.getTitle());
            for (Entry subEntry : link.getInlineFeed().getEntries()) {
                jgen.writeObject(subEntry);
            }
            jgen.writeEndArray();
        }
    }
    for (Map.Entry<String, List<String>> entitySetLink : entitySetLinks.entrySet()) {
        jgen.writeArrayFieldStart(entitySetLink.getKey() + Constants.JSON_BIND_LINK_SUFFIX);
        for (String uri : entitySetLink.getValue()) {
            jgen.writeString(uri);
        }
        jgen.writeEndArray();
    }

    for (Link link : entry.getMediaEditLinks()) {
        if (link.getTitle() == null) {
            jgen.writeStringField(Constants.JSON_MEDIAEDIT_LINK, link.getHref());
        }

        if (link.getInlineEntry() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
        }
        if (link.getInlineFeed() != null) {
            jgen.writeArrayFieldStart(link.getTitle());
            for (Entry subEntry : link.getInlineFeed().getEntries()) {
                jgen.writeObject(subEntry);
            }
            jgen.writeEndArray();
        }
    }

    for (Property property : entry.getProperties()) {
        property(jgen, property, property.getName());
    }

    jgen.writeEndObject();
}

From source file:com.msopentech.odatajclient.engine.data.json.JSONEntrySerializer.java

@Override
protected void doSerializeV3(AbstractJSONEntry<AbstractLinkResource<?, ?>> entry, JsonGenerator jgen,
        SerializerProvider provider) throws IOException, JsonProcessingException {
    jgen.writeStartObject();/*  w  w  w . ja v  a2  s.co m*/

    if (entry.getMetadata() != null) {
        jgen.writeStringField(ODataConstants.JSON_METADATA, entry.getMetadata().toASCIIString());
    }
    if (StringUtils.isNotBlank(entry.getType())) {
        jgen.writeStringField(ODataConstants.JSON_TYPE, entry.getType());
    }
    if (entry.getId() != null) {
        jgen.writeStringField(ODataConstants.JSON_ID, entry.getId());
    }

    if (entry.getSelfLink() != null) {
        jgen.writeStringField(ODataConstants.JSON_READ_LINK, entry.getSelfLink().getHref());
    }

    if (entry.getEditLink() != null) {
        jgen.writeStringField(ODataConstants.JSON_EDIT_LINK, entry.getEditLink().getHref());
    }

    if (entry.getMediaContentSource() != null) {
        jgen.writeStringField(ODataConstants.JSON_MEDIAREAD_LINK, entry.getMediaContentSource());
    }
    if (entry.getMediaContentType() != null) {
        jgen.writeStringField(ODataConstants.JSON_MEDIA_CONTENT_TYPE, entry.getMediaContentType());
    }

    final Map<String, List<String>> entitySetLinks = new HashMap<String, List<String>>();

    for (AbstractLinkResource link : (List<? extends AbstractLinkResource<?, ?>>) entry.getNavigationLinks()) {
        if (link.getInlineEntry() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
        } else if (link.getInlineFeed() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineFeed());
        } else {
            ODataLinkType type = null;
            try {
                type = ODataLinkType.fromString(link.getRel(), link.getType());
            } catch (IllegalArgumentException e) {
                // ignore
            }

            if (type == ODataLinkType.ENTITY_SET_NAVIGATION) {
                final List<String> uris;
                if (entitySetLinks.containsKey(link.getTitle())) {
                    uris = entitySetLinks.get(link.getTitle());
                } else {
                    uris = new ArrayList<String>();
                    entitySetLinks.put(link.getTitle(), uris);
                }
                uris.add(link.getHref());
            } else {
                jgen.writeStringField(link.getTitle() + ODataConstants.JSON_BIND_LINK_SUFFIX, link.getHref());
            }
        }
    }
    for (Map.Entry<String, List<String>> entitySetLink : entitySetLinks.entrySet()) {
        jgen.writeArrayFieldStart(entitySetLink.getKey() + ODataConstants.JSON_BIND_LINK_SUFFIX);
        for (String uri : entitySetLink.getValue()) {
            jgen.writeString(uri);
        }
        jgen.writeEndArray();
    }

    for (AbstractLinkResource link : (List<? extends AbstractLinkResource<?, ?>>) entry.getMediaEditLinks()) {
        if (link.getTitle() == null) {
            jgen.writeStringField(ODataConstants.JSON_MEDIAEDIT_LINK, link.getHref());
        }

        if (link.getInlineEntry() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
        }
        if (link.getInlineFeed() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineFeed());
        }
    }

    if (entry.getMediaEntryProperties() == null) {
        DOMTreeUtils.writeSubtree(client, jgen, entry.getContent());
    } else {
        DOMTreeUtils.writeSubtree(client, jgen, entry.getMediaEntryProperties());
    }

    jgen.writeEndObject();
}

From source file:com.msopentech.odatajclient.engine.data.json.JSONEntrySerializer.java

@Override
protected void doSerializeV4(AbstractJSONEntry<AbstractLinkResource<?, ?>> entry, JsonGenerator jgen,
        SerializerProvider provider) throws IOException, JsonProcessingException {
    final String annotationPrefix = "@";

    jgen.writeStartObject();/*from   w  w w . j  av  a2  s  .c o m*/

    if (entry.getMetadata() != null) {
        jgen.writeStringField(annotationPrefix + ODataConstants.JSON_METADATA,
                entry.getMetadata().toASCIIString());
    }
    if (StringUtils.isNotBlank(entry.getType())) {
        jgen.writeStringField(annotationPrefix + ODataConstants.JSON_TYPE, entry.getType());
    }
    if (entry.getId() != null) {
        jgen.writeStringField(annotationPrefix + ODataConstants.JSON_ID, entry.getId());
    }

    if (entry.getSelfLink() != null) {
        jgen.writeStringField(annotationPrefix + ODataConstants.JSON_READ_LINK, entry.getSelfLink().getHref());
    }

    if (entry.getEditLink() != null) {
        jgen.writeStringField(annotationPrefix + ODataConstants.JSON_EDIT_LINK, entry.getEditLink().getHref());
    }

    if (entry.getMediaContentSource() != null) {
        jgen.writeStringField(annotationPrefix + ODataConstants.JSON_MEDIAREAD_LINK,
                entry.getMediaContentSource());
    }
    if (entry.getMediaContentType() != null) {
        jgen.writeStringField(annotationPrefix + ODataConstants.JSON_MEDIA_CONTENT_TYPE,
                entry.getMediaContentType());
    }

    final Map<String, List<String>> entitySetLinks = new HashMap<String, List<String>>();

    for (AbstractLinkResource link : (List<? extends AbstractLinkResource<?, ?>>) entry.getNavigationLinks()) {
        if (link.getInlineEntry() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
        } else if (link.getInlineFeed() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineFeed());
        } else {
            ODataLinkType type = null;
            try {
                type = ODataLinkType.fromString(link.getRel(), link.getType());
            } catch (IllegalArgumentException e) {
                // ignore
            }

            if (type == ODataLinkType.ENTITY_SET_NAVIGATION) {
                final List<String> uris;
                if (entitySetLinks.containsKey(link.getTitle())) {
                    uris = entitySetLinks.get(link.getTitle());
                } else {
                    uris = new ArrayList<String>();
                    entitySetLinks.put(link.getTitle(), uris);
                }
                uris.add(link.getHref());
            } else {
                jgen.writeStringField(link.getTitle() + ODataConstants.JSON_BIND_LINK_SUFFIX, link.getHref());
            }
        }
    }
    for (Map.Entry<String, List<String>> entitySetLink : entitySetLinks.entrySet()) {
        jgen.writeArrayFieldStart(entitySetLink.getKey() + ODataConstants.JSON_BIND_LINK_SUFFIX);
        for (String uri : entitySetLink.getValue()) {
            jgen.writeString(uri);
        }
        jgen.writeEndArray();
    }

    for (AbstractLinkResource link : (List<? extends AbstractLinkResource<?, ?>>) entry.getMediaEditLinks()) {
        if (link.getTitle() == null) {
            jgen.writeStringField(annotationPrefix + ODataConstants.JSON_MEDIAEDIT_LINK, link.getHref());
        }

        if (link.getInlineEntry() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
        }
        if (link.getInlineFeed() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineFeed());
        }
    }

    if (entry.getMediaEntryProperties() == null) {
        DOMTreeUtils.writeSubtree(client, jgen, entry.getContent());
    } else {
        DOMTreeUtils.writeSubtree(client, jgen, entry.getMediaEntryProperties());
    }

    jgen.writeEndObject();
}

From source file:com.arpnetworking.logback.serialization.BaseSerializationStrategy.java

/**
 * Complete writing the Steno JSON wrapper.
 *
 * @param event Instance of <code>ILoggingEvent</code>.
 * @param eventName The name of the event.
 * @param contextKeys The <code>List</code> of context keys.
 * @param contextValues The <code>List</code> of context values.
 * @param jsonGenerator <code>JsonGenerator</code> instance.
 * @param objectMapper <code>ObjectMapper</code> instance.
 * @throws IOException If writing JSON fails.
 *///from w ww.jav a  2 s  .  c o  m
// CHECKSTYLE.OFF: NPathComplexity - Many combinations
protected void endStenoWrapper(final ILoggingEvent event, final String eventName,
        final List<String> contextKeys, final List<Object> contextValues, final JsonGenerator jsonGenerator,
        final ObjectMapper objectMapper) throws IOException {

    jsonGenerator.writeObjectFieldStart("context");
    if (_encoder.isInjectContextHost()) {
        jsonGenerator.writeStringField("host", HOST_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextProcess()) {
        jsonGenerator.writeStringField("processId", PROCESS_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextThread()) {
        jsonGenerator.writeStringField("threadId", THREAD_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextLogger()) {
        if (_encoder.isCompressLoggerName()) {
            jsonGenerator.writeStringField("logger", CONDENSED_LOGGER_CONVERTER.convert(event));
        } else {
            jsonGenerator.writeStringField("logger", LOGGER_CONVERTER.convert(event));
        }
    }
    if (_encoder.isInjectContextFile()) {
        jsonGenerator.writeStringField("file", FILE_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextClass()) {
        jsonGenerator.writeStringField("class", CLASS_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextMethod()) {
        jsonGenerator.writeStringField("method", METHOD_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextLine()) {
        jsonGenerator.writeStringField("line", LINE_CONVERTER.convert(event));
    }
    for (final String key : _encoder.getMdcProperties()) {
        final String value = event.getMDCPropertyMap().get(key);
        jsonGenerator.writeStringField(key, value);
    }
    writeKeyValuePairs(contextKeys, contextValues, jsonGenerator, objectMapper);
    jsonGenerator.writeEndObject(); // End 'context' field
    jsonGenerator.writeObjectField("id", createId());
    jsonGenerator.writeObjectField("version", "0");
    jsonGenerator.writeEndObject(); // End log message
    jsonGenerator.writeRaw('\n');
    jsonGenerator.flush();
}

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

protected void serializeContext(Object bean, JsonGenerator jgen, SerializerProvider serializerProvider,
        Deque<LdContext> contextStack) throws IOException {
    // TODO: this code is duplicated from JacksonHydraSerializer, see there for considerations
    if (proxyUnwrapper != null) {
        bean = proxyUnwrapper.unwrapProxy(bean);
    }//from www. ja v a 2 s. c o m
    MixinSource mixinSource = new JacksonMixinSource(serializerProvider.getConfig());
    final Class<?> mixInClass = mixinSource.findMixInClassFor(bean.getClass());

    final LdContext parentContext = contextStack.peek();
    LdContext currentContext = new LdContext(parentContext,
            ldContextFactory.getVocab(mixinSource, bean, mixInClass),
            ldContextFactory.getTerms(mixinSource, bean, mixInClass));
    contextStack.push(currentContext);
    // check if we need to write a context for the current bean at all
    // If it is in the same vocab: no context
    // If the terms are already defined in the context: no context
    boolean mustWriteContext;
    if (parentContext == null || !parentContext.contains(currentContext)) {
        mustWriteContext = true;
    } else {
        mustWriteContext = false;
    }

    if (mustWriteContext) {
        // begin context
        // default context: schema.org vocab or vocab package annotation
        jgen.writeObjectFieldStart("@context");
        // do not repeat vocab if already defined in current context
        if (parentContext == null || parentContext.vocab == null
                || (currentContext.vocab != null && !currentContext.vocab.equals(parentContext.vocab))) {
            jgen.writeStringField(JsonLdKeywords.AT_VOCAB, currentContext.vocab);
        }

        for (Map.Entry<String, Object> termEntry : currentContext.terms.entrySet()) {
            if (termEntry.getValue() instanceof String) {
                jgen.writeStringField(termEntry.getKey(), termEntry.getValue().toString());
            } else {
                jgen.writeObjectField(termEntry.getKey(), termEntry.getValue());
            }
        }
        jgen.writeEndObject();
        // end context
    }
}

From source file:org.apache.olingo.client.core.serialization.JsonEntitySerializer.java

protected void doContainerSerialize(final ResWrap<Entity> container, final JsonGenerator jgen)
        throws IOException, EdmPrimitiveTypeException {

    final Entity entity = container.getPayload();

    jgen.writeStartObject();/*from w  w  w.  j a  va  2 s  . com*/

    if (serverMode) {
        if (container.getContextURL() != null) {
            jgen.writeStringField(Constants.JSON_CONTEXT, container.getContextURL().toASCIIString());
        }
        if (StringUtils.isNotBlank(container.getMetadataETag())) {
            jgen.writeStringField(Constants.JSON_METADATA_ETAG, container.getMetadataETag());
        }

        if (StringUtils.isNotBlank(entity.getETag())) {
            jgen.writeStringField(Constants.JSON_ETAG, entity.getETag());
        }
    }

    if (StringUtils.isNotBlank(entity.getType()) && !isODataMetadataNone(contentType)) {
        jgen.writeStringField(Constants.JSON_TYPE,
                new EdmTypeInfo.Builder().setTypeExpression(entity.getType()).build().external());
    }

    if (entity.getId() != null && !isODataMetadataNone(contentType)) {
        jgen.writeStringField(Constants.JSON_ID, entity.getId().toASCIIString());
    }

    for (Annotation annotation : entity.getAnnotations()) {
        valuable(jgen, annotation, "@" + annotation.getTerm());
    }

    for (Property property : entity.getProperties()) {
        valuable(jgen, property, property.getName());
    }

    if (serverMode && entity.getEditLink() != null && StringUtils.isNotBlank(entity.getEditLink().getHref())) {
        jgen.writeStringField(Constants.JSON_EDIT_LINK, entity.getEditLink().getHref());

        if (entity.isMediaEntity()) {
            jgen.writeStringField(Constants.JSON_MEDIA_READ_LINK, entity.getEditLink().getHref() + "/$value");
        }
    }

    if (!isODataMetadataNone(contentType)) {
        links(entity, jgen);
    }

    for (Link link : entity.getMediaEditLinks()) {
        if (link.getTitle() == null) {
            jgen.writeStringField(Constants.JSON_MEDIA_EDIT_LINK, link.getHref());
        }

        if (link.getInlineEntity() != null) {
            jgen.writeObjectField(link.getTitle(), link.getInlineEntity());
        }
        if (link.getInlineEntitySet() != null) {
            jgen.writeArrayFieldStart(link.getTitle());
            for (Entity subEntry : link.getInlineEntitySet().getEntities()) {
                jgen.writeObject(subEntry);
            }
            jgen.writeEndArray();
        }
    }

    if (serverMode) {
        for (Operation operation : entity.getOperations()) {
            jgen.writeObjectFieldStart(
                    "#" + StringUtils.substringAfterLast(operation.getMetadataAnchor(), "#"));
            jgen.writeStringField(Constants.ATTR_TITLE, operation.getTitle());
            jgen.writeStringField(Constants.ATTR_TARGET, operation.getTarget().toASCIIString());
            jgen.writeEndObject();
        }
    }

    jgen.writeEndObject();
}

From source file:de.escalon.hypermedia.hydra.serialize.JacksonHydraSerializer.java

private void serializeContext(Object bean, JsonGenerator jgen, SerializerProvider serializerProvider,
        Deque<String> deque) throws IOException {
    try {/* w  w  w . jav a 2  s.com*/
        // TODO use serializerProvider.getAttributes to hold a stack of contexts
        // and check if we need to write a context for the current bean at all
        // If it is in the same vocab: no context
        // If the terms are already defined in the context: no context

        SerializationConfig config = serializerProvider.getConfig();
        final Class<?> mixInClass = config.findMixInClassFor(bean.getClass());

        String vocab = getVocab(bean, mixInClass);
        Map<String, Object> terms = getTerms(bean, mixInClass);

        final String currentVocab = deque.peek();

        deque.push(vocab);
        boolean mustWriteContext;
        if (currentVocab == null || !vocab.equals(currentVocab)) {
            mustWriteContext = true;
        } else {
            // only write if bean has terms
            if (terms.isEmpty()) {
                mustWriteContext = false;
            } else {
                // TODO actually, need not repeat vocab in context if same
                mustWriteContext = true;
            }
        }

        if (mustWriteContext) {
            // begin context
            // default context: schema.org vocab or vocab package annotation
            jgen.writeObjectFieldStart("@context");
            // TODO do not repeat vocab if already defined in current context
            if (currentVocab == null || !vocab.equals(currentVocab)) {
                jgen.writeStringField(AT_VOCAB, vocab);
            }

            for (Map.Entry<String, Object> termEntry : terms.entrySet()) {
                if (termEntry.getValue() instanceof String) {
                    jgen.writeStringField(termEntry.getKey(), termEntry.getValue().toString());
                } else {
                    jgen.writeObjectField(termEntry.getKey(), termEntry.getValue());
                }
            }

            jgen.writeEndObject();
        }

        // end context

        // TODO build the context from @Vocab and @Term and @Expose and write it as local or external context with
        // TODO jsonld extension (using apt?)
        // TODO also allow manually created jsonld contexts
        // TODO how to define a context containing several context objects? @context is then an array of
        // TODO external context strings pointing to json-ld, and json objects containing terms
        // TODO another option: create custom vocabulary without reference to public vocabs
        // TODO support additionalType from goodrelations
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

From source file:org.openiot.security.oauth.OAuth20ProfileController.java

@Override
protected ModelAndView handleRequestInternal(final HttpServletRequest request,
        final HttpServletResponse response) throws Exception {
    final String accessToken = request.getParameter(OAuthConstants.ACCESS_TOKEN);
    log.debug("accessToken : {}", accessToken);

    final JsonFactory jsonFactory = new JsonFactory();
    final JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(response.getWriter());

    response.setContentType("application/json");

    // accessToken is required
    if (StringUtils.isBlank(accessToken)) {
        log.error("missing accessToken");
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", OAuthConstants.MISSING_ACCESS_TOKEN);
        jsonGenerator.writeEndObject();/*  w  w  w.j  a v  a 2s. c  o m*/
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    // get ticket granting ticket
    final TicketGrantingTicket ticketGrantingTicket = (TicketGrantingTicket) this.ticketRegistry
            .getTicket(accessToken);
    if (ticketGrantingTicket == null || ticketGrantingTicket.isExpired()) {
        log.error("expired accessToken : {}", accessToken);
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", OAuthConstants.EXPIRED_ACCESS_TOKEN);
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    // generate profile : identifier + attributes
    final Principal principal = ticketGrantingTicket.getAuthentication().getPrincipal();
    jsonGenerator.writeStartObject();
    jsonGenerator.writeStringField(CasWrapperProfile.ID, principal.getId());
    jsonGenerator.writeArrayFieldStart(CasWrapperProfile.ATTRIBUTES);
    final Map<String, Object> attributes = principal.getAttributes();
    for (final String key : attributes.keySet()) {
        jsonGenerator.writeStartObject();
        Object vals = attributes.get(key);
        if (vals instanceof Iterable<?>) {
            jsonGenerator.writeArrayFieldStart(key);
            for (final Object value : (Iterable<?>) vals)
                jsonGenerator.writeString(value.toString());
            jsonGenerator.writeEndArray();
        } else if ("role_name".equals(key)) {
            jsonGenerator.writeArrayFieldStart(key);
            if (!StringUtils.isBlank((String) vals))
                jsonGenerator.writeString(vals.toString());
            jsonGenerator.writeEndArray();
        } else
            jsonGenerator.writeObjectField(key, attributes.get(key));

        jsonGenerator.writeEndObject();
    }
    jsonGenerator.writeEndArray();
    jsonGenerator.writeEndObject();
    jsonGenerator.close();
    response.flushBuffer();
    return null;
}