+public class PrefixShardConfiguration implements Serializable {
+ private static final class Proxy implements Externalizable {
+ private static final long serialVersionUID = 1L;
+
+ private PrefixShardConfiguration prefixShardConfiguration;
+
+ // checkstyle flags the public modifier as redundant which really doesn't make sense since it clearly isn't
+ // redundant. It is explicitly needed for Java serialization to be able to create instances via reflection.
+ @SuppressWarnings("checkstyle:RedundantModifier")
+ public Proxy() {
+ }
+
+ Proxy(final PrefixShardConfiguration prefixShardConfiguration) {
+ this.prefixShardConfiguration = prefixShardConfiguration;
+ }
+
+ @Override
+ public void writeExternal(final ObjectOutput objectOutput) throws IOException {
+ objectOutput.writeObject(prefixShardConfiguration.getPrefix());
+ objectOutput.writeObject(prefixShardConfiguration.getShardStrategyName());
+
+ objectOutput.writeInt(prefixShardConfiguration.getShardMemberNames().size());
+ for (MemberName name : prefixShardConfiguration.getShardMemberNames()) {
+ name.writeTo(objectOutput);
+ }
+ }
+
+ @Override
+ public void readExternal(final ObjectInput objectInput) throws IOException, ClassNotFoundException {
+ final DOMDataTreeIdentifier localPrefix = (DOMDataTreeIdentifier) objectInput.readObject();
+ final String localStrategyName = (String) objectInput.readObject();
+
+ final int size = objectInput.readInt();
+ final Collection<MemberName> localShardMemberNames = new ArrayList<>(size);
+ for (int i = 0; i < size; i++) {
+ localShardMemberNames.add(MemberName.readFrom(objectInput));
+ }
+
+ prefixShardConfiguration = new PrefixShardConfiguration(localPrefix, localStrategyName,
+ localShardMemberNames);
+ }
+
+ private Object readResolve() {
+ return prefixShardConfiguration;
+ }
+ }
+