Skip to content

Commit

Permalink
TransactionOutput: add equals/hashcode/duplicateDetached methods.
Browse files Browse the repository at this point in the history
  • Loading branch information
mikehearn committed Apr 7, 2014
1 parent af07acd commit 782edd8
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions core/src/main/java/com/google/bitcoin/core/TransactionOutput.java
Expand Up @@ -28,6 +28,7 @@
import java.io.Serializable;
import java.lang.ref.WeakReference;
import java.math.BigInteger;
import java.util.Arrays;

import static com.google.common.base.Preconditions.*;

Expand Down Expand Up @@ -332,4 +333,30 @@ private void writeObject(ObjectOutputStream out) throws IOException {
maybeParse();
out.defaultWriteObject();
}

/** Returns a copy of the output detached from its containing transaction, if need be. */
public TransactionOutput duplicateDetached() {
return new TransactionOutput(params, null, value, org.spongycastle.util.Arrays.clone(scriptBytes));
}

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

TransactionOutput output = (TransactionOutput) o;

if (!Arrays.equals(scriptBytes, output.scriptBytes)) return false;
if (value != null ? !value.equals(output.value) : output.value != null) return false;
if (parentTransaction != null && parentTransaction != output.parentTransaction) return false;

return true;
}

@Override
public int hashCode() {
int result = value != null ? value.hashCode() : 0;
result = 31 * result + (scriptBytes != null ? Arrays.hashCode(scriptBytes) : 0);
return result;
}
}

0 comments on commit 782edd8

Please sign in to comment.