1 package com.fasterxml.jackson.databind.node; 2 3 import java.io.IOException; 4 import java.math.BigDecimal; 5 import java.math.BigInteger; 6 7 import com.fasterxml.jackson.core.*; 8 import com.fasterxml.jackson.core.io.NumberOutput; 9 import com.fasterxml.jackson.databind.SerializerProvider; 10 11 12 /** 13 * Numeric node that contains simple 64-bit integer values. 14 */ 15 @SuppressWarnings("serial") 16 public class LongNode 17 extends NumericNode 18 { 19 protected final long _value; 20 21 /* 22 ************************************************ 23 * Construction 24 ************************************************ 25 */ 26 LongNode(long v)27 public LongNode(long v) { _value = v; } 28 valueOf(long l)29 public static LongNode valueOf(long l) { return new LongNode(l); } 30 31 /* 32 ************************************************ 33 * Overrridden JsonNode methods 34 ************************************************ 35 */ 36 asToken()37 @Override public JsonToken asToken() { return JsonToken.VALUE_NUMBER_INT; } 38 39 @Override numberType()40 public JsonParser.NumberType numberType() { return JsonParser.NumberType.LONG; } 41 42 43 @Override isIntegralNumber()44 public boolean isIntegralNumber() { return true; } 45 46 @Override isLong()47 public boolean isLong() { return true; } 48 canConvertToInt()49 @Override public boolean canConvertToInt() { 50 return (_value >= Integer.MIN_VALUE && _value <= Integer.MAX_VALUE); 51 } canConvertToLong()52 @Override public boolean canConvertToLong() { return true; } 53 54 @Override numberValue()55 public Number numberValue() { 56 return Long.valueOf(_value); 57 } 58 59 @Override shortValue()60 public short shortValue() { return (short) _value; } 61 62 @Override intValue()63 public int intValue() { return (int) _value; } 64 65 @Override longValue()66 public long longValue() { return _value; } 67 68 @Override floatValue()69 public float floatValue() { return _value; } 70 71 @Override doubleValue()72 public double doubleValue() { return _value; } 73 74 @Override decimalValue()75 public BigDecimal decimalValue() { return BigDecimal.valueOf(_value); } 76 77 @Override bigIntegerValue()78 public BigInteger bigIntegerValue() { return BigInteger.valueOf(_value); } 79 80 @Override asText()81 public String asText() { 82 return NumberOutput.toString(_value); 83 } 84 85 @Override asBoolean(boolean defaultValue)86 public boolean asBoolean(boolean defaultValue) { 87 return _value != 0; 88 } 89 90 @Override serialize(JsonGenerator jg, SerializerProvider provider)91 public final void serialize(JsonGenerator jg, SerializerProvider provider) 92 throws IOException, JsonProcessingException 93 { 94 jg.writeNumber(_value); 95 } 96 97 @Override equals(Object o)98 public boolean equals(Object o) 99 { 100 if (o == this) return true; 101 if (o == null) return false; 102 if (o instanceof LongNode) { 103 return ((LongNode) o)._value == _value; 104 } 105 return false; 106 } 107 108 @Override hashCode()109 public int hashCode() { 110 return ((int) _value) ^ (int) (_value >> 32); 111 } 112 } 113