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

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

Introduction

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

Prototype

public abstract void writeNumber(String encodedValue)
        throws IOException, JsonGenerationException, UnsupportedOperationException;

Source Link

Document

Write method that can be used for custom numeric types that can not be (easily?) converted to "standard" Java number types.

Usage

From source file:org.apache.nifi.processors.elasticsearch.PutElasticsearchHttpRecord.java

@SuppressWarnings("unchecked")
private void writeValue(final JsonGenerator generator, final Object value, final String fieldName,
        final DataType dataType) throws IOException {
    if (value == null) {
        generator.writeNull();/*from  w  ww .  j  a v a2s.c o m*/
        return;
    }

    final DataType chosenDataType = dataType.getFieldType() == RecordFieldType.CHOICE
            ? DataTypeUtils.chooseDataType(value, (ChoiceDataType) dataType)
            : dataType;
    final Object coercedValue = DataTypeUtils.convertType(value, chosenDataType, fieldName);
    if (coercedValue == null) {
        generator.writeNull();
        return;
    }

    switch (chosenDataType.getFieldType()) {
    case DATE: {
        final String stringValue = DataTypeUtils.toString(coercedValue,
                () -> DataTypeUtils.getDateFormat(RecordFieldType.DATE.getDefaultFormat()));
        if (DataTypeUtils.isLongTypeCompatible(stringValue)) {
            generator.writeNumber(DataTypeUtils.toLong(coercedValue, fieldName));
        } else {
            generator.writeString(stringValue);
        }
        break;
    }
    case TIME: {
        final String stringValue = DataTypeUtils.toString(coercedValue,
                () -> DataTypeUtils.getDateFormat(RecordFieldType.TIME.getDefaultFormat()));
        if (DataTypeUtils.isLongTypeCompatible(stringValue)) {
            generator.writeNumber(DataTypeUtils.toLong(coercedValue, fieldName));
        } else {
            generator.writeString(stringValue);
        }
        break;
    }
    case TIMESTAMP: {
        final String stringValue = DataTypeUtils.toString(coercedValue,
                () -> DataTypeUtils.getDateFormat(RecordFieldType.TIMESTAMP.getDefaultFormat()));
        if (DataTypeUtils.isLongTypeCompatible(stringValue)) {
            generator.writeNumber(DataTypeUtils.toLong(coercedValue, fieldName));
        } else {
            generator.writeString(stringValue);
        }
        break;
    }
    case DOUBLE:
        generator.writeNumber(DataTypeUtils.toDouble(coercedValue, fieldName));
        break;
    case FLOAT:
        generator.writeNumber(DataTypeUtils.toFloat(coercedValue, fieldName));
        break;
    case LONG:
        generator.writeNumber(DataTypeUtils.toLong(coercedValue, fieldName));
        break;
    case INT:
    case BYTE:
    case SHORT:
        generator.writeNumber(DataTypeUtils.toInteger(coercedValue, fieldName));
        break;
    case CHAR:
    case STRING:
        generator.writeString(coercedValue.toString());
        break;
    case BIGINT:
        if (coercedValue instanceof Long) {
            generator.writeNumber((Long) coercedValue);
        } else {
            generator.writeNumber((BigInteger) coercedValue);
        }
        break;
    case BOOLEAN:
        final String stringValue = coercedValue.toString();
        if ("true".equalsIgnoreCase(stringValue)) {
            generator.writeBoolean(true);
        } else if ("false".equalsIgnoreCase(stringValue)) {
            generator.writeBoolean(false);
        } else {
            generator.writeString(stringValue);
        }
        break;
    case RECORD: {
        final Record record = (Record) coercedValue;
        final RecordDataType recordDataType = (RecordDataType) chosenDataType;
        final RecordSchema childSchema = recordDataType.getChildSchema();
        writeRecord(record, childSchema, generator);
        break;
    }
    case MAP: {
        final MapDataType mapDataType = (MapDataType) chosenDataType;
        final DataType valueDataType = mapDataType.getValueType();
        final Map<String, ?> map = (Map<String, ?>) coercedValue;
        generator.writeStartObject();
        for (final Map.Entry<String, ?> entry : map.entrySet()) {
            final String mapKey = entry.getKey();
            final Object mapValue = entry.getValue();
            generator.writeFieldName(mapKey);
            writeValue(generator, mapValue, fieldName + "." + mapKey, valueDataType);
        }
        generator.writeEndObject();
        break;
    }
    case ARRAY:
    default:
        if (coercedValue instanceof Object[]) {
            final Object[] values = (Object[]) coercedValue;
            final ArrayDataType arrayDataType = (ArrayDataType) dataType;
            final DataType elementType = arrayDataType.getElementType();
            writeArray(values, fieldName, generator, elementType);
        } else {
            generator.writeString(coercedValue.toString());
        }
        break;
    }
}

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

protected void primitiveValue(final JsonGenerator jgen, final EdmTypeInfo typeInfo, final Object value)
        throws IOException, EdmPrimitiveTypeException {

    final EdmPrimitiveTypeKind kind = typeInfo == null ? null : typeInfo.getPrimitiveTypeKind();
    final boolean isNumber = kind == null ? value instanceof Number : ArrayUtils.contains(NUMBER_TYPES, kind);
    final boolean isBoolean = kind == null ? value instanceof Boolean : kind == EdmPrimitiveTypeKind.Boolean;

    if (value == null) {
        jgen.writeNull();//from w w  w  .  ja va 2 s.c  om
    } else if (isBoolean) {
        jgen.writeBoolean((Boolean) value);
    } else {
        String serialized = kind == null ? value.toString()
                // TODO: add facets
                : EdmPrimitiveTypeFactory.getInstance(kind).valueToString(value, null, null,
                        Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null);

        if (isIEEE754Compatible
                && (kind == EdmPrimitiveTypeKind.Int64 || kind == EdmPrimitiveTypeKind.Decimal)) {
            jgen.writeString(serialized);
        } else if (isNumber) {
            jgen.writeNumber(serialized);
        } else {
            jgen.writeString(serialized);
        }
    }
}

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

private void value(final JsonGenerator jgen, final String type, final Value value) throws IOException {
    final EdmTypeInfo typeInfo = type == null ? null
            : new EdmTypeInfo.Builder().setTypeExpression(type).build();

    if (value.isNull()) {
        jgen.writeNull();/*from w w  w  .  j  av a  2  s.  co m*/
    } else if (value.isSimple()) {
        final boolean isNumber = typeInfo == null ? NumberUtils.isNumber(value.asSimple().get())
                : ArrayUtils.contains(NUMBER_TYPES, typeInfo.getPrimitiveTypeKind());
        final boolean isBoolean = typeInfo == null
                ? (value.asSimple().get().equalsIgnoreCase(Boolean.TRUE.toString())
                        || value.asSimple().get().equalsIgnoreCase(Boolean.FALSE.toString()))
                : typeInfo.getPrimitiveTypeKind() == EdmPrimitiveTypeKind.Boolean;

        if (isNumber) {
            jgen.writeNumber(value.asSimple().get());
        } else if (isBoolean) {
            jgen.writeBoolean(BooleanUtils.toBoolean(value.asSimple().get()));
        } else {
            jgen.writeString(value.asSimple().get());
        }
    } else if (value.isGeospatial()) {
        jgen.writeStartObject();
        geoSerializer.serialize(jgen, value.asGeospatial().get());
        jgen.writeEndObject();
    } else if (value.isCollection()) {
        collection(jgen, typeInfo == null ? null : typeInfo.getFullQualifiedName().toString(),
                value.asCollection());
    } else if (value.isComplex()) {
        jgen.writeStartObject();
        for (Property property : value.asComplex().get()) {
            property(jgen, property, property.getName());
        }
        jgen.writeEndObject();
    }
}

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

protected void primitiveValue(final JsonGenerator jgen, final EdmTypeInfo typeInfo, final Object value)
        throws IOException, EdmPrimitiveTypeException {

    final EdmPrimitiveTypeKind kind = typeInfo == null ? null : typeInfo.getPrimitiveTypeKind();
    final boolean isNumber = kind == null ? value instanceof Number : ArrayUtils.contains(NUMBER_TYPES, kind);
    final boolean isBoolean = kind == null ? value instanceof Boolean : kind == EdmPrimitiveTypeKind.Boolean;

    if (value == null) {
        jgen.writeNull();//from w  w w.j ava 2  s.c  om
    } else if (isBoolean) {
        jgen.writeBoolean((Boolean) value);
    } else {
        final String serialized = kind == null ? value.toString()
                // TODO: add facets
                : EdmPrimitiveTypeFactory.getInstance(kind).valueToString(value, null, null,
                        Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null);
        if (isNumber) {
            jgen.writeNumber(serialized);
        } else {
            jgen.writeString(serialized);
        }
    }
}

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 ww .j  a  v a 2s. 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);
    }
}

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

private void writeGeoPoint(JsonGenerator json, final Point point) throws IOException {
    json.writeNumber(point.getX());
    json.writeNumber(point.getY());// www.j a v  a  2s  .co  m
    if (point.getZ() != 0) {
        json.writeNumber(point.getZ());
    }
}

From source file:org.apache.syncope.core.misc.serialization.SyncTokenSerializer.java

@Override
public void serialize(final SyncToken source, final JsonGenerator jgen, final SerializerProvider sp)
        throws IOException {

    jgen.writeStartObject();//from w  w w  .  java2  s  .  co  m

    jgen.writeFieldName("value");

    if (source.getValue() == null) {
        jgen.writeNull();
    } else if (source.getValue() instanceof Boolean) {
        jgen.writeBoolean((Boolean) source.getValue());
    } else if (source.getValue() instanceof Double) {
        jgen.writeNumber((Double) source.getValue());
    } else if (source.getValue() instanceof Long) {
        jgen.writeNumber((Long) source.getValue());
    } else if (source.getValue() instanceof Integer) {
        jgen.writeNumber((Integer) source.getValue());
    } else if (source.getValue() instanceof byte[]) {
        jgen.writeString(Base64.encodeBase64String((byte[]) source.getValue()));
    } else {
        jgen.writeString(source.getValue().toString());
    }

    jgen.writeEndObject();
}

From source file:org.cloudcoder.dataanalysis.ProgsnapExport.java

private void writeJsonFieldValue(JsonGenerator jg, Object value) throws IOException {
    if (value instanceof String) {
        jg.writeString((String) value);
    } else if (value instanceof Integer) {
        jg.writeNumber(((Integer) value).intValue());
    } else if (value instanceof Long) {
        jg.writeNumber(((Long) value).longValue());
    } else if (value instanceof Double) {
        jg.writeNumber(((Double) value).doubleValue());
    } else if (value instanceof Map) {
        jg.writeStartObject();/*from  w  w w .  j  a v a 2s  .c o  m*/
        for (Map.Entry<?, ?> entry : ((Map<?, ?>) value).entrySet()) {
            jg.writeFieldName(entry.getKey().toString());
            writeJsonFieldValue(jg, entry.getValue());
        }
        jg.writeEndObject();
    } else if (value instanceof Boolean) {
        jg.writeBoolean(((Boolean) value).booleanValue());
    } else {
        throw new IllegalArgumentException(
                "Don't know how to encode " + value.getClass().getSimpleName() + " as JSON value");
    }
}

From source file:org.eclipse.winery.repository.resources.entitytypes.relationshiptypes.VisualAppearanceResource.java

@GET
@RestDoc(methodDescription = "@return JSON object to be used at jsPlumb.registerConnectionType('NAME', <data>)")
@Produces(MediaType.APPLICATION_JSON)//from   w w w. j ava  2s . c  om
public Response getConnectionTypeForJsPlumbData() {
    JsonFactory jsonFactory = new JsonFactory();
    StringWriter sw = new StringWriter();
    try {
        JsonGenerator jg = jsonFactory.createGenerator(sw);
        jg.writeStartObject();

        jg.writeFieldName("connector");
        jg.writeString("Flowchart");

        jg.writeFieldName("paintStyle");
        jg.writeStartObject();
        jg.writeFieldName("lineWidth");
        jg.writeNumber(this.getLineWidth());
        jg.writeFieldName("strokeStyle");
        jg.writeObject(this.getColor());
        String dash = this.getDash();
        if (!StringUtils.isEmpty(dash)) {
            String dashStyle = null;
            switch (dash) {
            case "dotted":
                dashStyle = "1 5";
                break;
            case "dotted2":
                dashStyle = "3 4";
                break;
            case "plain":
                // default works
                // otherwise, "1 0" can be used
                break;
            }
            if (dashStyle != null) {
                jg.writeStringField("dashstyle", dashStyle);
            }
        }
        jg.writeEndObject();

        jg.writeFieldName("hoverPaintStyle");
        jg.writeStartObject();
        jg.writeFieldName("strokeStyle");
        jg.writeObject(this.getHoverColor());
        jg.writeEndObject();

        // BEGIN: Overlays

        jg.writeFieldName("overlays");
        jg.writeStartArray();

        // source arrow head
        String head = this.getSourceArrowHead();
        if (!head.equals("none")) {
            jg.writeStartArray();
            jg.writeString(head);

            jg.writeStartObject();

            jg.writeFieldName("location");
            jg.writeNumber(0);

            // arrow should point towards the node and not away from it
            jg.writeFieldName("direction");
            jg.writeNumber(-1);

            jg.writeFieldName("width");
            jg.writeNumber(20);

            jg.writeFieldName("length");
            jg.writeNumber(12);

            jg.writeEndObject();
            jg.writeEndArray();
        }

        // target arrow head
        head = this.getTargetArrowHead();
        if (!head.equals("none")) {
            jg.writeStartArray();
            jg.writeString(head);
            jg.writeStartObject();
            jg.writeFieldName("location");
            jg.writeNumber(1);
            jg.writeFieldName("width");
            jg.writeNumber(20);
            jg.writeFieldName("length");
            jg.writeNumber(12);
            jg.writeEndObject();
            jg.writeEndArray();
        }

        // Type in brackets on the arrow
        jg.writeStartArray();
        jg.writeString("Label");
        jg.writeStartObject();
        jg.writeStringField("id", "label");
        //jg.writeStringField("label", "(" + ((RelationshipTypeResource) this.res).getName() + ")");
        jg.writeStringField("label", "");
        jg.writeStringField("cssClass", "relationshipTypeLabel");
        jg.writeFieldName("location");
        jg.writeNumber(0.5);
        jg.writeEndObject();
        jg.writeEndArray();

        jg.writeEndArray();

        // END: Overlays

        jg.writeEndObject();

        jg.close();
    } catch (Exception e) {
        VisualAppearanceResource.logger.error(e.getMessage(), e);
        return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e).build();
    }
    String res = sw.toString();
    return Response.ok(res).build();
}

From source file:org.fao.geonet.domain.SettingToObjectSerializer.java

public static void writeSettingValue(Setting s, JsonGenerator jsonGenerator) throws IOException {
    try {//from www . j  av a  2s.  c  o  m
        if (StringUtils.isNotEmpty(s.getValue())) {
            if (s.getDataType() == SettingDataType.BOOLEAN) {
                jsonGenerator.writeBoolean(Boolean.parseBoolean(s.getValue()));
            } else if (s.getDataType() == SettingDataType.INT) {
                jsonGenerator.writeNumber(Integer.parseInt(s.getValue()));
            } else if (s.getDataType() == SettingDataType.JSON) {
                ObjectMapper mapper = new ObjectMapper();
                jsonGenerator.writeTree(mapper.readTree(s.getValue()));
            } else {
                jsonGenerator.writeString(s.getValue());
            }
        } else {
            jsonGenerator.writeNull();
        }
    } catch (Exception e) {
        jsonGenerator.writeNull();
        jsonGenerator.writeStringField("erroneousValue", s.getValue());
        jsonGenerator.writeStringField("error", e.getMessage());
    }
}