3939import com .google .common .util .concurrent .UncheckedExecutionException ;
4040import java .math .BigDecimal ;
4141import java .math .BigInteger ;
42+ import java .net .Inet4Address ;
4243import java .net .InetAddress ;
44+ import java .net .UnknownHostException ;
4345import java .nio .ByteBuffer ;
4446import java .time .Instant ;
4547import java .time .LocalDate ;
@@ -171,7 +173,7 @@ public void should_find_user_codec_for_custom_java_type() {
171173 }
172174
173175 @ Test
174- public void should_create_list_codec () {
176+ public void should_create_list_codec_for_cql_and_java_types () {
175177 ListType cqlType = DataTypes .listOf (DataTypes .listOf (DataTypes .INT ));
176178 GenericType <List <List <Integer >>> javaType = new GenericType <List <List <Integer >>>() {};
177179 List <List <Integer >> value = ImmutableList .of (ImmutableList .of (1 ));
@@ -189,28 +191,46 @@ public void should_create_list_codec() {
189191 inOrder
190192 .verify (onCacheLookup )
191193 .accept (DataTypes .listOf (DataTypes .INT ), GenericType .listOf (GenericType .INTEGER ));
194+ }
195+
196+ @ Test
197+ public void should_create_list_codec_for_cql_type () {
198+ ListType cqlType = DataTypes .listOf (DataTypes .listOf (DataTypes .INT ));
199+ GenericType <List <List <Integer >>> javaType = new GenericType <List <List <Integer >>>() {};
200+ List <List <Integer >> value = ImmutableList .of (ImmutableList .of (1 ));
201+
202+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
203+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
192204
193- codec = registry .codecFor (cqlType );
205+ TypeCodec < List < List < Integer >>> codec = registry .codecFor (cqlType );
194206 assertThat (codec ).isNotNull ();
195207 assertThat (codec .canDecode (cqlType )).isTrue ();
196208 assertThat (codec .canEncode (javaType )).isTrue ();
197209 assertThat (codec .canEncode (value )).isTrue ();
198210 inOrder .verify (onCacheLookup ).accept (cqlType , null );
199211 inOrder .verify (onCacheLookup ).accept (DataTypes .listOf (DataTypes .INT ), null );
212+ }
200213
201- codec = registry .codecFor (value );
214+ @ Test
215+ public void should_create_list_codec_for_java_value () throws UnknownHostException {
216+ ListType cqlType = DataTypes .listOf (DataTypes .listOf (DataTypes .INT ));
217+ GenericType <List <List <Integer >>> javaType = new GenericType <List <List <Integer >>>() {};
218+ List <List <Integer >> value = ImmutableList .of (ImmutableList .of (1 ));
219+
220+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
221+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
222+
223+ TypeCodec <List <List <Integer >>> codec = registry .codecFor (value );
202224 assertThat (codec ).isNotNull ();
203225 assertThat (codec .canDecode (cqlType )).isTrue ();
204226 assertThat (codec .canEncode (javaType )).isTrue ();
205227 assertThat (codec .canEncode (value )).isTrue ();
206228 inOrder .verify (onCacheLookup ).accept (null , javaType );
207229 inOrder .verify (onCacheLookup ).accept (null , GenericType .listOf (GenericType .INTEGER ));
208-
209- inOrder .verifyNoMoreInteractions ();
210230 }
211231
212232 @ Test
213- public void should_create_set_codec () {
233+ public void should_create_set_codec_for_cql_and_java_types () {
214234 SetType cqlType = DataTypes .setOf (DataTypes .setOf (DataTypes .INT ));
215235 GenericType <Set <Set <Integer >>> javaType = new GenericType <Set <Set <Integer >>>() {};
216236 Set <Set <Integer >> value = ImmutableSet .of (ImmutableSet .of (1 ));
@@ -228,28 +248,46 @@ public void should_create_set_codec() {
228248 inOrder
229249 .verify (onCacheLookup )
230250 .accept (DataTypes .setOf (DataTypes .INT ), GenericType .setOf (GenericType .INTEGER ));
251+ }
231252
232- codec = registry .codecFor (cqlType );
253+ @ Test
254+ public void should_create_set_codec_for_cql_type () {
255+ SetType cqlType = DataTypes .setOf (DataTypes .setOf (DataTypes .INT ));
256+ GenericType <Set <Set <Integer >>> javaType = new GenericType <Set <Set <Integer >>>() {};
257+ Set <Set <Integer >> value = ImmutableSet .of (ImmutableSet .of (1 ));
258+
259+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
260+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
261+
262+ TypeCodec <Set <Set <Integer >>> codec = registry .codecFor (cqlType );
233263 assertThat (codec ).isNotNull ();
234264 assertThat (codec .canDecode (cqlType )).isTrue ();
235265 assertThat (codec .canEncode (javaType )).isTrue ();
236266 assertThat (codec .canEncode (value )).isTrue ();
237267 inOrder .verify (onCacheLookup ).accept (cqlType , null );
238268 inOrder .verify (onCacheLookup ).accept (DataTypes .setOf (DataTypes .INT ), null );
269+ }
239270
240- codec = registry .codecFor (value );
271+ @ Test
272+ public void should_create_set_codec_for_java_value () {
273+ SetType cqlType = DataTypes .setOf (DataTypes .setOf (DataTypes .INT ));
274+ GenericType <Set <Set <Integer >>> javaType = new GenericType <Set <Set <Integer >>>() {};
275+ Set <Set <Integer >> value = ImmutableSet .of (ImmutableSet .of (1 ));
276+
277+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
278+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
279+
280+ TypeCodec <Set <Set <Integer >>> codec = registry .codecFor (value );
241281 assertThat (codec ).isNotNull ();
242282 assertThat (codec .canDecode (cqlType )).isTrue ();
243283 assertThat (codec .canEncode (javaType )).isTrue ();
244284 assertThat (codec .canEncode (value )).isTrue ();
245285 inOrder .verify (onCacheLookup ).accept (null , javaType );
246286 inOrder .verify (onCacheLookup ).accept (null , GenericType .setOf (GenericType .INTEGER ));
247-
248- inOrder .verifyNoMoreInteractions ();
249287 }
250288
251289 @ Test
252- public void should_create_map_codec () {
290+ public void should_create_map_codec_for_cql_and_java_types () {
253291 MapType cqlType = DataTypes .mapOf (DataTypes .INT , DataTypes .mapOf (DataTypes .INT , DataTypes .INT ));
254292 GenericType <Map <Integer , Map <Integer , Integer >>> javaType =
255293 new GenericType <Map <Integer , Map <Integer , Integer >>>() {};
@@ -270,16 +308,38 @@ public void should_create_map_codec() {
270308 .accept (
271309 DataTypes .mapOf (DataTypes .INT , DataTypes .INT ),
272310 GenericType .mapOf (GenericType .INTEGER , GenericType .INTEGER ));
311+ }
312+
313+ @ Test
314+ public void should_create_map_codec_for_cql_type () {
315+ MapType cqlType = DataTypes .mapOf (DataTypes .INT , DataTypes .mapOf (DataTypes .INT , DataTypes .INT ));
316+ GenericType <Map <Integer , Map <Integer , Integer >>> javaType =
317+ new GenericType <Map <Integer , Map <Integer , Integer >>>() {};
318+ Map <Integer , Map <Integer , Integer >> value = ImmutableMap .of (1 , ImmutableMap .of (1 , 1 ));
273319
274- codec = registry .codecFor (cqlType );
320+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
321+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
322+
323+ TypeCodec <Map <Integer , Map <Integer , Integer >>> codec = registry .codecFor (cqlType );
275324 assertThat (codec ).isNotNull ();
276325 assertThat (codec .canDecode (cqlType )).isTrue ();
277326 assertThat (codec .canEncode (javaType )).isTrue ();
278327 assertThat (codec .canEncode (value )).isTrue ();
279328 inOrder .verify (onCacheLookup ).accept (cqlType , null );
280329 inOrder .verify (onCacheLookup ).accept (DataTypes .mapOf (DataTypes .INT , DataTypes .INT ), null );
330+ }
331+
332+ @ Test
333+ public void should_create_map_codec_for_java_value () {
334+ MapType cqlType = DataTypes .mapOf (DataTypes .INT , DataTypes .mapOf (DataTypes .INT , DataTypes .INT ));
335+ GenericType <Map <Integer , Map <Integer , Integer >>> javaType =
336+ new GenericType <Map <Integer , Map <Integer , Integer >>>() {};
337+ Map <Integer , Map <Integer , Integer >> value = ImmutableMap .of (1 , ImmutableMap .of (1 , 1 ));
338+
339+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
340+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
281341
282- codec = registry .codecFor (value );
342+ TypeCodec < Map < Integer , Map < Integer , Integer >>> codec = registry .codecFor (value );
283343 assertThat (codec ).isNotNull ();
284344 assertThat (codec .canDecode (cqlType )).isTrue ();
285345 assertThat (codec .canEncode (javaType )).isTrue ();
@@ -288,12 +348,10 @@ public void should_create_map_codec() {
288348 inOrder
289349 .verify (onCacheLookup )
290350 .accept (null , GenericType .mapOf (GenericType .INTEGER , GenericType .INTEGER ));
291-
292- inOrder .verifyNoMoreInteractions ();
293351 }
294352
295353 @ Test
296- public void should_create_tuple_codec () {
354+ public void should_create_tuple_codec_for_cql_and_java_types () {
297355 TupleType cqlType = DataTypes .tupleOf (DataTypes .INT , DataTypes .listOf (DataTypes .TEXT ));
298356 TupleValue value = cqlType .newValue ();
299357
@@ -309,15 +367,34 @@ public void should_create_tuple_codec() {
309367 inOrder .verify (onCacheLookup ).accept (cqlType , GenericType .TUPLE_VALUE );
310368 // field codecs are only looked up when fields are accessed, so no cache hit for list<int> now
311369
312- codec = registry .codecFor (cqlType );
370+ }
371+
372+ @ Test
373+ public void should_create_tuple_codec_for_cql_type () {
374+ TupleType cqlType = DataTypes .tupleOf (DataTypes .INT , DataTypes .listOf (DataTypes .TEXT ));
375+ TupleValue value = cqlType .newValue ();
376+
377+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
378+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
379+
380+ TypeCodec <TupleValue > codec = registry .codecFor (cqlType );
313381 assertThat (codec ).isNotNull ();
314382 assertThat (codec .canDecode (cqlType )).isTrue ();
315383 assertThat (codec .canEncode (GenericType .TUPLE_VALUE )).isTrue ();
316384 assertThat (codec .canEncode (TupleValue .class )).isTrue ();
317385 assertThat (codec .canEncode (value )).isTrue ();
318386 inOrder .verify (onCacheLookup ).accept (cqlType , null );
387+ }
319388
320- codec = registry .codecFor (value );
389+ @ Test
390+ public void should_create_tuple_codec_for_java_value () {
391+ TupleType cqlType = DataTypes .tupleOf (DataTypes .INT , DataTypes .listOf (DataTypes .TEXT ));
392+ TupleValue value = cqlType .newValue ();
393+
394+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
395+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
396+
397+ TypeCodec <TupleValue > codec = registry .codecFor (value );
321398 assertThat (codec ).isNotNull ();
322399 assertThat (codec .canDecode (cqlType )).isTrue ();
323400 assertThat (codec .canEncode (GenericType .TUPLE_VALUE )).isTrue ();
@@ -329,7 +406,7 @@ public void should_create_tuple_codec() {
329406 }
330407
331408 @ Test
332- public void should_create_udt_codec () {
409+ public void should_create_udt_codec_for_cql_and_java_types () {
333410 UserDefinedType cqlType =
334411 new UserDefinedTypeBuilder (
335412 CqlIdentifier .fromInternal ("ks" ), CqlIdentifier .fromInternal ("type" ))
@@ -350,15 +427,44 @@ public void should_create_udt_codec() {
350427 inOrder .verify (onCacheLookup ).accept (cqlType , GenericType .UDT_VALUE );
351428 // field codecs are only looked up when fields are accessed, so no cache hit for list<int> now
352429
353- codec = registry .codecFor (cqlType );
430+ }
431+
432+ @ Test
433+ public void should_create_udt_codec_for_cql_type () {
434+ UserDefinedType cqlType =
435+ new UserDefinedTypeBuilder (
436+ CqlIdentifier .fromInternal ("ks" ), CqlIdentifier .fromInternal ("type" ))
437+ .withField (CqlIdentifier .fromInternal ("field1" ), DataTypes .INT )
438+ .withField (CqlIdentifier .fromInternal ("field2" ), DataTypes .listOf (DataTypes .TEXT ))
439+ .build ();
440+ UdtValue value = cqlType .newValue ();
441+
442+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
443+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
444+
445+ TypeCodec <UdtValue > codec = registry .codecFor (cqlType );
354446 assertThat (codec ).isNotNull ();
355447 assertThat (codec .canDecode (cqlType )).isTrue ();
356448 assertThat (codec .canEncode (GenericType .UDT_VALUE )).isTrue ();
357449 assertThat (codec .canEncode (UdtValue .class )).isTrue ();
358450 assertThat (codec .canEncode (value )).isTrue ();
359451 inOrder .verify (onCacheLookup ).accept (cqlType , null );
452+ }
453+
454+ @ Test
455+ public void should_create_udt_codec_for_java_value () {
456+ UserDefinedType cqlType =
457+ new UserDefinedTypeBuilder (
458+ CqlIdentifier .fromInternal ("ks" ), CqlIdentifier .fromInternal ("type" ))
459+ .withField (CqlIdentifier .fromInternal ("field1" ), DataTypes .INT )
460+ .withField (CqlIdentifier .fromInternal ("field2" ), DataTypes .listOf (DataTypes .TEXT ))
461+ .build ();
462+ UdtValue value = cqlType .newValue ();
463+
464+ TestCachingCodecRegistry registry = new TestCachingCodecRegistry (onCacheLookup );
465+ InOrder inOrder = Mockito .inOrder (onCacheLookup );
360466
361- codec = registry .codecFor (value );
467+ TypeCodec < UdtValue > codec = registry .codecFor (value );
362468 assertThat (codec ).isNotNull ();
363469 assertThat (codec .canDecode (cqlType )).isTrue ();
364470 assertThat (codec .canEncode (GenericType .UDT_VALUE )).isTrue ();
0 commit comments