Hi Daniyar, Thanks for the proposal!
If I understand the point about the comparator, is it just to capture the generic type parameter? If so, then anything that implements a known interface would work just as well, right? I've been considering adding something like the Jackson TypeReference (or similar classes in many other projects). Would this be a good time to do it? Note that it's not necessary to actually require that the captured type is Comparable (as this proposal currently does), it's just a way to make sure there is some method that makes use of the generic type parameter, to force the compiler to capture the type. Just to make sure I understand the motivation... You expressed a desire to be able to serialize UUIDs, which I didn't follow, since there is a built-in UUID serde: org.apache.kafka.common.serialization.Serdes#UUID, and also, a UUID isn't a List. Did you mean that you need to use *lists of* UUIDs? Thanks, -John On Mon, May 6, 2019 at 11:49 AM Development <d...@yeralin.net> wrote: > Hello, > > Starting a discussion for KIP-466 adding support for List Serde. PR is > created under https://github.com/apache/kafka/pull/6592 < > https://github.com/apache/kafka/pull/6592> > > There are two topics I would like to discuss: > 1. Since type for List serve needs to be declared before hand, I could not > create a static method for List Serde under > org.apache.kafka.common.serialization.Serdes. I addressed it in the KIP: > P.S. Static method corresponding to ListSerde under > org.apache.kafka.common.serialization.Serdes (something like static public > Serde<List<T>> List() {...} inorg.apache.kafka.common.serialization.Serdes) > class cannot be added because type needs to be defined beforehand. That's > why one needs to create List Serde in the following fashion: > new Serdes.ListSerde<String>(Serdes.String(), > Comparator.comparing(String::length)); > (can possibly be simplified by declaring import static > org.apache.kafka.common.serialization.Serdes.ListSerde) > > 2. @miguno Michael G. Noll <https://github.com/miguno> is questioning > whether I need to pass a comparator to ListDeserializer. This certainly is > not required. Feel free to add your input: > https://github.com/apache/kafka/pull/6592#discussion_r281152067 > > Thank you! > > Best, > Daniyar Yeralin > > > On May 6, 2019, at 11:59 AM, Daniyar Yeralin (JIRA) <j...@apache.org> > wrote: > > > > Daniyar Yeralin created KAFKA-8326: > > -------------------------------------- > > > > Summary: Add List<T> Serde > > Key: KAFKA-8326 > > URL: https://issues.apache.org/jira/browse/KAFKA-8326 > > Project: Kafka > > Issue Type: Improvement > > Components: clients, streams > > Reporter: Daniyar Yeralin > > > > > > I propose adding serializers and deserializers for the java.util.List > class. > > > > I have many use cases where I want to set the key of a Kafka message to > be a UUID. Currently, I need to turn UUIDs into strings or byte arrays and > use their associated Serdes, but it would be more convenient to serialize > and deserialize UUIDs directly. > > > > I believe there are many use cases where one would want to have a List > serde. Ex. [ > https://stackoverflow.com/questions/41427174/aggregate-java-objects-in-a-list-with-kafka-streams-dsl-windows], > [ > https://stackoverflow.com/questions/46365884/issue-with-arraylist-serde-in-kafka-streams-api > ] > > > > > > > > KIP Link: [ > https://cwiki.apache.org/confluence/display/KAFKA/KIP-466%3A+Add+support+for+List%3CT%3E+serialization+and+deserialization > ] > > > > > > > > -- > > This message was sent by Atlassian JIRA > > (v7.6.3#76005) > >