25
25
import com .google .cloud .bigtable .data .v2 .models .Range .AbstractTimestampRange ;
26
26
import com .google .common .base .Preconditions ;
27
27
import com .google .protobuf .ByteString ;
28
+ import java .io .IOException ;
29
+ import java .io .ObjectInputStream ;
30
+ import java .io .ObjectOutputStream ;
28
31
import java .io .Serializable ;
29
32
import javax .annotation .Nonnull ;
30
33
@@ -200,7 +203,19 @@ public Filter label(@Nonnull String label) {
200
203
// Implementations of target specific filters.
201
204
/** DSL for adding filters to a chain. */
202
205
public static final class ChainFilter implements Filter {
203
- private RowFilter .Chain .Builder builder ;
206
+ private static final long serialVersionUID = -6756759448656768478L ;
207
+ private transient RowFilter .Chain .Builder builder ;
208
+
209
+ private void writeObject (ObjectOutputStream s ) throws IOException {
210
+ s .defaultWriteObject ();
211
+ s .writeObject (builder .build ());
212
+ }
213
+
214
+ private void readObject (ObjectInputStream s ) throws IOException , ClassNotFoundException {
215
+ s .defaultReadObject ();
216
+ RowFilter .Chain chain = (RowFilter .Chain ) s .readObject ();
217
+ this .builder = chain .toBuilder ();
218
+ }
204
219
205
220
private ChainFilter () {
206
221
this .builder = RowFilter .Chain .newBuilder ();
@@ -241,7 +256,19 @@ public ChainFilter clone() {
241
256
242
257
/** DSL for adding filters to the interleave list. */
243
258
public static final class InterleaveFilter implements Filter {
244
- private RowFilter .Interleave .Builder builder ;
259
+ private static final long serialVersionUID = -6356151037337889421L ;
260
+ private transient RowFilter .Interleave .Builder builder ;
261
+
262
+ private void writeObject (ObjectOutputStream s ) throws IOException {
263
+ s .defaultWriteObject ();
264
+ s .writeObject (builder .build ());
265
+ }
266
+
267
+ private void readObject (ObjectInputStream s ) throws IOException , ClassNotFoundException {
268
+ s .defaultReadObject ();
269
+ RowFilter .Interleave interleave = (RowFilter .Interleave ) s .readObject ();
270
+ this .builder = interleave .toBuilder ();
271
+ }
245
272
246
273
private InterleaveFilter () {
247
274
builder = RowFilter .Interleave .newBuilder ();
@@ -281,7 +308,19 @@ public InterleaveFilter clone() {
281
308
282
309
/** DSL for configuring a conditional filter. */
283
310
public static final class ConditionFilter implements Filter {
284
- private RowFilter .Condition .Builder builder ;
311
+ private static final long serialVersionUID = -2720899822014446776L ;
312
+ private transient RowFilter .Condition .Builder builder ;
313
+
314
+ private void writeObject (ObjectOutputStream s ) throws IOException {
315
+ s .defaultWriteObject ();
316
+ s .writeObject (builder .build ());
317
+ }
318
+
319
+ private void readObject (ObjectInputStream s ) throws IOException , ClassNotFoundException {
320
+ s .defaultReadObject ();
321
+ RowFilter .Condition condition = (RowFilter .Condition ) s .readObject ();
322
+ this .builder = condition .toBuilder ();
323
+ }
285
324
286
325
private ConditionFilter (@ Nonnull Filter predicate ) {
287
326
Preconditions .checkNotNull (predicate );
@@ -323,7 +362,9 @@ public ConditionFilter clone() {
323
362
}
324
363
}
325
364
326
- public static final class KeyFilter {
365
+ public static final class KeyFilter implements Serializable {
366
+ private static final long serialVersionUID = 5137765114285539458L ;
367
+
327
368
private KeyFilter () {}
328
369
329
370
/**
@@ -383,7 +424,9 @@ public Filter sample(double probability) {
383
424
}
384
425
}
385
426
386
- public static final class FamilyFilter {
427
+ public static final class FamilyFilter implements Serializable {
428
+ private static final long serialVersionUID = -4470936841191831553L ;
429
+
387
430
private FamilyFilter () {}
388
431
389
432
/**
@@ -405,7 +448,9 @@ public Filter exactMatch(@Nonnull String value) {
405
448
}
406
449
}
407
450
408
- public static final class QualifierFilter {
451
+ public static final class QualifierFilter implements Serializable {
452
+ private static final long serialVersionUID = -1274850022909506559L ;
453
+
409
454
private QualifierFilter () {}
410
455
411
456
/**
@@ -459,7 +504,8 @@ public QualifierRangeFilter rangeWithinFamily(@Nonnull String family) {
459
504
460
505
/** Matches only cells from columns within the given range. */
461
506
public static final class QualifierRangeFilter
462
- extends AbstractByteStringRange <QualifierRangeFilter > implements Filter , Serializable {
507
+ extends AbstractByteStringRange <QualifierRangeFilter > implements Filter {
508
+ private static final long serialVersionUID = -1909319911147913630L ;
463
509
private final String family ;
464
510
465
511
private QualifierRangeFilter (String family ) {
@@ -505,7 +551,9 @@ public QualifierRangeFilter clone() {
505
551
}
506
552
}
507
553
508
- public static final class TimestampFilter {
554
+ public static final class TimestampFilter implements Serializable {
555
+ private static final long serialVersionUID = 5284219722591464991L ;
556
+
509
557
private TimestampFilter () {}
510
558
511
559
/**
@@ -529,7 +577,9 @@ public TimestampRangeFilter exact(Long exactTimestamp) {
529
577
530
578
/** Matches only cells with microsecond timestamps within the given range. */
531
579
public static final class TimestampRangeFilter
532
- extends AbstractTimestampRange <TimestampRangeFilter > implements Filter , Serializable {
580
+ extends AbstractTimestampRange <TimestampRangeFilter > implements Filter {
581
+ private static final long serialVersionUID = 8410980338603335276L ;
582
+
533
583
private TimestampRangeFilter () {}
534
584
535
585
@ InternalApi
@@ -571,7 +621,9 @@ public TimestampRangeFilter clone() {
571
621
}
572
622
}
573
623
574
- public static final class ValueFilter {
624
+ public static final class ValueFilter implements Serializable {
625
+ private static final long serialVersionUID = 6722715229238811179L ;
626
+
575
627
private ValueFilter () {}
576
628
577
629
/**
@@ -628,7 +680,9 @@ public Filter strip() {
628
680
629
681
/** Matches only cells with values that fall within the given value range. */
630
682
public static final class ValueRangeFilter extends AbstractByteStringRange <ValueRangeFilter >
631
- implements Filter , Serializable {
683
+ implements Filter {
684
+ private static final long serialVersionUID = -2452360677825047088L ;
685
+
632
686
private ValueRangeFilter () {}
633
687
634
688
@ InternalApi
@@ -668,7 +722,9 @@ public ValueRangeFilter clone() {
668
722
}
669
723
}
670
724
671
- public static final class OffsetFilter {
725
+ public static final class OffsetFilter implements Serializable {
726
+ private static final long serialVersionUID = 3228791236971884041L ;
727
+
672
728
private OffsetFilter () {}
673
729
674
730
/**
@@ -681,7 +737,9 @@ public Filter cellsPerRow(int count) {
681
737
}
682
738
}
683
739
684
- public static final class LimitFilter {
740
+ public static final class LimitFilter implements Serializable {
741
+ private static final long serialVersionUID = -794915549003008940L ;
742
+
685
743
private LimitFilter () {}
686
744
687
745
/**
@@ -705,6 +763,7 @@ public Filter cellsPerColumn(int count) {
705
763
}
706
764
707
765
private static final class SimpleFilter implements Filter {
766
+ private static final long serialVersionUID = 3595911451325189833L ;
708
767
private final RowFilter proto ;
709
768
710
769
private SimpleFilter (@ Nonnull RowFilter proto ) {
@@ -729,7 +788,7 @@ public SimpleFilter clone() {
729
788
}
730
789
731
790
@ InternalExtensionOnly
732
- public interface Filter extends Cloneable {
791
+ public interface Filter extends Cloneable , Serializable {
733
792
@ InternalApi
734
793
RowFilter toProto ();
735
794
}
0 commit comments