Skip to content

Instantly share code, notes, and snippets.

@kdrakon
Created December 21, 2017 01:16
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save kdrakon/0b6a80c32bb25f34dc796cfeef5ce58c to your computer and use it in GitHub Desktop.
A Kafka Serde Java 8 Function
import org.apache.kafka.common.serialization.Deserializer;
import org.apache.kafka.common.serialization.Serde;
import org.apache.kafka.common.serialization.Serializer;
import java.util.Map;
import java.util.function.Function;
public class SerdeFunction<T> implements Serde<T> {
private final Function<T, byte[]> serializer;
private final Function<byte[], T> deserializer;
public SerdeFunction(Function<T, byte[]> serializer, Function<byte[], T> deserializer) {
this.serializer = serializer;
this.deserializer = deserializer;
}
@Override
public void configure(Map<String, ?> map, boolean b) {}
@Override
public void close() {}
@Override
public Serializer<T> serializer() {
return new Serializer<T>() {
@Override
public void configure(Map<String, ?> map, boolean b) {}
@Override
public void close() {}
@Override
public byte[] serialize(String s, T t) {
return serializer.apply(t);
}
};
}
@Override
public Deserializer<T> deserializer() {
return new Deserializer<T>() {
@Override
public void configure(Map<String, ?> map, boolean b) {}
@Override
public void close() {}
@Override
public T deserialize(String s, byte[] bytes) {
return deserializer.apply(bytes);
}
};
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment