package com.kryptnostic.kodex.v1.serialization.jackson; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.module.SimpleSerializers; import com.google.common.base.Optional; import com.kryptnostic.kodex.v1.crypto.keys.CryptoServiceLoader; import com.kryptnostic.kodex.v1.serialization.crypto.Encryptable; public class KryptoModule extends SimpleModule { private static final long serialVersionUID = 1679451956984264772L; // TODO: I'd like to read this version info from one place or not have it here at all public static final Version KRYPTO_JACKSON_MODULE_VERSION = new Version( 0, 0, 1, "SNAPSHOT", "com.kryptnostic", "krypto" ); protected final Optional<CryptoServiceLoader> loader; public KryptoModule() { super( "KryptoModule", KRYPTO_JACKSON_MODULE_VERSION ); this.loader = Optional.absent(); } public KryptoModule( CryptoServiceLoader loader ) { super( "KryptoModule", KRYPTO_JACKSON_MODULE_VERSION ); this.loader = Optional.of(loader); } @Override public void setupModule( SetupContext context ) { super.setupModule( context ); SimpleSerializers serializers = new SimpleSerializers(); serializers.addSerializer( Encryptable.class, new EncryptableSerializer( loader ) ); context.addSerializers( serializers ); } }