1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.giraph.writable.kryo.serializers;
19
20 import java.util.Collections;
21 import java.util.List;
22
23 import com.esotericsoftware.kryo.Kryo;
24 import com.esotericsoftware.kryo.Serializer;
25 import com.esotericsoftware.kryo.io.Input;
26 import com.esotericsoftware.kryo.io.Output;
27
28
29
30
31
32
33 public class CollectionsNCopiesSerializer<T> extends Serializer<List<T>> {
34 @Override
35 public void write(Kryo kryo, Output output, List<T> object) {
36 output.writeInt(object.size(), true);
37 if (object.size() > 0) {
38 kryo.writeClassAndObject(output, object.get(0));
39 }
40 }
41
42 @Override
43 public List<T> read(Kryo kryo, Input input, Class<List<T>> type) {
44 int size = input.readInt(true);
45 if (size > 0) {
46 T object = (T) kryo.readClassAndObject(input);
47 return Collections.nCopies(size, object);
48 } else {
49 return Collections.emptyList();
50 }
51 }
52 }