1 | package pl.zankowski.iextrading4j.client.mapper; | |
2 | ||
3 | import com.fasterxml.jackson.core.JsonParser; | |
4 | import com.fasterxml.jackson.databind.DeserializationContext; | |
5 | import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer; | |
6 | ||
7 | import java.io.IOException; | |
8 | import java.math.BigDecimal; | |
9 | ||
10 | class HackyBigDecimalDeserializer extends StdScalarDeserializer<BigDecimal> { | |
11 | ||
12 | HackyBigDecimalDeserializer() { | |
13 | super(BigDecimal.class); | |
14 | } | |
15 | ||
16 | @Override | |
17 | public BigDecimal deserialize(final JsonParser parser, final DeserializationContext ctx) throws IOException { | |
18 | final String val = parser.getValueAsString(); | |
19 | ||
20 | // #HACK Sometimes instead of a null they return N/A in number field | |
21 | // #HACK In Daily List they return empty String if number is N/A | |
22 | // #HACK In Key Stats they return NaN for revenuePerEmployee | |
23 |
4
1. deserialize : negated conditional → KILLED 2. deserialize : negated conditional → KILLED 3. deserialize : negated conditional → KILLED 4. deserialize : negated conditional → KILLED |
if (val == null || "N/A".equalsIgnoreCase(val) || "NaN".equalsIgnoreCase(val) || val.isEmpty()) { |
24 | return null; | |
25 | } | |
26 | ||
27 | try { | |
28 |
1
1. deserialize : replaced return value with null for pl/zankowski/iextrading4j/client/mapper/HackyBigDecimalDeserializer::deserialize → KILLED |
return parser.getDecimalValue(); |
29 | } catch (IOException e) { | |
30 | // #HACK In Daily List they return numbers as a String | |
31 |
1
1. deserialize : replaced return value with null for pl/zankowski/iextrading4j/client/mapper/HackyBigDecimalDeserializer::deserialize → NO_COVERAGE |
return new BigDecimal(val); |
32 | } | |
33 | } | |
34 | ||
35 | } | |
Mutations | ||
23 |
1.1 2.2 3.3 4.4 |
|
28 |
1.1 |
|
31 |
1.1 |