Hi!

We use Avro to compile our schema files and serialize/deserialize the data in a 
distributed environment for streaming processing (client-kafka-flink).
In the project we have the need to encrypt some data both at transmission and 
in some phases of the processing (as example when serialized as checkpoints for 
Flink states).

I would like to have AVRO delegate the “close” of a serialized byte[] to a 
class that I define so I can define some logic that via a keyProvider retrieves 
the keys and encrypt/decrypt the data.

My idea is to fork and modify the AVRO project to add a new encoder the first 
times this is entered:
https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumWriter.java#L61
and then, if the datum object extends an interface with two methods: 
`afterSerialization(...)  and beforeDeserialization(...)` delegates to these 
the encryption/decryption.

Is there a way to achieve this without modifying AVRO code nor the caller 
(creator of the Encoder code)?

Thanks a lot for any help.
-Enrico

Reply via email to