package com.kryptnostic.kodex.v1.marshalling; import java.io.IOException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.kryptnostic.kodex.v1.crypto.keys.KodexMarshaller; import com.kryptnostic.kodex.v1.serialization.jackson.KodexObjectMapperFactory; public class JacksonTypeRefKodexMarshaller<T> implements KodexMarshaller<T> { private final TypeReference<T> reference; private final ObjectMapper mapper; public JacksonTypeRefKodexMarshaller( TypeReference<T> reference ) { this( reference, KodexObjectMapperFactory.getObjectMapper() ); } public JacksonTypeRefKodexMarshaller( TypeReference<T> reference, ObjectMapper mapper ) { this.reference = reference; this.mapper = mapper; } @Override public T fromBytes( byte[] bytes ) throws IOException { return mapper.readValue( bytes, reference ); } @Override public byte[] toBytes( T object ) throws IOException { return mapper.writeValueAsBytes( object ); } }