Skip to content

Commit

Permalink
fix: fix the issue where equals are not equal due to different user i…
Browse files Browse the repository at this point in the history
…nputs in certain situations.

For example, uppercase and lowercase hex.
  • Loading branch information
overcat committed Aug 5, 2024
1 parent 770bc9f commit 7a011b9
Show file tree
Hide file tree
Showing 36 changed files with 38 additions and 67 deletions.
17 changes: 17 additions & 0 deletions src/main/java/org/stellar/sdk/TransactionPreconditions.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.math.BigInteger;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import lombok.Builder;
import lombok.NonNull;
import lombok.Singular;
Expand Down Expand Up @@ -184,4 +185,20 @@ public Preconditions toXdr() {

return preconditionsBuilder.build();
}

@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object == null || getClass() != object.getClass()) {
return false;
}
return ((TransactionPreconditions) object).toXdr() == toXdr();
}

@Override
public int hashCode() {
return Objects.hash(toXdr());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
* @see AssetTypeCreditAlphaNum4
* @see AssetTypeCreditAlphaNum12
*/
// TODO: extends IllegalArgumentException?
public class AssetCodeLengthInvalidException extends SdkException {
public AssetCodeLengthInvalidException() {
super();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -18,7 +17,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class AccountMergeOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -26,7 +25,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
@Deprecated
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -17,7 +16,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class BeginSponsoringFutureReservesOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
Expand All @@ -17,7 +16,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class BumpSequenceOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -18,7 +17,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class ChangeTrustOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.io.IOException;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -19,7 +18,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class ClaimClaimableBalanceOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.io.IOException;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -19,7 +18,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class ClawbackClaimableBalanceOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -20,7 +19,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class ClawbackOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -18,7 +17,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class CreateAccountOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import java.util.ArrayList;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -24,7 +23,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class CreateClaimableBalanceOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -19,7 +18,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class CreatePassiveSellOfferOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.stellar.sdk.operations;

import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
Expand All @@ -12,7 +11,6 @@
* target="_blank">EndSponsoringFutureReserves</a> operation.
*/
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@SuperBuilder(toBuilder = true)
public class EndSponsoringFutureReservesOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -21,7 +20,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class ExtendFootprintTTLOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.stellar.sdk.operations;

import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
Expand All @@ -12,7 +11,6 @@
* target="_blank">Inflation</a> operation.
*/
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@SuperBuilder(toBuilder = true)
public class InflationOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand Down Expand Up @@ -42,7 +41,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class InvokeHostFunctionOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -22,7 +21,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class LiquidityPoolDepositOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -21,7 +20,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class LiquidityPoolWithdrawOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -19,7 +18,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class ManageBuyOfferOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -20,7 +19,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class ManageDataOperation extends Operation {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.stellar.sdk.operations;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
Expand All @@ -19,7 +18,6 @@
*/
@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor(access = lombok.AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
public class ManageSellOfferOperation extends Operation {
Expand Down
19 changes: 17 additions & 2 deletions src/main/java/org/stellar/sdk/operations/Operation.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.io.IOException;
import java.math.BigDecimal;
import lombok.EqualsAndHashCode;
import java.util.Objects;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
Expand All @@ -12,7 +12,6 @@

/** Abstract class for operations. */
@SuperBuilder(toBuilder = true)
@EqualsAndHashCode
public abstract class Operation {
Operation() {}

Expand Down Expand Up @@ -193,4 +192,20 @@ public static Operation fromXdr(org.stellar.sdk.xdr.Operation xdr) {
* @return OperationBody XDR object
*/
abstract org.stellar.sdk.xdr.Operation.OperationBody toOperationBody();

@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object == null || getClass() != object.getClass()) {
return false;
}
return ((Operation) object).toXdr().equals(toXdr());
}

@Override
public int hashCode() {
return Objects.hash(toXdr());
}
}
Loading

0 comments on commit 7a011b9

Please sign in to comment.