@Override public final NumericNode numberNode(long v) { return _nodeFactory.numberNode(v); }
@Override public final NumericNode numberNode(byte v) { return _nodeFactory.numberNode(v); } @Override
@Override public final NumericNode numberNode(short v) { return _nodeFactory.numberNode(v); } @Override
@Override public final ValueNode numberNode(BigInteger v) { return _nodeFactory.numberNode(v); } @Override
@Override public final ValueNode numberNode(Byte v) { return _nodeFactory.numberNode(v); } @Override
@Override public final ValueNode numberNode(Integer v) { return _nodeFactory.numberNode(v); } @Override
@Override public final ValueNode numberNode(Float v) { return _nodeFactory.numberNode(v); } @Override
@Override public final ValueNode numberNode(Short v) { return _nodeFactory.numberNode(v); } @Override
@Override public final NumericNode numberNode(float v) { return _nodeFactory.numberNode(v); } @Override
@Override public final NumericNode numberNode(int v) { return _nodeFactory.numberNode(v); } @Override
@Override public final ValueNode numberNode(BigDecimal v) { return (_nodeFactory.numberNode(v)); }
@Override public final ValueNode numberNode(Long v) { return _nodeFactory.numberNode(v); }
@Override public final NumericNode numberNode(double v) { return _nodeFactory.numberNode(v); }
@Override public final ValueNode numberNode(Double v) { return _nodeFactory.numberNode(v); }
protected final JsonNode _fromFloat(JsonParser p, DeserializationContext ctxt, final JsonNodeFactory nodeFactory) throws IOException { JsonParser.NumberType nt = p.getNumberType(); if (nt == JsonParser.NumberType.BIG_DECIMAL) { return nodeFactory.numberNode(p.getDecimalValue()); } if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) { // 20-May-2016, tatu: As per [databind#1028], need to be careful // (note: JDK 1.8 would have `Double.isFinite()`) if (p.isNaN()) { return nodeFactory.numberNode(p.getDoubleValue()); } return nodeFactory.numberNode(p.getDecimalValue()); } if (nt == JsonParser.NumberType.FLOAT) { return nodeFactory.numberNode(p.getFloatValue()); } return nodeFactory.numberNode(p.getDoubleValue()); }
protected final ObjectNode digestedNumberNode(final JsonNode schema) { final ObjectNode ret = FACTORY.objectNode(); final JsonNode node = schema.get(keyword); final boolean isLong = valueIsLong(node); ret.put("valueIsLong", isLong); if (isLong) { ret.put(keyword, node.canConvertToInt() ? FACTORY.numberNode(node.intValue()) : FACTORY.numberNode(node.longValue())); return ret; } final BigDecimal decimal = node.decimalValue(); ret.put(keyword, decimal.scale() == 0 ? FACTORY.numberNode(decimal.toBigIntegerExact()) : node); return ret; } }
@DataProvider public Iterator<Object[]> negativeValues() { final List<? extends JsonNode> list = ImmutableList.of( FACTORY.numberNode(new BigDecimal("-928019283")), FACTORY.numberNode(new BigDecimal("-928019283.01")), FACTORY.numberNode(-1) ); return Iterables.transform(list, new Function<JsonNode, Object[]>() { @Override public Object[] apply(final JsonNode input) { return new Object[] { input }; } }).iterator(); }
protected final JsonNode _fromInt(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory) throws IOException { JsonParser.NumberType nt; int feats = ctxt.getDeserializationFeatures(); if ((feats & F_MASK_INT_COERCIONS) != 0) { if (DeserializationFeature.USE_BIG_INTEGER_FOR_INTS.enabledIn(feats)) { nt = JsonParser.NumberType.BIG_INTEGER; } else if (DeserializationFeature.USE_LONG_FOR_INTS.enabledIn(feats)) { nt = JsonParser.NumberType.LONG; } else { nt = p.getNumberType(); } } else { nt = p.getNumberType(); } if (nt == JsonParser.NumberType.INT) { return nodeFactory.numberNode(p.getIntValue()); } if (nt == JsonParser.NumberType.LONG) { return nodeFactory.numberNode(p.getLongValue()); } return nodeFactory.numberNode(p.getBigIntegerValue()); }
@DataProvider public Iterator<Object[]> overflows() { final List<? extends JsonNode> list = ImmutableList.of( FACTORY.numberNode(new BigDecimal("2147483648000")), FACTORY.numberNode(new BigDecimal("2147483648000.2983")) ); return Iterables.transform(list, new Function<JsonNode, Object[]>() { @Override public Object[] apply(final JsonNode input) { return new Object[] { input }; } }).iterator(); }
case INT32: case UINT32: case SINT32: case FIXED32: case SFIXED32: case INT64: case UINT64: case SINT64: case FIXED64: case SFIXED64: return NODES.numberNode(0); case STRING: case BYTES: return NODES.textNode("");