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

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

Introduction

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

Prototype

public abstract void writeEndArray() throws IOException, JsonGenerationException;

Source Link

Document

Method for writing closing marker of a JSON Array value (character ']'; plus possible white space decoration if pretty-printing is enabled).

Usage

From source file:org.apache.olingo.server.core.serializer.json.ODataJsonSerializer.java

protected void writeProperty(final ServiceMetadata metadata, final EdmProperty edmProperty,
        final Property property, final Set<List<String>> selectedPaths, final JsonGenerator json,
        Set<List<String>> expandedPaths, Linked linked, ExpandOption expand)
        throws IOException, SerializerException {
    boolean isStreamProperty = isStreamProperty(edmProperty);
    writePropertyType(edmProperty, json);
    if (!isStreamProperty) {
        json.writeFieldName(edmProperty.getName());
    }//www .j a  v  a 2 s .  c  o m
    if (property == null || property.isNull()) {
        if (edmProperty.isNullable() == Boolean.FALSE && !isStreamProperty) {
            throw new SerializerException("Non-nullable property not present!",
                    SerializerException.MessageKeys.MISSING_PROPERTY, edmProperty.getName());
        } else {
            if (!isStreamProperty) {
                if (edmProperty.isCollection()) {
                    json.writeStartArray();
                    json.writeEndArray();
                } else {
                    json.writeNull();
                }
            }
        }
    } else {
        writePropertyValue(metadata, edmProperty, property, selectedPaths, json, expandedPaths, linked, expand);
    }
}

From source file:org.apache.olingo.server.core.serializer.json.ODataJsonSerializer.java

protected void writeExpandedNavigationProperty(final ServiceMetadata metadata,
        final EdmNavigationProperty property, final Link navigationLink, final ExpandOption innerExpand,
        Integer toDepth, final SelectOption innerSelect, final CountOption innerCount,
        final boolean writeOnlyCount, final boolean writeOnlyRef, final Set<String> ancestors, String name,
        final JsonGenerator json) throws IOException, SerializerException, DecoderException {

    if (property.isCollection()) {
        if (writeOnlyCount) {
            if (navigationLink == null || navigationLink.getInlineEntitySet() == null) {
                writeInlineCount(property.getName(), 0, json);
            } else {
                writeInlineCount(property.getName(), navigationLink.getInlineEntitySet().getCount(), json);
            }//from  w w w.j  a va 2  s .co m
        } else {
            if (navigationLink == null || navigationLink.getInlineEntitySet() == null) {
                if (innerCount != null && innerCount.getValue()) {
                    writeInlineCount(property.getName(), 0, json);
                }
                json.writeFieldName(property.getName());
                json.writeStartArray();
                json.writeEndArray();
            } else {
                if (innerCount != null && innerCount.getValue()) {
                    writeInlineCount(property.getName(), navigationLink.getInlineEntitySet().getCount(), json);
                }
                json.writeFieldName(property.getName());
                writeEntitySet(metadata, property.getType(), navigationLink.getInlineEntitySet(), innerExpand,
                        toDepth, innerSelect, writeOnlyRef, ancestors, name, json);
            }
        }
    } else {
        json.writeFieldName(property.getName());
        if (navigationLink == null || navigationLink.getInlineEntity() == null) {
            json.writeNull();
        } else {
            writeEntity(metadata, property.getType(), navigationLink.getInlineEntity(), null, innerExpand,
                    toDepth, innerSelect, writeOnlyRef, ancestors, name, json);
        }
    }
}

From source file:com.predic8.membrane.core.interceptor.administration.AdminRESTInterceptor.java

@Mapping("/admin/rest/proxies(/?\\?.*)?")
public Response getProxies(final QueryParameter params, String relativeRootPath) throws Exception {
    final List<AbstractServiceProxy> proxies = getServiceProxies();

    if ("order".equals(params.getString("sort"))) {
        if (params.getString("order", "asc").equals("desc"))
            Collections.reverse(proxies);
    } else {/*from   ww w. j a  v  a2  s  . c  o  m*/
        Collections.sort(proxies, ComparatorFactory.getAbstractServiceProxyComparator(
                params.getString("sort", "name"), params.getString("order", "asc")));
    }

    final int offset = params.getInt("offset", 0);
    int max = params.getInt("max", proxies.size());

    final List<AbstractServiceProxy> paginated = proxies.subList(offset,
            Math.min(offset + max, proxies.size()));

    return json(new JSONContent() {
        public void write(JsonGenerator gen) throws Exception {
            gen.writeStartObject();
            gen.writeArrayFieldStart("proxies");
            int i = offset;
            if (params.getString("order", "asc").equals("desc"))
                i = proxies.size() - i + 1;
            for (AbstractServiceProxy p : paginated) {
                gen.writeStartObject();
                gen.writeNumberField("order", i += params.getString("order", "asc").equals("desc") ? -1 : 1);
                gen.writeStringField("name", p.toString());
                gen.writeBooleanField("active", p.isActive());
                if (!p.isActive())
                    gen.writeStringField("error", p.getErrorState());
                gen.writeNumberField("listenPort", p.getKey().getPort());
                gen.writeStringField("virtualHost", p.getKey().getHost());
                gen.writeStringField("method", p.getKey().getMethod());
                gen.writeStringField("path", p.getKey().getPath());
                gen.writeStringField("targetHost", p.getTargetHost());
                gen.writeNumberField("targetPort", p.getTargetPort());
                gen.writeNumberField("count", p.getCount());
                gen.writeObjectFieldStart("actions");
                if (!isReadOnly()) {
                    gen.writeStringField("delete", "/admin/service-proxy/delete?name="
                            + URLEncoder.encode(RuleUtil.getRuleIdentifier(p), "UTF-8"));
                }
                if (!p.isActive())
                    gen.writeStringField("start", "/admin/service-proxy/start?name="
                            + URLEncoder.encode(RuleUtil.getRuleIdentifier(p), "UTF-8"));
                gen.writeEndObject();
                gen.writeEndObject();
            }
            gen.writeEndArray();
            gen.writeNumberField("total", proxies.size());
            gen.writeEndObject();
        }
    });
}

From source file:com.bazaarvoice.jsonpps.PrettyPrintJson.java

private void copyCurrentStructure(JsonParser parser, ObjectMapper mapper, int depth, JsonGenerator generator)
        throws IOException {
    // Avoid using the mapper to parse the entire input until we absolutely must.  This allows pretty
    // printing huge top-level arrays (that wouldn't fit in memory) containing smaller objects (that
    // individually do fit in memory) where the objects are printed with sorted keys.
    JsonToken t = parser.getCurrentToken();
    if (t == null) {
        generator.copyCurrentStructure(parser); // Will report the error of a null token.
        return;/* w  w  w. j  a  v  a  2 s. co m*/
    }
    int id = t.id();
    if (id == ID_FIELD_NAME) {
        if (depth > flatten) {
            generator.writeFieldName(parser.getCurrentName());
        }
        t = parser.nextToken();
        id = t.id();
    }
    switch (id) {
    case ID_START_OBJECT:
        if (sortKeys && depth >= flatten) {
            // Load the entire object in memory so we can sort its keys and serialize it back out.
            mapper.writeValue(generator, parser.readValueAs(Map.class));
        } else {
            // Don't load the whole object into memory.  Copy it in a memory-efficient streaming fashion.
            if (depth >= flatten) {
                generator.writeStartObject();
            }
            while (parser.nextToken() != JsonToken.END_OBJECT) {
                copyCurrentStructure(parser, mapper, depth + 1, generator);
            }
            if (depth >= flatten) {
                generator.writeEndObject();
            }
        }
        break;
    case ID_START_ARRAY:
        // Don't load the whole array into memory.  Copy it in a memory-efficient streaming fashion.
        if (depth >= flatten) {
            generator.writeStartArray();
        }
        while (parser.nextToken() != JsonToken.END_ARRAY) {
            copyCurrentStructure(parser, mapper, depth + 1, generator);
        }
        if (depth >= flatten) {
            generator.writeEndArray();
        }
        break;
    default:
        generator.copyCurrentEvent(parser);
        break;
    }
}

From source file:org.apache.olingo.commons.core.serialization.JsonSerializer.java

protected void serverLinks(final Linked linked, final JsonGenerator jgen)
        throws IOException, EdmPrimitiveTypeException {
    if (linked instanceof Entity) {
        for (Link link : ((Entity) linked).getMediaEditLinks()) {
            if (StringUtils.isNotBlank(link.getHref())) {
                jgen.writeStringField(/*from  w  w  w.j  a  v a  2 s. c o  m*/
                        link.getTitle() + StringUtils.prependIfMissing(
                                version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK), "@"),
                        link.getHref());
            }
        }
    }

    for (Link link : linked.getAssociationLinks()) {
        if (StringUtils.isNotBlank(link.getHref())) {
            jgen.writeStringField(
                    link.getTitle() + version.getJsonName(ODataServiceVersion.JsonKey.ASSOCIATION_LINK),
                    link.getHref());
        }
    }

    for (Link link : linked.getNavigationLinks()) {
        for (Annotation annotation : link.getAnnotations()) {
            valuable(jgen, annotation, link.getTitle() + "@" + annotation.getTerm());
        }

        if (StringUtils.isNotBlank(link.getHref())) {
            jgen.writeStringField(
                    link.getTitle() + version.getJsonName(ODataServiceVersion.JsonKey.NAVIGATION_LINK),
                    link.getHref());
        }

        if (link.getInlineEntity() != null) {
            jgen.writeFieldName(link.getTitle());
            new JsonEntitySerializer(version, serverMode).doSerialize(link.getInlineEntity(), jgen);
        } else if (link.getInlineEntitySet() != null) {
            jgen.writeArrayFieldStart(link.getTitle());
            JsonEntitySerializer entitySerializer = new JsonEntitySerializer(version, serverMode);
            for (Entity subEntry : link.getInlineEntitySet().getEntities()) {
                entitySerializer.doSerialize(subEntry, jgen);
            }
            jgen.writeEndArray();
        }
    }
}

From source file:com.boundary.zoocreeper.Backup.java

private void dumpNode(JsonGenerator jgen, String path, Stat stat, List<ACL> acls, byte[] data)
        throws IOException {
    jgen.writeObjectFieldStart(path);// ww w . ja  v a 2 s  .  co  m

    // The number of changes to the ACL of this znode.
    jgen.writeNumberField(FIELD_AVERSION, stat.getAversion());

    // The time in milliseconds from epoch when this znode was created.
    jgen.writeNumberField(FIELD_CTIME, stat.getCtime());

    // The number of changes to the children of this znode.
    jgen.writeNumberField(FIELD_CVERSION, stat.getCversion());

    // The zxid of the change that caused this znode to be created.
    jgen.writeNumberField(FIELD_CZXID, stat.getCzxid());

    // The length of the data field of this znode.
    // jgen.writeNumberField("dataLength", stat.getDataLength());

    // The session id of the owner of this znode if the znode is an ephemeral node. If it is not an ephemeral node,
    // it will be zero.
    jgen.writeNumberField(FIELD_EPHEMERAL_OWNER, stat.getEphemeralOwner());

    // The time in milliseconds from epoch when this znode was last modified.
    jgen.writeNumberField(FIELD_MTIME, stat.getMtime());

    // The zxid of the change that last modified this znode.
    jgen.writeNumberField(FIELD_MZXID, stat.getMzxid());

    // The number of children of this znode.
    jgen.writeNumberField("numChildren", stat.getNumChildren());

    // last modified children?
    jgen.writeNumberField(FIELD_PZXID, stat.getPzxid());

    // The number of changes to the data of this znode.
    jgen.writeNumberField(FIELD_VERSION, stat.getVersion());

    if (data != null) {
        jgen.writeBinaryField(FIELD_DATA, data);
    } else {
        jgen.writeNullField(FIELD_DATA);
    }

    jgen.writeArrayFieldStart(FIELD_ACLS);
    for (ACL acl : acls) {
        jgen.writeStartObject();
        jgen.writeStringField(FIELD_ACL_ID, acl.getId().getId());
        jgen.writeStringField(FIELD_ACL_SCHEME, acl.getId().getScheme());
        jgen.writeNumberField(FIELD_ACL_PERMS, acl.getPerms());
        jgen.writeEndObject();
    }
    jgen.writeEndArray();

    jgen.writeEndObject();
}

From source file:org.apache.olingo.commons.core.serialization.JsonSerializer.java

protected void clientLinks(final Linked linked, final JsonGenerator jgen)
        throws IOException, EdmPrimitiveTypeException {

    final Map<String, List<String>> entitySetLinks = new HashMap<String, List<String>>();
    for (Link link : linked.getNavigationLinks()) {
        for (Annotation annotation : link.getAnnotations()) {
            valuable(jgen, annotation, link.getTitle() + "@" + annotation.getTerm());
        }//from w w  w  .  j a va  2s.c o  m

        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);
            }
            if (StringUtils.isNotBlank(link.getHref())) {
                uris.add(link.getHref());
            }
        } else {
            if (StringUtils.isNotBlank(link.getHref())) {
                jgen.writeStringField(link.getTitle() + Constants.JSON_BIND_LINK_SUFFIX, link.getHref());
            }
        }

        if (link.getInlineEntity() != null) {
            jgen.writeFieldName(link.getTitle());
            new JsonEntitySerializer(version, serverMode).doSerialize(link.getInlineEntity(), jgen);
        } else if (link.getInlineEntitySet() != null) {
            jgen.writeArrayFieldStart(link.getTitle());
            final JsonEntitySerializer entitySerializer = new JsonEntitySerializer(version, serverMode);
            for (Entity subEntry : link.getInlineEntitySet().getEntities()) {
                entitySerializer.doSerialize(subEntry, jgen);
            }
            jgen.writeEndArray();
        }
    }
    for (Map.Entry<String, List<String>> entitySetLink : entitySetLinks.entrySet()) {
        if (!entitySetLink.getValue().isEmpty()) {
            jgen.writeArrayFieldStart(entitySetLink.getKey() + Constants.JSON_BIND_LINK_SUFFIX);
            for (String uri : entitySetLink.getValue()) {
                jgen.writeString(uri);
            }
            jgen.writeEndArray();
        }
    }
}

From source file:org.apache.olingo.server.core.serializer.json.ODataJsonSerializer.java

private void writePrimitiveCollection(final EdmPrimitiveType type, final Property property,
        final Boolean isNullable, final Integer maxLength, final Integer precision, final Integer scale,
        final Boolean isUnicode, final JsonGenerator json) throws IOException, SerializerException {
    json.writeStartArray();//from w w w . java2  s .  c o m
    for (Object value : property.asCollection()) {
        switch (property.getValueType()) {
        case COLLECTION_PRIMITIVE:
        case COLLECTION_ENUM:
        case COLLECTION_GEOSPATIAL:
            try {
                writePrimitiveValue(property.getName(), type, value, isNullable, maxLength, precision, scale,
                        isUnicode, json);
            } catch (EdmPrimitiveTypeException e) {
                throw new SerializerException("Wrong value for property!", e,
                        SerializerException.MessageKeys.WRONG_PROPERTY_VALUE, property.getName(),
                        property.getValue().toString());
            }
            break;
        default:
            throw new SerializerException("Property type not yet supported!",
                    SerializerException.MessageKeys.UNSUPPORTED_PROPERTY_TYPE, property.getName());
        }
    }
    json.writeEndArray();
}

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

private void writeActionDescriptors(JsonGenerator jgen, String currentVocab,
        List<ActionDescriptor> actionDescriptors) throws IOException, IntrospectionException {
    for (ActionDescriptor actionDescriptor : actionDescriptors) {
        if ("GET".equals(actionDescriptor.getHttpMethod())) {
            continue;
        }//from  ww  w  .  ja v a2  s. c o  m

        jgen.writeStartObject(); // begin a hydra:Operation

        final String semanticActionType = actionDescriptor.getSemanticActionType();
        if (semanticActionType != null) {
            jgen.writeStringField("@type", semanticActionType);
        }
        jgen.writeStringField("hydra:method", actionDescriptor.getHttpMethod());

        final ActionInputParameter requestBodyInputParameter = actionDescriptor.getRequestBody();
        if (requestBodyInputParameter != null) {

            jgen.writeObjectFieldStart("hydra:expects"); // begin hydra:expects

            final Class<?> clazz = requestBodyInputParameter.getParameterType();
            final Expose classExpose = clazz.getAnnotation(Expose.class);
            final String typeName;
            if (classExpose != null) {
                typeName = classExpose.value();
            } else {
                typeName = requestBodyInputParameter.getParameterType().getSimpleName();
            }
            jgen.writeStringField("@type", typeName);

            jgen.writeArrayFieldStart("hydra:supportedProperty"); // begin hydra:supportedProperty
            // TODO check need for allRootParameters and requestBodyInputParameter here:
            recurseSupportedProperties(jgen, currentVocab, clazz, actionDescriptor, requestBodyInputParameter,
                    requestBodyInputParameter.getValue(), "");
            jgen.writeEndArray(); // end hydra:supportedProperty

            jgen.writeEndObject(); // end hydra:expects
        }

        jgen.writeEndObject(); // end hydra:Operation
    }
}