11/*
2- * Copyright 2019 the original author or authors.
2+ * Copyright 2019-2020 the original author or authors.
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
@@ -52,14 +52,14 @@ void testWithMapConfig() {
5252 serializers .put ("bytes" , new BytesSerializer ());
5353 serializers .put ("int" , IntegerSerializer .class );
5454 serializers .put ("string" , StringSerializer .class .getName ());
55- configs .put (DelegatingSerializer .SERIALIZATION_SELECTOR_CONFIG , serializers );
55+ configs .put (DelegatingSerializer .VALUE_SERIALIZATION_SELECTOR_CONFIG , serializers );
5656 serializer .configure (configs , false );
5757 DelegatingDeserializer deserializer = new DelegatingDeserializer ();
5858 Map <String , Object > deserializers = new HashMap <>();
5959 deserializers .put ("bytes" , new BytesDeserializer ());
6060 deserializers .put ("int" , IntegerDeserializer .class );
6161 deserializers .put ("string" , StringDeserializer .class .getName ());
62- configs .put (DelegatingSerializer .SERIALIZATION_SELECTOR_CONFIG , deserializers );
62+ configs .put (DelegatingSerializer .VALUE_SERIALIZATION_SELECTOR_CONFIG , deserializers );
6363 deserializer .configure (configs , false );
6464 doTest (serializer , deserializer );
6565 }
@@ -68,36 +68,96 @@ void testWithMapConfig() {
6868 void testWithPropertyConfig () {
6969 DelegatingSerializer serializer = new DelegatingSerializer ();
7070 Map <String , Object > configs = new HashMap <>();
71- configs .put (DelegatingSerializer .SERIALIZATION_SELECTOR_CONFIG , "bytes:" + BytesSerializer .class .getName ()
71+ configs .put (DelegatingSerializer .VALUE_SERIALIZATION_SELECTOR_CONFIG , "bytes:" + BytesSerializer .class .getName ()
7272 + ", int:" + IntegerSerializer .class .getName () + ", string: " + StringSerializer .class .getName ());
7373 serializer .configure (configs , false );
7474 DelegatingDeserializer deserializer = new DelegatingDeserializer ();
75- configs .put (DelegatingSerializer .SERIALIZATION_SELECTOR_CONFIG , "bytes:" + BytesDeserializer .class .getName ()
75+ configs .put (DelegatingSerializer .VALUE_SERIALIZATION_SELECTOR_CONFIG , "bytes:" + BytesDeserializer .class .getName ()
7676 + ", int:" + IntegerDeserializer .class .getName () + ", string: " + StringDeserializer .class .getName ());
7777 deserializer .configure (configs , false );
7878 doTest (serializer , deserializer );
7979 }
8080
81+ @ Test
82+ void testWithMapConfigKeys () {
83+ DelegatingSerializer serializer = new DelegatingSerializer ();
84+ Map <String , Object > configs = new HashMap <>();
85+ Map <String , Object > serializers = new HashMap <>();
86+ serializers .put ("bytes" , new BytesSerializer ());
87+ serializers .put ("int" , IntegerSerializer .class );
88+ serializers .put ("string" , StringSerializer .class .getName ());
89+ configs .put (DelegatingSerializer .KEY_SERIALIZATION_SELECTOR_CONFIG , serializers );
90+ serializer .configure (configs , true );
91+ DelegatingDeserializer deserializer = new DelegatingDeserializer ();
92+ Map <String , Object > deserializers = new HashMap <>();
93+ deserializers .put ("bytes" , new BytesDeserializer ());
94+ deserializers .put ("int" , IntegerDeserializer .class );
95+ deserializers .put ("string" , StringDeserializer .class .getName ());
96+ configs .put (DelegatingSerializer .KEY_SERIALIZATION_SELECTOR_CONFIG , deserializers );
97+ deserializer .configure (configs , true );
98+ doTestKeys (serializer , deserializer );
99+ }
100+
101+ @ Test
102+ void testWithPropertyConfigKeys () {
103+ DelegatingSerializer serializer = new DelegatingSerializer ();
104+ Map <String , Object > configs = new HashMap <>();
105+ configs .put (DelegatingSerializer .KEY_SERIALIZATION_SELECTOR_CONFIG , "bytes:" + BytesSerializer .class .getName ()
106+ + ", int:" + IntegerSerializer .class .getName () + ", string: " + StringSerializer .class .getName ());
107+ serializer .configure (configs , true );
108+ DelegatingDeserializer deserializer = new DelegatingDeserializer ();
109+ configs .put (DelegatingSerializer .KEY_SERIALIZATION_SELECTOR_CONFIG , "bytes:" + BytesDeserializer .class .getName ()
110+ + ", int:" + IntegerDeserializer .class .getName () + ", string: " + StringDeserializer .class .getName ());
111+ deserializer .configure (configs , true );
112+ doTestKeys (serializer , deserializer );
113+ }
114+
81115 private void doTest (DelegatingSerializer serializer , DelegatingDeserializer deserializer ) {
82116 Headers headers = new RecordHeaders ();
83- headers .add (new RecordHeader (DelegatingSerializer .SERIALIZATION_SELECTOR , "bytes" .getBytes ()));
117+ headers .add (new RecordHeader (DelegatingSerializer .VALUE_SERIALIZATION_SELECTOR , "bytes" .getBytes ()));
118+ byte [] bytes = new byte [] { 1 , 2 , 3 , 4 };
119+ byte [] serialized = serializer .serialize ("foo" , headers , new Bytes (bytes ));
120+ assertThat (serialized ).isSameAs (bytes );
121+ headers .add (new RecordHeader (DelegatingSerializer .VALUE_SERIALIZATION_SELECTOR , "int" .getBytes ()));
122+ serialized = serializer .serialize ("foo" , headers , 42 );
123+ assertThat (serialized ).isEqualTo (new byte [] { 0 , 0 , 0 , 42 });
124+ assertThat (deserializer .deserialize ("foo" , headers , serialized )).isEqualTo (42 );
125+ headers .add (new RecordHeader (DelegatingSerializer .VALUE_SERIALIZATION_SELECTOR , "string" .getBytes ()));
126+ serialized = serializer .serialize ("foo" , headers , "bar" );
127+ assertThat (serialized ).isEqualTo (new byte [] { 'b' , 'a' , 'r' });
128+ assertThat (deserializer .deserialize ("foo" , headers , serialized )).isEqualTo ("bar" );
129+
130+ // The DKHM will jsonize the value; test that we ignore the quotes
131+ MessageHeaders messageHeaders = new MessageHeaders (
132+ Collections .singletonMap (DelegatingSerializer .VALUE_SERIALIZATION_SELECTOR , "string" ));
133+ new DefaultKafkaHeaderMapper ().fromHeaders (messageHeaders , headers );
134+ assertThat (headers .lastHeader (DelegatingSerializer .VALUE_SERIALIZATION_SELECTOR ).value ())
135+ .isEqualTo (new byte [] { 's' , 't' , 'r' , 'i' , 'n' , 'g' });
136+ serialized = serializer .serialize ("foo" , headers , "bar" );
137+ assertThat (serialized ).isEqualTo (new byte [] { 'b' , 'a' , 'r' });
138+ assertThat (deserializer .deserialize ("foo" , headers , serialized )).isEqualTo ("bar" );
139+ }
140+
141+ private void doTestKeys (DelegatingSerializer serializer , DelegatingDeserializer deserializer ) {
142+ Headers headers = new RecordHeaders ();
143+ headers .add (new RecordHeader (DelegatingSerializer .KEY_SERIALIZATION_SELECTOR , "bytes" .getBytes ()));
84144 byte [] bytes = new byte [] { 1 , 2 , 3 , 4 };
85145 byte [] serialized = serializer .serialize ("foo" , headers , new Bytes (bytes ));
86146 assertThat (serialized ).isSameAs (bytes );
87- headers .add (new RecordHeader (DelegatingSerializer .SERIALIZATION_SELECTOR , "int" .getBytes ()));
147+ headers .add (new RecordHeader (DelegatingSerializer .KEY_SERIALIZATION_SELECTOR , "int" .getBytes ()));
88148 serialized = serializer .serialize ("foo" , headers , 42 );
89149 assertThat (serialized ).isEqualTo (new byte [] { 0 , 0 , 0 , 42 });
90150 assertThat (deserializer .deserialize ("foo" , headers , serialized )).isEqualTo (42 );
91- headers .add (new RecordHeader (DelegatingSerializer .SERIALIZATION_SELECTOR , "string" .getBytes ()));
151+ headers .add (new RecordHeader (DelegatingSerializer .KEY_SERIALIZATION_SELECTOR , "string" .getBytes ()));
92152 serialized = serializer .serialize ("foo" , headers , "bar" );
93153 assertThat (serialized ).isEqualTo (new byte [] { 'b' , 'a' , 'r' });
94154 assertThat (deserializer .deserialize ("foo" , headers , serialized )).isEqualTo ("bar" );
95155
96156 // The DKHM will jsonize the value; test that we ignore the quotes
97157 MessageHeaders messageHeaders = new MessageHeaders (
98- Collections .singletonMap (DelegatingSerializer .SERIALIZATION_SELECTOR , "string" ));
158+ Collections .singletonMap (DelegatingSerializer .KEY_SERIALIZATION_SELECTOR , "string" ));
99159 new DefaultKafkaHeaderMapper ().fromHeaders (messageHeaders , headers );
100- assertThat (headers .lastHeader (DelegatingSerializer .SERIALIZATION_SELECTOR ).value ())
160+ assertThat (headers .lastHeader (DelegatingSerializer .KEY_SERIALIZATION_SELECTOR ).value ())
101161 .isEqualTo (new byte [] { 's' , 't' , 'r' , 'i' , 'n' , 'g' });
102162 serialized = serializer .serialize ("foo" , headers , "bar" );
103163 assertThat (serialized ).isEqualTo (new byte [] { 'b' , 'a' , 'r' });
0 commit comments