@Override
public void readExternal(final ObjectInput in) throws IOException {
- snapshotState = new ShardSnapshotState(ShardDataTreeSnapshot.deserialize(in));
+ snapshotState = ShardDataTreeSnapshot.deserialize(in);
}
private Object readResolve() {
@SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "This field is not Serializable but this class "
+ "implements writeReplace to delegate serialization to a Proxy class and thus instances of this class "
+ "aren't serialized. FindBugs does not recognize this.")
- private final ShardDataTreeSnapshot snapshot;
+ private final @NonNull ShardDataTreeSnapshot snapshot;
+ private final boolean migrated;
- public ShardSnapshotState(final @NonNull ShardDataTreeSnapshot snapshot) {
+ ShardSnapshotState(final @NonNull ShardDataTreeSnapshot snapshot, final boolean migrated) {
this.snapshot = requireNonNull(snapshot);
+ this.migrated = migrated;
+ }
+
+ public ShardSnapshotState(final @NonNull ShardDataTreeSnapshot snapshot) {
+ this(snapshot, false);
}
public @NonNull ShardDataTreeSnapshot getSnapshot() {
return snapshot;
}
+ @Override
+ public boolean needsMigration() {
+ return migrated;
+ }
+
private Object writeReplace() {
return new Proxy(this);
}