From 1599b5c8bf2f3b02ada54593eee0090ecac1785f Mon Sep 17 00:00:00 2001 From: Julian Len <julian@iovlabs.org> Date: Thu, 9 Jan 2025 18:24:51 -0300 Subject: [PATCH] feat: changed the tracker for a more generic class --- .../FederationStorageProviderImpl.java | 20 ++++++------ .../rsk/peg/federation/FederationTracker.java | 27 ---------------- .../co/rsk/peg/federation/ValueTracker.java | 31 +++++++++++++++++++ 3 files changed, 41 insertions(+), 37 deletions(-) delete mode 100644 rskj-core/src/main/java/co/rsk/peg/federation/FederationTracker.java create mode 100644 rskj-core/src/main/java/co/rsk/peg/federation/ValueTracker.java diff --git a/rskj-core/src/main/java/co/rsk/peg/federation/FederationStorageProviderImpl.java b/rskj-core/src/main/java/co/rsk/peg/federation/FederationStorageProviderImpl.java index 86dad0d5bc..ad9356a783 100644 --- a/rskj-core/src/main/java/co/rsk/peg/federation/FederationStorageProviderImpl.java +++ b/rskj-core/src/main/java/co/rsk/peg/federation/FederationStorageProviderImpl.java @@ -23,8 +23,8 @@ public class FederationStorageProviderImpl implements FederationStorageProvider { private final StorageAccessor bridgeStorageAccessor; private final HashMap<DataWord, Optional<Integer>> storageVersionEntries; - private final FederationTracker<Federation> oldFederationTracker = new FederationTracker<>(); - private final FederationTracker<PendingFederation> pendingFederationTracker = new FederationTracker<>(); + private final ValueTracker<Federation> oldFederationTracker = new ValueTracker<>(); + private final ValueTracker<PendingFederation> pendingFederationTracker = new ValueTracker<>(); private List<UTXO> newFederationBtcUTXOs; private List<UTXO> oldFederationBtcUTXOs; private Federation newFederation; @@ -139,7 +139,7 @@ public void setNewFederation(Federation federation) { @Override public Federation getOldFederation(FederationConstants federationConstants, ActivationConfig.ForBlock activations) { - if (oldFederationTracker.hasBeenSet()) { + if (oldFederationTracker.isPresent()) { return oldFederationTracker.get(); } @@ -159,18 +159,18 @@ public Federation getOldFederation(FederationConstants federationConstants, Acti } ); - oldFederationTracker.set(oldFederation, false); + oldFederationTracker.set(oldFederation); return oldFederationTracker.get(); } @Override public void setOldFederation(Federation federation) { - oldFederationTracker.set(federation, true); + oldFederationTracker.setNew(federation); } @Override public PendingFederation getPendingFederation() { - if (pendingFederationTracker.hasBeenSet()) { + if (pendingFederationTracker.isPresent()) { return pendingFederationTracker.get(); } @@ -190,13 +190,13 @@ public PendingFederation getPendingFederation() { } ); - pendingFederationTracker.set(pendingFederation, false); + pendingFederationTracker.set(pendingFederation); return pendingFederationTracker.get(); } @Override public void setPendingFederation(PendingFederation federation) { - pendingFederationTracker.set(federation, true); + pendingFederationTracker.setNew(federation); } @Override @@ -338,7 +338,7 @@ private void saveOldFederation(ActivationConfig.ForBlock activations) { } private int getOldFederationFormatVersion() { - if (!oldFederationTracker.isPresent()) { + if (oldFederationTracker.isNull()) { // assume it is a standard federation to keep backwards compatibility return STANDARD_MULTISIG_FEDERATION.getFormatVersion(); } @@ -363,7 +363,7 @@ private void savePendingFederation(ActivationConfig.ForBlock activations) { @Nullable private byte[] serializePendingFederation(ActivationConfig.ForBlock activations) { - if (!pendingFederationTracker.isPresent()) { + if (pendingFederationTracker.isNull()) { return null; } diff --git a/rskj-core/src/main/java/co/rsk/peg/federation/FederationTracker.java b/rskj-core/src/main/java/co/rsk/peg/federation/FederationTracker.java deleted file mode 100644 index d1ab1daa9e..0000000000 --- a/rskj-core/src/main/java/co/rsk/peg/federation/FederationTracker.java +++ /dev/null @@ -1,27 +0,0 @@ -package co.rsk.peg.federation; - -public class FederationTracker<T> { - private T federation; - private boolean modified = false; - - public boolean isModified() { - return this.modified; - } - - public T get() { - return this.federation; - } - - public boolean isPresent() { - return this.federation != null; - } - - public boolean hasBeenSet() { - return this.isPresent() || this.isModified(); - } - - public void set(T aFederation, boolean shouldSave) { - this.federation = aFederation; - this.modified = shouldSave; - } -} diff --git a/rskj-core/src/main/java/co/rsk/peg/federation/ValueTracker.java b/rskj-core/src/main/java/co/rsk/peg/federation/ValueTracker.java new file mode 100644 index 0000000000..6403c8dd2c --- /dev/null +++ b/rskj-core/src/main/java/co/rsk/peg/federation/ValueTracker.java @@ -0,0 +1,31 @@ +package co.rsk.peg.federation; + +public class ValueTracker<T> { + private T value; + private boolean modified = false; + + public boolean isModified() { + return this.modified; + } + + public T get() { + return this.value; + } + + public boolean isPresent() { + return !isNull() || this.isModified(); + } + + public boolean isNull() { + return this.value == null; + } + + public void setNew(T aValue) { + this.value = aValue; + this.modified = true; + } + + public void set(T aValue) { + this.value = aValue; + } +}