I like it, but we are not on Java8 yet, and I don't think we want to block on that :)
On Wed, Mar 30, 2016 at 10:53 AM, Ismael Juma <ism...@juma.me.uk> wrote: > On Wed, Mar 30, 2016 at 6:21 PM, Gwen Shapira <g...@confluent.io> wrote: > > > Ismael, can you detail how the Optional approach would work in the wire > > protocol? It sounds good, but I'm unclear on what this would look like on > > the wire. > > > > In the wire protocol, we would still use a size of -1 like we normally do > for nullable strings and nullable bytes. So, it's still a bit magical, but > efficient and associated with the right field (which avoids some invalid > states that are possible if we use two fields). In other words, each > implementation of the protocol is responsible for figuring out an idiomatic > and hopefully safe way to represent the absence of a value. > > In Java (Scala would be similar) we would convert this to an > Optional<List<String>> to make it clear that the value could be absent (and > avoid NPEs). The fact that absence of a value means "all topics" makes > sense if one thinks about that field as a filter (absence of a value means > no filter). > > I can see pros and cons for each approach, personally. :) > > Ismael >