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 |
|
66 |
1.1 |
|
145 |
1.1 |