| 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 |