JsonbRmsConfig.java

package io.extact.rms.platform.jaxrs.converter;

import java.time.format.DateTimeFormatter;

import jakarta.json.bind.Jsonb;
import jakarta.json.bind.JsonbBuilder;
import jakarta.json.bind.JsonbConfig;
import jakarta.ws.rs.ext.ContextResolver;

import org.eclipse.microprofile.config.ConfigProvider;

// Provider Class
// register by @RegisterProvider or Application#getClasseses()
public class JsonbRmsConfig implements ContextResolver<Jsonb> {

    private Jsonb jsonb;

    public JsonbRmsConfig() {
        // ConfigがなぜかInjectで取得できないためProvierクラス経由で取得
        var dateTimeFormat = ConfigProvider.getConfig().getValue("json.format.dateTime", String.class);
        var serializers = new LocalDateTimeSerializers(DateTimeFormatter.ofPattern(dateTimeFormat));
        var config = new JsonbConfig()
                    .withSerializers(serializers.getSerializer())
                    .withDeserializers(serializers.getDeserializer());
        jsonb = JsonbBuilder.create(config);
    }

    @Override
    public Jsonb getContext(Class<?> type) {
        return jsonb;
    }
}