IEXTradingMapperContextResolver.java

1
package pl.zankowski.iextrading4j.client.mapper;
2
3
import com.fasterxml.jackson.databind.DeserializationFeature;
4
import com.fasterxml.jackson.databind.Module;
5
import com.fasterxml.jackson.databind.ObjectMapper;
6
import com.fasterxml.jackson.databind.SerializationFeature;
7
import com.fasterxml.jackson.databind.module.SimpleModule;
8
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
9
import javax.ws.rs.ext.ContextResolver;
10
import javax.ws.rs.ext.Provider;
11
import pl.zankowski.iextrading4j.api.alternative.CryptoEventReason;
12
import pl.zankowski.iextrading4j.api.alternative.CryptoEventType;
13
import pl.zankowski.iextrading4j.api.alternative.CryptoSide;
14
import pl.zankowski.iextrading4j.api.marketdata.SystemEventType;
15
import pl.zankowski.iextrading4j.api.marketdata.TradingStatusReasonType;
16
import pl.zankowski.iextrading4j.api.marketdata.TradingStatusType;
17
import pl.zankowski.iextrading4j.api.refdata.DelistingReason;
18
import pl.zankowski.iextrading4j.api.refdata.DividendTypeId;
19
import pl.zankowski.iextrading4j.api.refdata.FinancialStatus;
20
import pl.zankowski.iextrading4j.api.refdata.Flag;
21
import pl.zankowski.iextrading4j.api.refdata.IssueEvent;
22
import pl.zankowski.iextrading4j.api.refdata.IssueSubType;
23
import pl.zankowski.iextrading4j.api.refdata.IssueType;
24
import pl.zankowski.iextrading4j.api.refdata.ListingCenter;
25
import pl.zankowski.iextrading4j.api.refdata.LuldTier;
26
import pl.zankowski.iextrading4j.api.refdata.PaymentFrequency;
27
import pl.zankowski.iextrading4j.api.refdata.QualifiedDividendType;
28
import pl.zankowski.iextrading4j.api.refdata.SymbolType;
29
import pl.zankowski.iextrading4j.api.stocks.ChartRange;
30
import pl.zankowski.iextrading4j.api.stocks.DividendQualification;
31
import pl.zankowski.iextrading4j.api.stocks.DividendType;
32
import pl.zankowski.iextrading4j.api.stocks.v1.DirectIndirect;
33
import pl.zankowski.iextrading4j.client.properties.PropertiesReader;
34
import pl.zankowski.iextrading4j.client.properties.PropertyType;
35
import pl.zankowski.iextrading4j.client.socket.request.marketdata.deep.DeepChannel;
36
37
import java.math.BigDecimal;
38
import java.time.LocalDate;
39
import java.time.LocalDateTime;
40
41
@Provider
42
public class IEXTradingMapperContextResolver implements ContextResolver<ObjectMapper> {
43
44
    private final ObjectMapper objectMapper;
45
46
    public IEXTradingMapperContextResolver() {
47
        objectMapper = initializeObjectMapper();
48
    }
49
50
    @Override
51
    public ObjectMapper getContext(Class<?> type) {
52 1 1. getContext : replaced return value with null for pl/zankowski/iextrading4j/client/mapper/IEXTradingMapperContextResolver::getContext → KILLED
        return objectMapper;
53
    }
54
55
    private ObjectMapper initializeObjectMapper() {
56
        final ObjectMapper customMapper = new ObjectMapper();
57
58
        customMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
59
        customMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
60
                PropertiesReader.getInstance().getBoolean(PropertyType.FAIL_ON_UNKNOWN_PROPERTIES));
61
        customMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
62
63
        customMapper.registerModule(new JavaTimeModule());
64
        customMapper.registerModule(iexTradingModule());
65
66 1 1. initializeObjectMapper : replaced return value with null for pl/zankowski/iextrading4j/client/mapper/IEXTradingMapperContextResolver::initializeObjectMapper → KILLED
        return customMapper;
67
    }
68
69
    private Module iexTradingModule() {
70
        final SimpleModule module = new SimpleModule("iexTradingModule");
71
72
        module.addDeserializer(BigDecimal.class, new HackyBigDecimalDeserializer());
73
        module.addDeserializer(LocalDate.class, new HackyLocalDateDeserializer());
74
        module.addDeserializer(LocalDateTime.class, new HackyLocalDateTimeDeserializer());
75
76
        module.addSerializer(CryptoEventType.class, new CryptoEventTypeSerializer());
77
        module.addDeserializer(CryptoEventType.class, new CryptoEventTypeDeserializer());
78
79
        module.addSerializer(CryptoEventReason.class, new CryptoEventReasonSerializer());
80
        module.addDeserializer(CryptoEventReason.class, new CryptoEventReasonDeserializer());
81
82
        module.addSerializer(CryptoSide.class, new CryptoSideSerializer());
83
        module.addDeserializer(CryptoSide.class, new CryptoSideDeserializer());
84
85
        module.addSerializer(DeepChannel.class, new DeepChannelSerializer());
86
        module.addDeserializer(DeepChannel.class, new DeepChannelDeserializer());
87
88
        module.addSerializer(ChartRange.class, new ChartRangeSerializer());
89
        module.addDeserializer(ChartRange.class, new ChartRangeDeserializer());
90
91
        module.addSerializer(DelistingReason.class, new DelistingReasonSerializer());
92
        module.addDeserializer(DelistingReason.class, new DelistingReasonDeserializer());
93
94
        module.addSerializer(DividendQualification.class, new DividendQualificationSerializer());
95
        module.addDeserializer(DividendQualification.class, new DividendQualificationDeserializer());
96
97
        module.addSerializer(DividendType.class, new DividendTypeSerializer());
98
        module.addDeserializer(DividendType.class, new DividendTypeDeserializer());
99
100
        module.addSerializer(DividendTypeId.class, new DividendTypeIdSerializer());
101
        module.addDeserializer(DividendTypeId.class, new DividendTypeIdDeserializer());
102
103
        module.addSerializer(FinancialStatus.class, new FinancialStatusSerializer());
104
        module.addDeserializer(FinancialStatus.class, new FinancialStatusDeserializer());
105
106
        module.addSerializer(Flag.class, new FlagSerializer());
107
        module.addDeserializer(Flag.class, new FlagDeserializer());
108
109
        module.addSerializer(DirectIndirect.class, new DirectIndirectSerializer());
110
        module.addDeserializer(DirectIndirect.class, new DirectIndirectDeserializer());
111
112
        module.addSerializer(IssueEvent.class, new IssueEventSerializer());
113
        module.addDeserializer(IssueEvent.class, new IssueEventDeserializer());
114
115
        module.addSerializer(IssueSubType.class, new IssueSubTypeSerializer());
116
        module.addDeserializer(IssueSubType.class, new IssueSubTypeDeserializer());
117
118
        module.addSerializer(IssueType.class, new IssueTypeSerializer());
119
        module.addDeserializer(IssueType.class, new IssueTypeDeserializer());
120
121
        module.addSerializer(ListingCenter.class, new ListingCenterSerializer());
122
        module.addDeserializer(ListingCenter.class, new ListingCenterDeserializer());
123
124
        module.addSerializer(LuldTier.class, new LuldTierSerializer());
125
        module.addDeserializer(LuldTier.class, new LuldTierDeserializer());
126
127
        module.addSerializer(PaymentFrequency.class, new PaymentFrequencySerializer());
128
        module.addDeserializer(PaymentFrequency.class, new PaymentFrequencyDeserializer());
129
130
        module.addSerializer(QualifiedDividendType.class, new QualifiedDividendTypeSerializer());
131
        module.addDeserializer(QualifiedDividendType.class, new QualifiedDividendTypeDeserializer());
132
133
        module.addSerializer(SymbolType.class, new SymbolTypeSerializer());
134
        module.addDeserializer(SymbolType.class, new SymbolTypeDeserializer());
135
136
        module.addSerializer(SystemEventType.class, new SystemEventTypeSerializer());
137
        module.addDeserializer(SystemEventType.class, new SystemEventTypeDeserializer());
138
139
        module.addSerializer(TradingStatusType.class, new TradingStatusTypeSerializer());
140
        module.addDeserializer(TradingStatusType.class, new TradingStatusTypeDeserializer());
141
142
        module.addSerializer(TradingStatusReasonType.class, new TradingStatusReasonTypeSerializer());
143
        module.addDeserializer(TradingStatusReasonType.class, new TradingStatusReasonTypeDeserializer());
144
145 1 1. iexTradingModule : replaced return value with null for pl/zankowski/iextrading4j/client/mapper/IEXTradingMapperContextResolver::iexTradingModule → KILLED
        return module;
146
    }
147
148
}

Mutations

52

1.1
Location : getContext
Killed by : pl.zankowski.iextrading4j.client.socket.manager.SocketManagerTest.[engine:junit-jupiter]/[class:pl.zankowski.iextrading4j.client.socket.manager.SocketManagerTest]/[method:verifyCreatedSocketPath()]
replaced return value with null for pl/zankowski/iextrading4j/client/mapper/IEXTradingMapperContextResolver::getContext → KILLED

66

1.1
Location : initializeObjectMapper
Killed by : pl.zankowski.iextrading4j.client.socket.manager.SocketManagerTest.[engine:junit-jupiter]/[class:pl.zankowski.iextrading4j.client.socket.manager.SocketManagerTest]/[method:verifyCreatedSocketPath()]
replaced return value with null for pl/zankowski/iextrading4j/client/mapper/IEXTradingMapperContextResolver::initializeObjectMapper → KILLED

145

1.1
Location : iexTradingModule
Killed by : pl.zankowski.iextrading4j.client.socket.manager.SocketManagerTest.[engine:junit-jupiter]/[class:pl.zankowski.iextrading4j.client.socket.manager.SocketManagerTest]/[method:shouldNotThrowExceptionWhenThereIsNoSubscription()]
replaced return value with null for pl/zankowski/iextrading4j/client/mapper/IEXTradingMapperContextResolver::iexTradingModule → KILLED

Active mutators

Tests examined


Report generated by PIT 1.7.1