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

lambdify.aws.jsoniter.extra.Java8DateTimeSupport Maven / Gradle / Ivy

The newest version!
package lambdify.aws.jsoniter.extra;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import com.jsoniter.JsonIterator;
import com.jsoniter.output.JsonStream;
import com.jsoniter.spi.*;
import lombok.val;

/**
 *
 */
public class Java8DateTimeSupport {

	public static String AWS_DATE_FORMAT = "yyyyMMdd'T'HHmmss'Z'";
	private static boolean enabled = false;

	public static void enable() {
		enable( AWS_DATE_FORMAT );
	}

	public static void enable( String format ) {
		if ( !enabled ) {
			val formatter = DateTimeFormatter.ofPattern( format );
			registerLocalDateTimeDecoder( formatter );
			registerLocalDateTimeEncoder( formatter );
			enabled = true;
		}
	}

	private static void registerLocalDateTimeDecoder( final DateTimeFormatter formatter ) {
		JsoniterSpi.registerTypeDecoder( LocalDateTime.class, new Decoder() {
			public LocalDateTime decode(JsonIterator iter) throws IOException {
				val slice = iter.readStringAsSlice();
				return LocalDateTime.parse( slice.toString(), formatter );
			}
		} );
	}

	private static void registerLocalDateTimeEncoder( final DateTimeFormatter formatter ) {
		JsoniterSpi.registerTypeEncoder( LocalDateTime.class, new Encoder() {
			public void encode(Object obj, JsonStream stream) throws IOException {
				stream.write( 34 );
				LocalDateTime buffer = (LocalDateTime) obj;
				stream.write( buffer.format( formatter ).getBytes( "UTF-8" ) );
				stream.write( 34 );
			}
		} );
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy