• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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