41
41
import com .google .common .base .Supplier ;
42
42
import com .google .common .collect .ImmutableList ;
43
43
44
+ import org .checkerframework .checker .nullness .qual .Nullable ;
45
+
44
46
import java .lang .reflect .Array ;
45
47
import java .lang .reflect .Type ;
46
48
import java .util .AbstractList ;
@@ -82,9 +84,9 @@ class ArrayTable extends AbstractQueryableTable implements ScannableTable {
82
84
return Statistics .of (content .size , keys , content .collations );
83
85
}
84
86
85
- @ Override public Enumerable <Object []> scan (DataContext root ) {
86
- return new AbstractEnumerable <Object []>() {
87
- @ Override public Enumerator <Object []> enumerator () {
87
+ @ Override public Enumerable <@ Nullable Object []> scan (DataContext root ) {
88
+ return new AbstractEnumerable <@ Nullable Object []>() {
89
+ @ Override public Enumerator <@ Nullable Object []> enumerator () {
88
90
final Content content = supplier .get ();
89
91
return content .arrayEnumerator ();
90
92
}
@@ -225,7 +227,7 @@ public static List asList(final Representation representation,
225
227
// Cache size. It might be expensive to compute.
226
228
final int size = representation .size (dataSet );
227
229
return new AbstractList () {
228
- @ Override public Object get (int index ) {
230
+ @ Override public @ Nullable Object get (int index ) {
229
231
return representation .getObject (dataSet , index );
230
232
}
231
233
@@ -243,9 +245,9 @@ public interface Representation {
243
245
244
246
/** Converts a value set into a compact representation. If
245
247
* {@code sources} is not null, permutes. */
246
- Object freeze (ColumnLoader .ValueSet valueSet , int [] sources );
248
+ Object freeze (ColumnLoader .ValueSet valueSet , int @ Nullable [] sources );
247
249
248
- Object getObject (Object dataSet , int ordinal );
250
+ @ Nullable Object getObject (Object dataSet , int ordinal );
249
251
int getInt (Object dataSet , int ordinal );
250
252
251
253
/** Creates a data set that is the same as a given data set
@@ -277,7 +279,7 @@ public static class ObjectArray implements Representation {
277
279
return RepresentationType .OBJECT_ARRAY ;
278
280
}
279
281
280
- @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int [] sources ) {
282
+ @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int @ Nullable [] sources ) {
281
283
// We assume the values have been canonized.
282
284
final List <Comparable > list = permuteList (valueSet .values , sources );
283
285
return list .toArray (new Comparable [0 ]);
@@ -334,7 +336,7 @@ public static class PrimitiveArray implements Representation {
334
336
return RepresentationType .PRIMITIVE_ARRAY ;
335
337
}
336
338
337
- @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int [] sources ) {
339
+ @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int @ Nullable [] sources ) {
338
340
//noinspection unchecked
339
341
return primitive .toArray2 (
340
342
permuteList ((List ) valueSet .values , sources ));
@@ -344,7 +346,7 @@ public static class PrimitiveArray implements Representation {
344
346
return primitive .permute (dataSet , sources );
345
347
}
346
348
347
- @ Override public Object getObject (Object dataSet , int ordinal ) {
349
+ @ Override public @ Nullable Object getObject (Object dataSet , int ordinal ) {
348
350
return p .arrayItem (dataSet , ordinal );
349
351
}
350
352
@@ -375,7 +377,7 @@ public static class PrimitiveDictionary implements Representation {
375
377
return RepresentationType .PRIMITIVE_DICTIONARY ;
376
378
}
377
379
378
- @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int [] sources ) {
380
+ @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int @ Nullable [] sources ) {
379
381
throw new UnsupportedOperationException (); // TODO:
380
382
}
381
383
@@ -423,7 +425,7 @@ public static class ObjectDictionary implements Representation {
423
425
return RepresentationType .OBJECT_DICTIONARY ;
424
426
}
425
427
426
- @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int [] sources ) {
428
+ @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int @ Nullable [] sources ) {
427
429
final int n = valueSet .map .keySet ().size ();
428
430
int extra = valueSet .containsNull ? 1 : 0 ;
429
431
Comparable [] codeValues =
@@ -486,7 +488,7 @@ public static class StringDictionary implements Representation {
486
488
return RepresentationType .STRING_DICTIONARY ;
487
489
}
488
490
489
- @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int [] sources ) {
491
+ @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int @ Nullable [] sources ) {
490
492
throw new UnsupportedOperationException (); // TODO:
491
493
}
492
494
@@ -524,7 +526,7 @@ public static class ByteStringDictionary implements Representation {
524
526
return RepresentationType .BYTE_STRING_DICTIONARY ;
525
527
}
526
528
527
- @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int [] sources ) {
529
+ @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int @ Nullable [] sources ) {
528
530
throw new UnsupportedOperationException (); // TODO:
529
531
}
530
532
@@ -565,7 +567,7 @@ public static class Constant implements Representation {
565
567
return RepresentationType .CONSTANT ;
566
568
}
567
569
568
- @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int [] sources ) {
570
+ @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int @ Nullable [] sources ) {
569
571
final int size = valueSet .values .size ();
570
572
return Pair .of (size == 0 ? null : valueSet .values .get (0 ), size );
571
573
}
@@ -626,7 +628,7 @@ public static class BitSlicedPrimitiveArray implements Representation {
626
628
return RepresentationType .BIT_SLICED_PRIMITIVE_ARRAY ;
627
629
}
628
630
629
- @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int [] sources ) {
631
+ @ Override public Object freeze (ColumnLoader .ValueSet valueSet , int @ Nullable [] sources ) {
630
632
final int chunksPerWord = 64 / bitCount ;
631
633
final List <Comparable > valueList =
632
634
permuteList (valueSet .values , sources );
@@ -783,7 +785,7 @@ public static void orLong(
783
785
}
784
786
785
787
private static <E > List <E > permuteList (
786
- final List <E > list , final int [] sources ) {
788
+ final List <E > list , final int @ Nullable [] sources ) {
787
789
if (sources == null ) {
788
790
return list ;
789
791
}
@@ -828,13 +830,13 @@ public <T> Enumerator<T> enumerator() {
828
830
}
829
831
}
830
832
831
- public Enumerator <Object []> arrayEnumerator () {
833
+ public Enumerator <@ Nullable Object []> arrayEnumerator () {
832
834
return new ArrayEnumerator (size , columns );
833
835
}
834
836
835
837
/** Enumerator over a table with a single column; each element
836
838
* returned is an object. */
837
- private static class ObjectEnumerator implements Enumerator <Object > {
839
+ private static class ObjectEnumerator implements Enumerator <@ Nullable Object > {
838
840
final int rowCount ;
839
841
final Object dataSet ;
840
842
final Representation representation ;
@@ -846,7 +848,7 @@ private static class ObjectEnumerator implements Enumerator<Object> {
846
848
this .representation = column .representation ;
847
849
}
848
850
849
- @ Override public Object current () {
851
+ @ Override public @ Nullable Object current () {
850
852
return representation .getObject (dataSet , i );
851
853
}
852
854
@@ -864,7 +866,7 @@ private static class ObjectEnumerator implements Enumerator<Object> {
864
866
865
867
/** Enumerator over a table with more than one column; each element
866
868
* returned is an array. */
867
- private static class ArrayEnumerator implements Enumerator <Object []> {
869
+ private static class ArrayEnumerator implements Enumerator <@ Nullable Object []> {
868
870
final int rowCount ;
869
871
final List <Column > columns ;
870
872
int i = -1 ;
@@ -874,8 +876,8 @@ private static class ArrayEnumerator implements Enumerator<Object[]> {
874
876
this .columns = columns ;
875
877
}
876
878
877
- @ Override public Object [] current () {
878
- Object [] objects = new Object [columns .size ()];
879
+ @ Override public @ Nullable Object [] current () {
880
+ @ Nullable Object [] objects = new Object [columns .size ()];
879
881
for (int j = 0 ; j < objects .length ; j ++) {
880
882
final Column pair = columns .get (j );
881
883
objects [j ] = pair .representation .getObject (pair .dataSet , i );
0 commit comments