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

org.dominokit.jackson.ser.BaseDateJsonSerializer Maven / Gradle / Ivy

There is a newer version: 1.0.5
Show newest version
/*
 * Copyright 2013 Nicolas Morel
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.dominokit.jackson.ser;

import com.fasterxml.jackson.annotation.JsonFormat.Shape;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Date;
import org.dominokit.jackson.JacksonContextProvider;
import org.dominokit.jackson.JsonSerializationContext;
import org.dominokit.jackson.JsonSerializer;
import org.dominokit.jackson.JsonSerializerParameters;
import org.dominokit.jackson.stream.JsonWriter;

/** Base implementation of {@link org.dominokit.jackson.JsonSerializer} for dates. */
public abstract class BaseDateJsonSerializer extends JsonSerializer {

  /** Default implementation of {@link BaseDateJsonSerializer} for {@link Date} */
  public static final class DateJsonSerializer extends BaseDateJsonSerializer {

    private static final DateJsonSerializer INSTANCE = new DateJsonSerializer();

    /** @return an instance of {@link DateJsonSerializer} */
    public static DateJsonSerializer getInstance() {
      return INSTANCE;
    }

    private DateJsonSerializer() {}

    /** {@inheritDoc} */
    @Override
    protected void doSerialize(
        JsonWriter writer,
        Date value,
        JsonSerializationContext ctx,
        JsonSerializerParameters params) {
      if ((ctx.isWriteDatesAsTimestamps() || params.getShape().isNumeric())
          && params.getShape() != Shape.STRING) {
        writer.value(value.getTime());
      } else {
        String date = JacksonContextProvider.get().dateFormat().format(params, value);
        if (null == params.getPattern()) {
          writer.unescapeValue(date);
        } else {
          writer.value(date);
        }
      }
    }
  }

  /** Default implementation of {@link BaseDateJsonSerializer} for {@link java.sql.Date} */
  public static final class SqlDateJsonSerializer extends BaseDateJsonSerializer {

    private static final SqlDateJsonSerializer INSTANCE = new SqlDateJsonSerializer();

    /** @return an instance of {@link SqlDateJsonSerializer} */
    public static SqlDateJsonSerializer getInstance() {
      return INSTANCE;
    }

    private SqlDateJsonSerializer() {}

    @Override
    protected void doSerialize(
        JsonWriter writer,
        java.sql.Date value,
        JsonSerializationContext ctx,
        JsonSerializerParameters params) {
      writer.unescapeValue(value.toString());
    }
  }

  /** Default implementation of {@link BaseDateJsonSerializer} for {@link Date} */
  public static final class SqlTimeJsonSerializer extends BaseDateJsonSerializer




© 2015 - 2024 Weber Informatics LLC | Privacy Policy