
com.arextest.storage.serialization.ZstdJacksonSerializer Maven / Gradle / Ivy
package com.arextest.storage.serialization;
import com.arextest.common.serialization.SerializationProvider;
import com.arextest.common.serialization.SerializationProviders;
import com.arextest.common.utils.SerializationUtils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author jmo
* @since 2021/11/8
*/
@SuppressWarnings("java:S2386")
@Component
@Slf4j
public final class ZstdJacksonSerializer {
/**
* The bytes of zstd equal json string "{}",useful deserialize
*/
public static final byte[] EMPTY_INSTANCE = SerializationUtils.EMPTY_INSTANCE;
/**
* The bytes of zstd equal json string "[]",useful deserialize
*/
public static final byte[] EMPTY_INSTANCE_LIST = SerializationUtils.EMPTY_INSTANCE_LIST;
private final SerializationProvider serializationProvider;
public ZstdJacksonSerializer(ObjectMapper objectMapper) {
this.serializationProvider = SerializationProviders.jacksonProvider(objectMapper);
}
public void serializeTo(T value, OutputStream outputStream) {
if (value == null) {
return;
}
SerializationUtils.useZstdSerializeTo(this.serializationProvider, outputStream, value);
}
public byte[] serialize(T value) {
if (value == null) {
return null;
}
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
serializeTo(value, out);
return out.toByteArray();
} catch (IOException e) {
LOGGER.error("serialize error:{}", e.getMessage(), e);
}
return null;
}
public T deserialize(InputStream inputStream, Class clazz) {
if (inputStream == null) {
return null;
}
return SerializationUtils.useZstdDeserialize(this.serializationProvider, inputStream, clazz);
}
public T deserialize(byte[] zstdValues, Class clazz) {
if (zstdValues == null) {
return null;
}
return SerializationUtils.useZstdDeserialize(this.serializationProvider, zstdValues, clazz);
}
public T deserialize(byte[] zstdValues, TypeReference typeReference) {
if (zstdValues == null) {
return null;
}
return SerializationUtils.useZstdDeserialize(this.serializationProvider, zstdValues,
typeReference);
}
public T deserialize(InputStream inputStream, TypeReference typeReference) {
if (inputStream == null) {
return null;
}
return SerializationUtils.useZstdDeserialize(this.serializationProvider, inputStream,
typeReference);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy