File tree Expand file tree Collapse file tree 4 files changed +111
-0
lines changed
api/api-ports/api-opex-rest/src/main/kotlin/co/nilin/opex/api/ports/opex Expand file tree Collapse file tree 4 files changed +111
-0
lines changed Original file line number Diff line number Diff line change 1+ package co.nilin.opex.api.ports.opex.config
2+
3+ import co.nilin.opex.api.ports.opex.util.DateToEpochSerializer
4+ import co.nilin.opex.api.ports.opex.util.LocalDateTimeToEpochSerializer
5+ import co.nilin.opex.api.ports.opex.util.LocalDateToEpochSerializer
6+ import com.fasterxml.jackson.databind.ObjectMapper
7+ import com.fasterxml.jackson.databind.json.JsonMapper
8+ import com.fasterxml.jackson.databind.module.SimpleModule
9+ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
10+ import com.fasterxml.jackson.module.kotlin.KotlinModule
11+ import org.springframework.context.annotation.Bean
12+ import org.springframework.context.annotation.Configuration
13+ import org.springframework.context.annotation.Primary
14+ import java.time.LocalDate
15+ import java.time.LocalDateTime
16+ import java.util.*
17+
18+ @Configuration
19+ class ApiJacksonConfig {
20+
21+ @Bean
22+ @Primary
23+ fun apiObjectMapper (): ObjectMapper {
24+
25+ val module = SimpleModule ().apply {
26+ addSerializer(LocalDateTime ::class .java, LocalDateTimeToEpochSerializer ())
27+ addSerializer(LocalDate ::class .java, LocalDateToEpochSerializer ())
28+ addSerializer(Date ::class .java, DateToEpochSerializer ())
29+
30+ }
31+
32+ return JsonMapper .builder()
33+ .addModule(JavaTimeModule ())
34+ .addModule(KotlinModule .Builder ().build())
35+ .addModule(module)
36+ .build()
37+ }
38+ }
Original file line number Diff line number Diff line change 1+ package co.nilin.opex.api.ports.opex.util
2+
3+ import com.fasterxml.jackson.core.JsonGenerator
4+ import com.fasterxml.jackson.databind.JsonSerializer
5+ import com.fasterxml.jackson.databind.SerializerProvider
6+ import java.util.*
7+
8+ class DateToEpochSerializer :
9+ JsonSerializer <Date >() {
10+
11+ override fun serialize (
12+ value : Date ? ,
13+ gen : JsonGenerator ,
14+ serializers : SerializerProvider
15+ ) {
16+ if (value == null ) {
17+ gen.writeNull()
18+ return
19+ }
20+ gen.writeNumber(value.time)
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ package co.nilin.opex.api.ports.opex.util
2+
3+ import com.fasterxml.jackson.core.JsonGenerator
4+ import com.fasterxml.jackson.databind.JsonSerializer
5+ import com.fasterxml.jackson.databind.SerializerProvider
6+ import java.time.LocalDateTime
7+ import java.time.ZoneOffset
8+
9+ class LocalDateTimeToEpochSerializer :
10+ JsonSerializer <LocalDateTime >() {
11+
12+ override fun serialize (
13+ value : LocalDateTime ,
14+ gen : JsonGenerator ,
15+ serializers : SerializerProvider
16+ ) {
17+ val epochMillis = value
18+ .atOffset(ZoneOffset .UTC )
19+ .toInstant()
20+ .toEpochMilli()
21+
22+ gen.writeNumber(epochMillis)
23+ }
24+ }
Original file line number Diff line number Diff line change 1+ package co.nilin.opex.api.ports.opex.util
2+
3+ import com.fasterxml.jackson.core.JsonGenerator
4+ import com.fasterxml.jackson.databind.JsonSerializer
5+ import com.fasterxml.jackson.databind.SerializerProvider
6+ import java.time.LocalDate
7+ import java.time.ZoneOffset
8+
9+ class LocalDateToEpochSerializer : JsonSerializer <LocalDate >() {
10+ override fun serialize (
11+ value : LocalDate ? ,
12+ gen : JsonGenerator ,
13+ serializers : SerializerProvider
14+ ) {
15+ if (value == null ) {
16+ gen.writeNull()
17+ return
18+ }
19+
20+ val epochMillis = value
21+ .atStartOfDay(ZoneOffset .UTC )
22+ .toInstant()
23+ .toEpochMilli()
24+
25+ gen.writeNumber(epochMillis)
26+ }
27+ }
You can’t perform that action at this time.
0 commit comments