You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Jeff Klukas (JIRA)" <ji...@apache.org> on 2016/06/07 16:32:21 UTC

[jira] [Created] (KAFKA-3801) Provide static serialize() and deserialize() for use as method references

Jeff Klukas created KAFKA-3801:
----------------------------------

             Summary: Provide static serialize() and deserialize() for use as method references
                 Key: KAFKA-3801
                 URL: https://issues.apache.org/jira/browse/KAFKA-3801
             Project: Kafka
          Issue Type: Improvement
          Components: clients, streams
            Reporter: Jeff Klukas
            Assignee: Guozhang Wang
            Priority: Minor
             Fix For: 0.10.1.0


While most calls to {{Serializer.serialize}} and {{Deserializer.deserialize}} are abstracted away in Kafka Streams through the use of `Serdes` classes, there are some instances where developers may want to call them directly. The serializers and deserializers for simple types don't require any configuration and could be static, but currently it's necessary to create an instance to use those methods.

I'd propose moving serialization logic into a {{static public byte[] serialize(? data)}} method and deserialization logic into a {{static public ? deserialize(byte[] data)}} method. The existing instance methods would simply call the static versions.

See a full example for LongSerializer and LongDeserializer here:

https://github.com/apache/kafka/compare/trunk...jklukas:static-serde-methods?expand=1

In Java 8, these static methods then become available for method references in code like {{kstream.mapValues(LongDeserializer::deserialize)}} without the user needing to create an instance of {{LongDeserializer}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)