Skip to content

Commit

Permalink
api
Browse files Browse the repository at this point in the history
  • Loading branch information
oleg-cherednik committed Mar 7, 2024
1 parent ff7ff8b commit b4e27fa
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 21 deletions.
29 changes: 13 additions & 16 deletions src/main/java/ru/olegcherednik/json/impl/JacksonFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import lombok.AccessLevel;
Expand All @@ -36,7 +35,6 @@

import java.util.Map;
import java.util.Objects;
import java.util.ServiceLoader;
import java.util.TimeZone;

/**
Expand Down Expand Up @@ -97,23 +95,22 @@ private static ObjectMapper config(ObjectMapper mapper, JsonSettings settings) {
}

private static ObjectMapper registerModules(ObjectMapper mapper, JsonSettings settings) {
mapper = mapper.findAndRegisterModules();

mapper.registerModule(new JacksonDateModule(settings.getDateFormatter()))
.registerModule(new EnumIdModule());

ServiceLoader.load(Module.class).forEach(module -> {
mapper.registerModule(module);

if ("jackson-datatype-jsr310".equals(module.getModuleName()))
mapper.registerModule(JacksonJavaTimeModule.builder()
.instant(settings.getInstantFormatter())
.localDate(settings.getLocalDateFormatter())
.localTime(settings.getLocalTimeFormatter())
.localDateTime(settings.getLocalDateTimeFormatter())
.offsetTime(settings.getOffsetTimeFormatter())
.offsetDateTime(settings.getOffsetDateTimeFormatter())
.zonedDateTime(settings.getZonedDateTimeFormatter())
.build());
});
if (mapper.getRegisteredModuleIds().contains("jackson-datatype-jsr310")) {
mapper.registerModule(JacksonJavaTimeModule.builder()
.instant(settings.getInstantFormatter())
.localDate(settings.getLocalDateFormatter())
.localTime(settings.getLocalTimeFormatter())
.localDateTime(settings.getLocalDateTimeFormatter())
.offsetTime(settings.getOffsetTimeFormatter())
.offsetDateTime(settings.getOffsetDateTimeFormatter())
.zonedDateTime(settings.getZonedDateTimeFormatter())
.build());
}

return mapper;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,25 @@

package ru.olegcherednik.json.jackson;

import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.module.SimpleDeserializers;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.module.SimpleSerializers;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
* @author Oleg Cherednik
* @since 18.02.2024
*/
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class JacksonSimpleModule extends SimpleModule {

private static final long serialVersionUID = -543871656247679655L;

protected JacksonSimpleModule(String name) {
super(name, Version.unknownVersion());
}

@Override
public void setupModule(SetupContext context) {
super.setupModule(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package ru.olegcherednik.json.jackson.datetime;

import com.fasterxml.jackson.databind.ser.std.DateSerializer;
import lombok.RequiredArgsConstructor;
import ru.olegcherednik.json.jackson.JacksonSimpleModule;
import ru.olegcherednik.json.jackson.datetime.deserializers.JacksonDateDeserializer;

Expand All @@ -27,13 +26,17 @@
* @author Oleg Cherednik
* @since 09.12.2023
*/
@RequiredArgsConstructor
public class JacksonDateModule extends JacksonSimpleModule {

private static final long serialVersionUID = -7801651470699380868L;

protected final DateFormat df;

public JacksonDateModule(DateFormat df) {
super("json-date");
this.df = df;
}

@Override
protected void addKeySerializers(SetupContext context) {
super.addKeySerializers(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ public class EnumIdModule extends JacksonSimpleModule {

private static final long serialVersionUID = -946898814418994813L;

public EnumIdModule() {
super("json-enum-id");
}

@Override
public void setupModule(SetupContext context) {
super.setupModule(context);
Expand Down

0 comments on commit b4e27fa

Please sign in to comment.