diff --git a/datatypes/src/main/java/org/hyperledger/besu/datatypes/AccountOverride.java b/datatypes/src/main/java/org/hyperledger/besu/datatypes/AccountOverride.java index e33f6feef54..a3d27924a18 100644 --- a/datatypes/src/main/java/org/hyperledger/besu/datatypes/AccountOverride.java +++ b/datatypes/src/main/java/org/hyperledger/besu/datatypes/AccountOverride.java @@ -14,18 +14,17 @@ */ package org.hyperledger.besu.datatypes; -import org.hyperledger.besu.datatypes.parameters.UnsignedLongParameter; - -import java.util.Map; -import java.util.Objects; -import java.util.Optional; - import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import org.hyperledger.besu.datatypes.parameters.UnsignedLongParameter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + /** Account Override parameter class */ @JsonIgnoreProperties(ignoreUnknown = true) @JsonDeserialize(builder = AccountOverride.Builder.class) @@ -36,16 +35,20 @@ public class AccountOverride { private final Optional nonce; private final Optional code; private final Optional> stateDiff; + private final Optional movePrecompileToAddress; private AccountOverride( final Optional balance, final Optional nonce, final Optional code, - final Optional> stateDiff) { + final Optional> stateDiff, + final Optional movePrecompileToAddress + ) { this.balance = balance; this.nonce = nonce; this.code = code; this.stateDiff = stateDiff; + this.movePrecompileToAddress = movePrecompileToAddress; } /** @@ -84,6 +87,15 @@ public Optional> getStateDiff() { return stateDiff; } + /** + * Gets the movePrecompileToAddress override + * + * @return the movePrecompileToAddress if present + */ + public Optional getMovePrecompileToAddress() { + return movePrecompileToAddress; + } + /** Builder class for Account overrides */ @JsonIgnoreProperties(ignoreUnknown = true) public static class Builder { @@ -91,6 +103,7 @@ public static class Builder { private Optional nonce = Optional.empty(); private Optional code = Optional.empty(); private Optional> stateDiff = Optional.empty(); + private Optional movePrecompileToAddress = Optional.empty(); /** Default constructor. */ public Builder() {} @@ -106,6 +119,17 @@ public Builder withBalance(final Wei balance) { return this; } + /** + * Sets the movePrecompileToAddress override + * + * @param movePrecompileToAddress the address + * @return the builder + */ + public Builder withMovePrecompileToAddress(final String movePrecompileToAddress) { + this.movePrecompileToAddress = Optional.ofNullable(movePrecompileToAddress); + return this; + } + /** * Sets the nonce override * @@ -145,7 +169,7 @@ public Builder withStateDiff(final Map stateDiff) { * @return account override */ public AccountOverride build() { - return new AccountOverride(balance, nonce, code, stateDiff); + return new AccountOverride(balance, nonce, code, stateDiff, movePrecompileToAddress); } } @@ -176,25 +200,28 @@ public boolean equals(final Object o) { return balance.equals(accountOverride.balance) && nonce.equals(accountOverride.nonce) && code.equals(accountOverride.code) - && stateDiff.equals(accountOverride.stateDiff); + && stateDiff.equals(accountOverride.stateDiff) + && movePrecompileToAddress.equals(accountOverride.movePrecompileToAddress); } @Override public int hashCode() { - return Objects.hash(balance, nonce, code, stateDiff); + return Objects.hash(balance, nonce, code, stateDiff, movePrecompileToAddress); } @Override public String toString() { return "AccountOverride{" - + "balance=" - + balance - + ", nonce=" - + nonce - + ", code=" - + code - + ", stateDiff=" - + stateDiff - + '}'; + + "balance=" + + balance + + ", nonce=" + + nonce + + ", code=" + + code + + ", stateDiff=" + + stateDiff + + ", movePrecompileToAddress=" + + movePrecompileToAddress + + '}'; } }