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

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

Introduction

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

Prototype

public void writeStringField(String fieldName, String value) throws IOException, JsonGenerationException 

Source Link

Document

Convenience method for outputting a field entry ("member") that has a String value.

Usage

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

protected void writeEntity(final ServiceMetadata metadata, final EdmEntityType entityType, final Entity entity,
        final ContextURL contextURL, final ExpandOption expand, Integer toDepth, final SelectOption select,
        final boolean onlyReference, Set<String> ancestors, String name, final JsonGenerator json)
        throws IOException, SerializerException, DecoderException {
    boolean cycle = false;
    if (expand != null) {
        if (ancestors == null) {
            ancestors = new HashSet<String>();
        }// w w  w  . j av  a  2 s  . c  om
        cycle = !ancestors.add(getEntityId(entity, entityType, name));
    }
    try {
        json.writeStartObject();
        if (!isODataMetadataNone) {
            // top-level entity
            if (contextURL != null) {
                writeContextURL(contextURL, json);
                writeMetadataETag(metadata, json);
            }
            if (entity.getETag() != null) {
                json.writeStringField(constants.getEtag(), entity.getETag());
            }
            if (entityType.hasStream()) {
                if (entity.getMediaETag() != null) {
                    json.writeStringField(constants.getMediaEtag(), entity.getMediaETag());
                }
                if (entity.getMediaContentType() != null) {
                    json.writeStringField(constants.getMediaContentType(), entity.getMediaContentType());
                }
                if (entity.getMediaContentSource() != null) {
                    json.writeStringField(constants.getMediaReadLink(),
                            entity.getMediaContentSource().toString());
                }
                if (entity.getMediaEditLinks() != null && !entity.getMediaEditLinks().isEmpty()) {
                    json.writeStringField(constants.getMediaEditLink(),
                            entity.getMediaEditLinks().get(0).getHref());
                }
            }
        }
        if (cycle || onlyReference) {
            json.writeStringField(constants.getId(), getEntityId(entity, entityType, name));
        } else {
            final EdmEntityType resolvedType = resolveEntityType(metadata, entityType, entity.getType());
            if ((!isODataMetadataNone && !resolvedType.equals(entityType)) || isODataMetadataFull) {
                json.writeStringField(constants.getType(), "#" + entity.getType());
            }
            if ((!isODataMetadataNone && !areKeyPredicateNamesSelected(select, resolvedType))
                    || isODataMetadataFull) {
                json.writeStringField(constants.getId(), getEntityId(entity, resolvedType, name));
            }

            if (isODataMetadataFull) {
                if (entity.getSelfLink() != null) {
                    json.writeStringField(constants.getReadLink(), entity.getSelfLink().getHref());
                }
                if (entity.getEditLink() != null) {
                    json.writeStringField(constants.getEditLink(), entity.getEditLink().getHref());
                }
            }

            writeProperties(metadata, resolvedType, entity.getProperties(), select, json, entity, expand);
            writeNavigationProperties(metadata, resolvedType, entity, expand, toDepth, ancestors, name, json);
            writeOperations(entity.getOperations(), json);
        }
        json.writeEndObject();
    } finally {
        if (expand != null && !cycle && ancestors != null) {
            ancestors.remove(getEntityId(entity, entityType, name));
        }
    }
}

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

@Override
public void serialize(List<Link> links, JsonGenerator jgen, SerializerProvider serializerProvider)
        throws IOException {

    try {//from  www .  ja  v a2s .c  o  m
        Collection<Link> simpleLinks = new ArrayList<Link>();
        Collection<Affordance> affordances = new ArrayList<Affordance>();
        Collection<Link> templatedLinks = new ArrayList<Link>();
        Collection<Affordance> templatedAffordances = new ArrayList<Affordance>();
        for (Link link : links) {
            if (link instanceof Affordance) {
                final Affordance affordance = (Affordance) link;
                final List<ActionDescriptor> actionDescriptors = affordance.getActionDescriptors();
                if (!actionDescriptors.isEmpty()) {
                    if (affordance.isTemplated()) {
                        templatedAffordances.add(affordance);
                    } else {
                        affordances.add(affordance);
                    }
                } else {
                    if (affordance.isTemplated()) {
                        templatedLinks.add(affordance);
                    } else {
                        simpleLinks.add(affordance);
                    }
                }
            } else if (link.isTemplated()) {
                templatedLinks.add(link);
            } else {
                simpleLinks.add(link);
            }
        }

        for (Affordance templatedAffordance : templatedAffordances) {
            jgen.writeObjectFieldStart(templatedAffordance.getRel());

            jgen.writeStringField("@type", "hydra:IriTemplate");
            jgen.writeStringField("hydra:template", templatedAffordance.getHref());
            final List<ActionDescriptor> actionDescriptors = templatedAffordance.getActionDescriptors();
            ActionDescriptor actionDescriptor = actionDescriptors.get(0);
            jgen.writeArrayFieldStart("hydra:mapping");
            writeHydraVariableMapping(jgen, actionDescriptor, actionDescriptor.getPathVariableNames());
            writeHydraVariableMapping(jgen, actionDescriptor, actionDescriptor.getRequestParamNames());
            jgen.writeEndArray();

            jgen.writeEndObject();
        }
        for (Link templatedLink : templatedLinks) {
            // we only have the template, no access to method params
            jgen.writeObjectFieldStart(templatedLink.getRel());

            jgen.writeStringField("@type", "hydra:IriTemplate");
            jgen.writeStringField("hydra:template", templatedLink.getHref());

            jgen.writeArrayFieldStart("hydra:mapping");
            writeHydraVariableMapping(jgen, null, templatedLink.getVariableNames());
            jgen.writeEndArray();

            jgen.writeEndObject();
        }

        Deque<String> vocabStack = (Deque<String>) serializerProvider
                .getAttribute(JacksonHydraSerializer.KEY_LD_CONTEXT);
        String currentVocab = vocabStack != null ? vocabStack.peek() : null;

        for (Affordance affordance : affordances) {
            final String rel = affordance.getRel();
            List<ActionDescriptor> actionDescriptors = affordance.getActionDescriptors();
            if (!actionDescriptors.isEmpty()) {
                if (!Link.REL_SELF.equals(rel)) {
                    jgen.writeObjectFieldStart(rel); // begin rel
                }
                jgen.writeStringField(JacksonHydraSerializer.AT_ID, affordance.getHref());
                jgen.writeArrayFieldStart("hydra:operation");
            }

            for (ActionDescriptor actionDescriptor : actionDescriptors) {
                jgen.writeStartObject(); // begin a hydra:Operation

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

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

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

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

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

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

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

            if (!actionDescriptors.isEmpty()) {
                jgen.writeEndArray(); // end hydra:operation

                if (!Link.REL_SELF.equals(rel)) {
                    jgen.writeEndObject(); // end rel
                }
            }
        }

        for (Link simpleLink : simpleLinks) {
            final String rel = simpleLink.getRel();
            if (Link.REL_SELF.equals(rel)) {
                jgen.writeStringField("@id", simpleLink.getHref());
            } else {
                String linkAttributeName = IanaRels.isIanaRel(rel) ? IANA_REL_PREFIX + rel : rel;
                jgen.writeObjectFieldStart(linkAttributeName);
                jgen.writeStringField("@id", simpleLink.getHref());
                jgen.writeEndObject();
            }
        }
    } catch (IntrospectionException e) {
        throw new RuntimeException(e);
    }
}

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

private void writeComplexCollection(final ServiceMetadata metadata, final EdmComplexType type,
        final Property property, final Set<List<String>> selectedPaths, final JsonGenerator json,
        Set<List<String>> expandedPaths, Linked linked, ExpandOption expand)
        throws IOException, SerializerException {
    json.writeStartArray();/*  ww w  . j  ava2s  .com*/
    EdmComplexType derivedType = type;
    Set<List<String>> expandedPaths1 = expandedPaths != null && !expandedPaths.isEmpty() ? expandedPaths
            : ExpandSelectHelper.getExpandedItemsPath(expand);
    for (Object value : property.asCollection()) {
        expandedPaths = expandedPaths1;
        derivedType = ((ComplexValue) value).getTypeName() != null
                ? metadata.getEdm().getComplexType(new FullQualifiedName(((ComplexValue) value).getTypeName()))
                : type;
        switch (property.getValueType()) {
        case COLLECTION_COMPLEX:
            json.writeStartObject();
            if (isODataMetadataFull || (!isODataMetadataNone && !derivedType.equals(type))) {
                json.writeStringField(constants.getType(),
                        "#" + derivedType.getFullQualifiedName().getFullQualifiedNameAsString());
            }
            expandedPaths = expandedPaths == null || expandedPaths.isEmpty() ? null
                    : ExpandSelectHelper.getReducedExpandItemsPaths(expandedPaths, property.getName());
            writeComplexValue(metadata, derivedType, ((ComplexValue) value).getValue(), selectedPaths, json,
                    expandedPaths, (ComplexValue) value, expand, property.getName());
            json.writeEndObject();
            break;
        default:
            throw new SerializerException("Property type not yet supported!",
                    SerializerException.MessageKeys.UNSUPPORTED_PROPERTY_TYPE, property.getName());
        }
    }
    json.writeEndArray();
}

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

private void writeComplex(final ServiceMetadata metadata, final EdmComplexType type, final Property property,
        final Set<List<String>> selectedPaths, final JsonGenerator json, Set<List<String>> expandedPaths,
        Linked linked, ExpandOption expand) throws IOException, SerializerException {
    json.writeStartObject();/* w ww .  j  a  v a 2 s .co m*/
    String derivedName = property.getType();
    EdmComplexType resolvedType = null;
    if (!type.getFullQualifiedName().getFullQualifiedNameAsString().equals(derivedName)) {
        if (type.getBaseType() != null && type.getBaseType().getFullQualifiedName()
                .getFullQualifiedNameAsString().equals(derivedName)) {
            resolvedType = resolveComplexType(metadata, type.getBaseType(),
                    type.getFullQualifiedName().getFullQualifiedNameAsString());
        } else {
            resolvedType = resolveComplexType(metadata, type, derivedName);
        }
    } else {
        resolvedType = resolveComplexType(metadata, type, derivedName);
    }
    if (!isODataMetadataNone && !resolvedType.equals(type) || isODataMetadataFull) {
        json.writeStringField(constants.getType(),
                "#" + resolvedType.getFullQualifiedName().getFullQualifiedNameAsString());
    }

    if (null != linked) {
        if (linked instanceof Entity) {
            linked = ((Entity) linked).getProperty(property.getName()).asComplex();
        } else if (linked instanceof ComplexValue) {
            List<Property> complexProperties = ((ComplexValue) linked).getValue();
            for (Property prop : complexProperties) {
                if (prop.getName().equals(property.getName())) {
                    linked = prop.asComplex();
                    break;
                }
            }
        }
        expandedPaths = expandedPaths == null || expandedPaths.isEmpty() ? null
                : ExpandSelectHelper.getReducedExpandItemsPaths(expandedPaths, property.getName());
    }

    writeComplexValue(metadata, resolvedType, property.asComplex().getValue(), selectedPaths, json,
            expandedPaths, linked, expand, property.getName());
    json.writeEndObject();
}

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

private void recurseSupportedProperties(JsonGenerator jgen, String currentVocab, Class<?> beanType,
        ActionDescriptor actionDescriptor, ActionInputParameter actionInputParameter, Object currentCallValue)
        throws IntrospectionException, IOException {
    // TODO support Option provider by other method args?
    final BeanInfo beanInfo = Introspector.getBeanInfo(beanType);
    final PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
    // TODO collection and map

    for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
        final Method writeMethod = propertyDescriptor.getWriteMethod();
        if (writeMethod == null) {
            continue;
        }/*from   w  w w. j a va2 s. com*/
        final Class<?> propertyType = propertyDescriptor.getPropertyType();
        // TODO: the property name must be a valid URI - need to check context for terms?
        String propertyName = getWritableExposedPropertyOrPropertyName(propertyDescriptor);
        if (DataType.isScalar(propertyType)) {

            final Property property = new Property(beanType, propertyDescriptor.getReadMethod(),
                    propertyDescriptor.getWriteMethod(), propertyDescriptor.getName());

            Object propertyValue = getPropertyValue(currentCallValue, propertyDescriptor);

            ActionInputParameter propertySetterInputParameter = new ActionInputParameter(
                    new MethodParameter(propertyDescriptor.getWriteMethod(), 0), propertyValue);
            final Object[] possiblePropertyValues = actionInputParameter.getPossibleValues(property,
                    actionDescriptor);

            writeSupportedProperty(jgen, currentVocab, propertySetterInputParameter, propertyName, property,
                    possiblePropertyValues);
        } else {
            jgen.writeStartObject();
            jgen.writeStringField("hydra:property", propertyName);
            // TODO: is the property required -> for bean props we need the Access annotation to express that
            jgen.writeObjectFieldStart(getPropertyOrClassNameInVocab(currentVocab, "rangeIncludes",
                    JacksonHydraSerializer.HTTP_SCHEMA_ORG, "schema:"));
            Expose expose = AnnotationUtils.getAnnotation(propertyType, Expose.class);
            String subClass;
            if (expose != null) {
                subClass = expose.value();
            } else {
                subClass = propertyType.getSimpleName();
            }
            jgen.writeStringField(getPropertyOrClassNameInVocab(currentVocab, "subClassOf",
                    "http://www.w3.org/2000/01/rdf-schema#", "rdfs:"), subClass);

            jgen.writeArrayFieldStart("hydra:supportedProperty");

            Object propertyValue = getPropertyValue(currentCallValue, propertyDescriptor);

            recurseSupportedProperties(jgen, currentVocab, propertyType, actionDescriptor, actionInputParameter,
                    propertyValue);
            jgen.writeEndArray();

            jgen.writeEndObject();
            jgen.writeEndObject();
        }
    }
}

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

@Override
public SerializerResult complex(final ServiceMetadata metadata, final EdmComplexType type,
        final Property property, final ComplexSerializerOptions options) throws SerializerException {
    OutputStream outputStream = null;
    SerializerException cachedException = null;
    try {/*from  w w  w .j a v  a  2 s. c o m*/
        final ContextURL contextURL = checkContextURL(options == null ? null : options.getContextURL());
        final String name = contextURL == null ? null : contextURL.getEntitySetOrSingletonOrType();
        CircleStreamBuffer buffer = new CircleStreamBuffer();
        outputStream = buffer.getOutputStream();
        JsonGenerator json = new JsonFactory().createGenerator(outputStream);
        json.writeStartObject();
        writeContextURL(contextURL, json);
        writeMetadataETag(metadata, json);
        EdmComplexType resolvedType = null;
        if (!type.getFullQualifiedName().getFullQualifiedNameAsString().equals(property.getType())) {
            if (type.getBaseType() != null && type.getBaseType().getFullQualifiedName()
                    .getFullQualifiedNameAsString().equals(property.getType())) {
                resolvedType = resolveComplexType(metadata, type.getBaseType(),
                        type.getFullQualifiedName().getFullQualifiedNameAsString());
            } else {
                resolvedType = resolveComplexType(metadata, type, property.getType());
            }
        } else {
            resolvedType = resolveComplexType(metadata, type, property.getType());
        }
        if (!isODataMetadataNone && !resolvedType.equals(type) || isODataMetadataFull) {
            json.writeStringField(constants.getType(),
                    "#" + resolvedType.getFullQualifiedName().getFullQualifiedNameAsString());
        }
        writeOperations(property.getOperations(), json);
        final List<Property> values = property.isNull() ? Collections.<Property>emptyList()
                : property.asComplex().getValue();
        writeProperties(metadata, type, values,
                options == null ? null : options == null ? null : options.getSelect(), json,
                property.asComplex(), options == null ? null : options.getExpand());
        if (!property.isNull() && property.isComplex()) {
            writeNavigationProperties(metadata, type, property.asComplex(),
                    options == null ? null : options.getExpand(), null, null, name, json);
        }
        json.writeEndObject();

        json.close();
        outputStream.close();
        return SerializerResultImpl.with().content(buffer.getInputStream()).build();
    } catch (final IOException e) {
        cachedException = new SerializerException(IO_EXCEPTION_TEXT, e,
                SerializerException.MessageKeys.IO_EXCEPTION);
        throw cachedException;
    } catch (DecoderException e) {
        cachedException = new SerializerException(IO_EXCEPTION_TEXT, e,
                SerializerException.MessageKeys.IO_EXCEPTION);
        throw cachedException;
    } finally {
        closeCircleStreamBufferOutput(outputStream, cachedException);
    }
}

From source file:io.swagger.inflector.processors.JsonNodeExampleSerializer.java

public void writeValue(JsonGenerator jgen, String field, Example o) throws IOException {
    if (o instanceof ArrayExample) {
        ArrayExample obj = (ArrayExample) o;
        jgen.writeArrayFieldStart(field);
        for (Example item : obj.getItems()) {
            if (item.getName() != null) {
                jgen.writeStartObject();
                writeTo(jgen, item);/*www  .j  a va 2s . c om*/
                jgen.writeEndObject();
            } else {
                writeTo(jgen, item);
            }
        }
        jgen.writeEndArray();
    } else if (o instanceof BooleanExample) {
        BooleanExample obj = (BooleanExample) o;
        if (field != null) {
            jgen.writeBooleanField(field, obj.getValue());
        } else {
            jgen.writeBoolean(obj.getValue());
        }
    } else if (o instanceof DecimalExample) {
        DecimalExample obj = (DecimalExample) o;
        if (field != null) {
            jgen.writeNumberField(field, obj.getValue());
        } else {
            jgen.writeNumber(obj.getValue());
        }
    } else if (o instanceof DoubleExample) {
        DoubleExample obj = (DoubleExample) o;
        if (field != null) {
            jgen.writeNumberField(field, obj.getValue());
        } else {
            jgen.writeNumber(obj.getValue());
        }
    } else if (o instanceof FloatExample) {
        FloatExample obj = (FloatExample) o;
        if (field != null) {
            jgen.writeNumberField(field, obj.getValue());
        } else {
            jgen.writeNumber(obj.getValue());
        }
    } else if (o instanceof IntegerExample) {
        IntegerExample obj = (IntegerExample) o;
        if (field != null) {
            jgen.writeNumberField(field, obj.getValue());
        } else {
            jgen.writeNumber(obj.getValue());
        }
    } else if (o instanceof LongExample) {
        LongExample obj = (LongExample) o;
        if (field != null) {
            jgen.writeNumberField(field, obj.getValue());
        } else {
            jgen.writeNumber(obj.getValue());
        }
    } else if (o instanceof ObjectExample) {
        ObjectExample obj = (ObjectExample) o;
        if (field != null) {
            jgen.writeObjectField(field, obj);
        }
    } else if (o instanceof StringExample) {
        StringExample obj = (StringExample) o;
        if (field != null) {
            jgen.writeStringField(field, obj.getValue());
        } else {
            jgen.writeString(obj.getValue());
        }
    }
}

From source file:com.streamsets.datacollector.http.JMXJsonServlet.java

private void listBeans(JsonGenerator jg, ObjectName qry, String attribute, HttpServletResponse response)
        throws IOException {

    Set<ObjectName> names = null;
    names = mBeanServer.queryNames(qry, null);

    jg.writeArrayFieldStart("beans");
    Iterator<ObjectName> it = names.iterator();
    while (it.hasNext()) {
        ObjectName oname = it.next();
        MBeanInfo minfo;/*from   ww  w .  j a  v  a 2 s  .co m*/
        String code = "";
        Object attributeinfo = null;
        try {
            minfo = mBeanServer.getMBeanInfo(oname);
            code = minfo.getClassName();
            String prs = "";
            try {
                if ("org.apache.commons.modeler.BaseModelMBean".equals(code)) {
                    prs = "modelerType";
                    code = (String) mBeanServer.getAttribute(oname, prs);
                }
                if (attribute != null) {
                    prs = attribute;
                    attributeinfo = mBeanServer.getAttribute(oname, prs);
                }
            } catch (AttributeNotFoundException e) {
                // If the modelerType attribute was not found, the class name is used
                // instead.

            } catch (MBeanException e) {
                // The code inside the attribute getter threw an exception so 
                // and fall back on the class name

            } catch (RuntimeException e) {
                // For some reason even with an MBeanException available to them
                // Runtime exceptionscan still find their way through, so treat them
                // the same as MBeanException

            } catch (ReflectionException e) {
                // This happens when the code inside the JMX bean (setter?? from the
                // java docs) threw an exception, so 
                // class name

            }
        } catch (InstanceNotFoundException e) {
            //Ignored for some reason the bean was not found so don't output it
            continue;
        } catch (IntrospectionException e) {
            // This is an internal error, something odd happened with reflection so
            // 

            continue;
        } catch (ReflectionException e) {
            // This happens when the code inside the JMX bean threw an exception, so
            // 

            continue;
        }

        jg.writeStartObject();
        jg.writeStringField("name", oname.toString());

        jg.writeStringField("modelerType", code);
        if ((attribute != null) && (attributeinfo == null)) {
            jg.writeStringField("result", "ERROR");
            jg.writeStringField("message", "No attribute with name " + attribute + " was found.");
            jg.writeEndObject();
            jg.writeEndArray();
            jg.close();
            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
            return;
        }

        if (attribute != null) {
            writeAttribute(jg, attribute, attributeinfo);
        } else {
            MBeanAttributeInfo attrs[] = minfo.getAttributes();
            for (int i = 0; i < attrs.length; i++) {
                writeAttribute(jg, oname, attrs[i]);
            }
        }
        jg.writeEndObject();
    }
    jg.writeEndArray();
}

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

protected void writePrimitiveValue(final String name, final EdmPrimitiveType type, final Object primitiveValue,
        final Boolean isNullable, final Integer maxLength, final Integer precision, final Integer scale,
        final Boolean isUnicode, final JsonGenerator json) throws EdmPrimitiveTypeException, IOException {
    final String value = type.valueToString(primitiveValue, isNullable, maxLength, precision, scale, isUnicode);
    if (value == null) {
        json.writeNull();/*from w  w w . j a v  a  2 s  . c o  m*/
    } else if (type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Boolean)) {
        json.writeBoolean(Boolean.parseBoolean(value));
    } else if (type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Byte)
            || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Double)
            || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int16)
            || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int32)
            || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.SByte)
            || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Single)
            || (type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Decimal)
                    || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int64))
                    && !isIEEE754Compatible) {
        json.writeNumber(value);
    } else if (type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Stream)) {
        if (primitiveValue instanceof Link) {
            Link stream = (Link) primitiveValue;
            if (!isODataMetadataNone) {
                if (stream.getMediaETag() != null) {
                    json.writeStringField(name + constants.getMediaEtag(), stream.getMediaETag());
                }
                if (stream.getType() != null) {
                    json.writeStringField(name + constants.getMediaContentType(), stream.getType());
                }
            }
            if (isODataMetadataFull) {
                if (stream.getRel() != null && stream.getRel().equals(Constants.NS_MEDIA_READ_LINK_REL)) {
                    json.writeStringField(name + constants.getMediaReadLink(), stream.getHref());
                }
                if (stream.getRel() == null || stream.getRel().equals(Constants.NS_MEDIA_EDIT_LINK_REL)) {
                    json.writeStringField(name + constants.getMediaEditLink(), stream.getHref());
                }
            }
        }
    } else {
        json.writeString(value);
    }
}