HackyBigDecimalDeserializer.java

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
Location : deserialize
Killed by : pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest.[engine:junit-jupiter]/[class:pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest]/[test-template:shouldReturnNullForUnknownValues(java.lang.String)]/[test-template-invocation:#4]
negated conditional → KILLED

2.2
Location : deserialize
Killed by : pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest.[engine:junit-jupiter]/[class:pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest]/[method:shouldCreateBigDecimalBasedOnValue()]
negated conditional → KILLED

3.3
Location : deserialize
Killed by : pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest.[engine:junit-jupiter]/[class:pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest]/[method:shouldCreateBigDecimalBasedOnValue()]
negated conditional → KILLED

4.4
Location : deserialize
Killed by : pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest.[engine:junit-jupiter]/[class:pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest]/[method:shouldCreateBigDecimalBasedOnValue()]
negated conditional → KILLED

28

1.1
Location : deserialize
Killed by : pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest.[engine:junit-jupiter]/[class:pl.zankowski.iextrading4j.client.mapper.HackyBigDecimalDeserializerTest]/[method:shouldCreateBigDecimalBasedOnValue()]
replaced return value with null for pl/zankowski/iextrading4j/client/mapper/HackyBigDecimalDeserializer::deserialize → KILLED

31

1.1
Location : deserialize
Killed by : none
replaced return value with null for pl/zankowski/iextrading4j/client/mapper/HackyBigDecimalDeserializer::deserialize → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.7.1