Hi Ismael,

Well, yes. If we care about headers only then you'd need to add a dummy
implementation for the 2 parameter method as well. Although it is not
ideal, we're using the Serializer interface everywhere and convert it to
extended with ensureExtended(serializer) and delegate to the 2 parameter
method inside the wrapper which is returned in ensureExtended. Because of
backward compatibility we have to keep delegating but I could perhaps add a
dummy implementation for the 2 parameter too if you and others think that
would be better. In this case though we'd have an interface where all
methods are default (given the improvements of KIP-331
<https://cwiki.apache.org/confluence/display/KAFKA/KIP-331+Add+default+implementation+to+close%28%29+and+configure%28%29+for+Serializer%2C+Deserializer+and+Serde>)
and would have to rethink if this interface should be a
@FunctionalInterface.
I don't really have a context currently on how the 3 parameter method is
used, most the code samples I found on github were using the 2 parameter
method. I think I found one instance where the 3 parameter one was used but
that delegated to the 2 param one :). Have to say though that this research
is not representative.
All in all I think it wouldn't hurt to provide a default implementation for
the 2 param method too but then we have to give up the @FunctionalInterface
annotation and we'll end up with an interface with no abstract methods but
only defaults.
What do you think?

Cheers,
Viktor


On Mon, Jul 9, 2018 at 11:02 AM Ismael Juma <ism...@juma.me.uk> wrote:

> Thanks for the KIP. It would be helpful to understand the user experience
> for the case where the implementor uses the headers. It seems like it would
> require overriding two methods?
>
> Ismael
>
> On Mon, Jul 9, 2018 at 1:50 AM Viktor Somogyi <viktorsomo...@gmail.com>
> wrote:
>
> > Hi folks,
> >
> > I've published KIP-336 which is about consolidating the
> > Serializer/Deserializer interfaces.
> >
> > Basically the story here is when ExtendedSerializer and
> > ExtendedDeserializer were added we still supported Java 7 and therefore
> had
> > to use compatible constructs which now seem unnecessary since we dropped
> > support for Java 7. Now in this KIP I propose a way to deprecate those
> > patterns:
> >
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=87298242
> >
> > I'd be happy to receive some feedback about the KIP I published.
> >
> > Cheers,
> > Viktor
> >
>

Reply via email to