All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.slack.api.util.json.JavaTimeInstantFactory Maven / Gradle / Ivy

There is a newer version: 1.45.3
Show newest version
package com.slack.api.util.json;

import com.google.gson.*;

import java.lang.reflect.Type;
import java.time.Instant;
import java.util.regex.Pattern;

public class JavaTimeInstantFactory implements JsonDeserializer, JsonSerializer {

    private boolean failOnUnknownProperties;

    public JavaTimeInstantFactory() {
        this(false);
    }

    public JavaTimeInstantFactory(boolean failOnUnknownProperties) {
        this.failOnUnknownProperties = failOnUnknownProperties;
    }

    private Pattern NUMBER_FORMAT = Pattern.compile("-?\\d+(\\.\\d+)?");

    @Override
    public Instant deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
            throws JsonParseException {
        if (json == null || json.isJsonNull()) {
            return null;
        }
        if (!NUMBER_FORMAT.matcher(json.getAsString()).matches()) {
            if (failOnUnknownProperties) {
                throw new JsonParseException("Unknown instant value data: " + json.getAsString());
            } else {
                return null;
            }
        }
        return Instant.ofEpochMilli(json.getAsLong());
    }

    @Override
    public JsonElement serialize(Instant src, Type typeOfSrc, JsonSerializationContext context) {
        return new JsonPrimitive(src.toEpochMilli());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy