- interface SerialForm extends Externalizable {
-
- ShardSnapshotState snapshotState();
-
- void resolveTo(@NonNull ShardSnapshotState newSnapshotState);
-
- Object readResolve();
-
- @Override
- default void readExternal(final ObjectInput in) throws IOException {
- resolveTo(ShardDataTreeSnapshot.deserialize(in));
- }
-
- @Override
- default void writeExternal(final ObjectOutput out) throws IOException {
- snapshotState().getSnapshot().serialize(out);
- }
- }
-
- private static final class Proxy implements SerialForm {
- private static final long serialVersionUID = 1L;
-
- private ShardSnapshotState snapshotState;
-
- // 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() {
- // For Externalizable
- }
-
- Proxy(final ShardSnapshotState snapshotState) {
- this.snapshotState = snapshotState;
- }
-
- @Override
- public ShardSnapshotState snapshotState() {
- return snapshotState;
- }
-
- @Override
- public void resolveTo(final ShardSnapshotState newSnapshotState) {
- snapshotState = requireNonNull(newSnapshotState);
- }
-
- @Override
- public Object readResolve() {
- return verifyNotNull(snapshotState);
- }
- }
-