1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.anyflow.lannister.cluster;
17
18 import java.io.IOException;
19 import java.util.HashSet;
20
21 import com.google.common.collect.Lists;
22 import com.hazelcast.nio.ObjectDataInput;
23 import com.hazelcast.nio.ObjectDataOutput;
24 import com.hazelcast.nio.serialization.IdentifiedDataSerializable;
25
26 import net.anyflow.lannister.serialization.SerializableFactory;
27
28 public class SerializableStringSet extends HashSet<String> implements IdentifiedDataSerializable {
29 private static final long serialVersionUID = 8628682087610501290L;
30 public static final int ID = 9;
31
32 public SerializableStringSet() {
33 }
34
35 public SerializableStringSet(String... items) {
36 this();
37
38 this.addAll(Lists.newArrayList(items));
39 }
40
41 @Override
42 public int getFactoryId() {
43 return SerializableFactory.ID;
44 }
45
46 @Override
47 public int getId() {
48 return ID;
49 }
50
51 @Override
52 public void writeData(ObjectDataOutput out) throws IOException {
53 out.writeInt(size());
54
55 for (String item : this) {
56 out.writeUTF(item);
57 }
58 }
59
60 @Override
61 public void readData(ObjectDataInput in) throws IOException {
62 int size = in.readInt();
63
64 for (int i = 0; i < size; ++i) {
65 this.add(in.readUTF());
66 }
67 }
68 }