Sha256: 8058055a47ea540106f14cbd2d45ef71d0a25926bfe57b19a723de186a3c0d01

Contents?: true

Size: 1.96 KB

Versions: 104

Compression:

Stored size: 1.96 KB

Contents

package org.embulk.spi.time;

import java.io.IOException;
import org.joda.time.DateTimeZone;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;
import com.fasterxml.jackson.module.guice.ObjectMapperModule;

public class DateTimeZoneSerDe
{
    public static void configure(ObjectMapperModule mapper)
    {
        SimpleModule module = new SimpleModule();
        module.addSerializer(DateTimeZone.class, new DateTimeZoneSerializer());
        module.addDeserializer(DateTimeZone.class, new DateTimeZoneDeserializer());
        mapper.registerModule(module);
    }

    public static class DateTimeZoneSerializer
            extends JsonSerializer<DateTimeZone>
    {
        @Override
        public void serialize(DateTimeZone value, JsonGenerator jgen, SerializerProvider provider)
                throws IOException
        {
            jgen.writeString(value.getID());
        }
    }

    public static class DateTimeZoneDeserializer
            extends FromStringDeserializer<DateTimeZone>
    {
        public DateTimeZoneDeserializer()
        {
            super(DateTimeZone.class);
        }

        @Override
        protected DateTimeZone _deserialize(String value, DeserializationContext context)
                throws JsonMappingException
        {
            DateTimeZone parsed = TimestampFormat.parseDateTimeZone(value);
            if (parsed == null) {
                // TODO include link to a document to the message for the list of supported time zones
                throw new JsonMappingException(String.format("Unknown time zone name '%s'", value));
            }
            return parsed;
        }
    }
}

Version data entries

104 entries across 104 versions & 1 rubygems

Version Path
embulk-0.8.39 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.39-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.38 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.38-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.37 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.37-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.36 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.36-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.35 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.35-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.34 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.34-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.33 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.33-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.32 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.32-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.31 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.31-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.30 embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java
embulk-0.8.30-java embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java