Refactoring: cleanups

This commit is contained in:
chimp1984 2020-09-21 20:31:22 -05:00
parent 3a7af57a43
commit dc8ddbd4ae
No known key found for this signature in database
GPG key ID: 9801B4EC591F90E3
2 changed files with 23 additions and 20 deletions

View file

@ -55,18 +55,21 @@ public class BuyerSetupDepositTxListener extends TradeTask {
if (trade.getDepositTx() == null && processModel.getPreparedDepositTx() != null) { if (trade.getDepositTx() == null && processModel.getPreparedDepositTx() != null) {
BtcWalletService walletService = processModel.getBtcWalletService(); BtcWalletService walletService = processModel.getBtcWalletService();
final NetworkParameters params = walletService.getParams(); NetworkParameters params = walletService.getParams();
Transaction preparedDepositTx = new Transaction(params, processModel.getPreparedDepositTx()); Transaction preparedDepositTx = new Transaction(params, processModel.getPreparedDepositTx());
checkArgument(!preparedDepositTx.getOutputs().isEmpty(), "preparedDepositTx.getOutputs() must not be empty"); checkArgument(!preparedDepositTx.getOutputs().isEmpty(), "preparedDepositTx.getOutputs() must not be empty");
//TODO update to new bitcoinj API
Address depositTxAddress = preparedDepositTx.getOutput(0).getAddressFromP2SH(params); Address depositTxAddress = preparedDepositTx.getOutput(0).getAddressFromP2SH(params);
final TransactionConfidence confidence = walletService.getConfidenceForAddress(depositTxAddress);
if (isInNetwork(confidence)) { TransactionConfidence confidence = walletService.getConfidenceForAddress(depositTxAddress);
if (isVisibleInNetwork(confidence)) {
applyConfidence(confidence); applyConfidence(confidence);
} else { } else {
confidenceListener = new AddressConfidenceListener(depositTxAddress) { confidenceListener = new AddressConfidenceListener(depositTxAddress) {
@Override @Override
public void onTransactionConfidenceChanged(TransactionConfidence confidence) { public void onTransactionConfidenceChanged(TransactionConfidence confidence) {
if (isInNetwork(confidence)) if (isVisibleInNetwork(confidence))
applyConfidence(confidence); applyConfidence(confidence);
} }
}; };
@ -77,7 +80,7 @@ public class BuyerSetupDepositTxListener extends TradeTask {
swapReservedForTradeEntry(); swapReservedForTradeEntry();
// hack to remove tradeStateSubscription at callback // hack to remove tradeStateSubscription at callback
UserThread.execute(this::unSubscribe); UserThread.execute(this::unSubscribeAndRemoveListener);
} }
}); });
} }
@ -103,10 +106,10 @@ public class BuyerSetupDepositTxListener extends TradeTask {
swapReservedForTradeEntry(); swapReservedForTradeEntry();
// need delay as it can be called inside the listener handler before listener and tradeStateSubscription are actually set. // need delay as it can be called inside the listener handler before listener and tradeStateSubscription are actually set.
UserThread.execute(this::unSubscribe); UserThread.execute(this::unSubscribeAndRemoveListener);
} }
private boolean isInNetwork(TransactionConfidence confidence) { private boolean isVisibleInNetwork(TransactionConfidence confidence) {
return confidence != null && return confidence != null &&
(confidence.getConfidenceType().equals(TransactionConfidence.ConfidenceType.BUILDING) || (confidence.getConfidenceType().equals(TransactionConfidence.ConfidenceType.BUILDING) ||
confidence.getConfidenceType().equals(TransactionConfidence.ConfidenceType.PENDING)); confidence.getConfidenceType().equals(TransactionConfidence.ConfidenceType.PENDING));
@ -114,14 +117,17 @@ public class BuyerSetupDepositTxListener extends TradeTask {
private void swapReservedForTradeEntry() { private void swapReservedForTradeEntry() {
log.info("swapReservedForTradeEntry"); log.info("swapReservedForTradeEntry");
processModel.getBtcWalletService().swapTradeEntryToAvailableEntry(trade.getId(), AddressEntry.Context.RESERVED_FOR_TRADE); processModel.getBtcWalletService().swapTradeEntryToAvailableEntry(trade.getId(),
AddressEntry.Context.RESERVED_FOR_TRADE);
} }
private void unSubscribe() { private void unSubscribeAndRemoveListener() {
if (tradeStateSubscription != null) if (tradeStateSubscription != null) {
tradeStateSubscription.unsubscribe(); tradeStateSubscription.unsubscribe();
}
if (confidenceListener != null) if (confidenceListener != null) {
processModel.getBtcWalletService().removeAddressConfidenceListener(confidenceListener); processModel.getBtcWalletService().removeAddressConfidenceListener(confidenceListener);
}
} }
} }

View file

@ -38,6 +38,8 @@ import java.util.Optional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
@ -51,20 +53,15 @@ public class BuyerAsMakerCreatesAndSignsDepositTx extends TradeTask {
protected void run() { protected void run() {
try { try {
runInterceptHook(); runInterceptHook();
checkNotNull(trade.getTradeAmount(), "trade.getTradeAmount() must not be null"); Coin tradeAmount = checkNotNull(trade.getTradeAmount(), "trade.getTradeAmount() must not be null");
BtcWalletService walletService = processModel.getBtcWalletService(); BtcWalletService walletService = processModel.getBtcWalletService();
String id = processModel.getOffer().getId(); String id = processModel.getOffer().getId();
TradingPeer tradingPeer = processModel.getTradingPeer(); TradingPeer tradingPeer = processModel.getTradingPeer();
Offer offer = checkNotNull(trade.getOffer()); Offer offer = checkNotNull(trade.getOffer());
// params
byte[] contractHash = Hash.getSha256Hash(checkNotNull(trade.getContractAsJson())); byte[] contractHash = Hash.getSha256Hash(checkNotNull(trade.getContractAsJson()));
trade.setContractHash(contractHash); trade.setContractHash(contractHash);
log.debug("\n\n------------------------------------------------------------\n"
+ "Contract as json\n"
+ trade.getContractAsJson()
+ "\n------------------------------------------------------------\n");
Coin makerInputAmount = offer.getBuyerSecurityDeposit(); Coin makerInputAmount = offer.getBuyerSecurityDeposit();
Optional<AddressEntry> addressEntryOptional = walletService.getAddressEntry(id, AddressEntry.Context.MULTI_SIG); Optional<AddressEntry> addressEntryOptional = walletService.getAddressEntry(id, AddressEntry.Context.MULTI_SIG);
@ -76,15 +73,15 @@ public class BuyerAsMakerCreatesAndSignsDepositTx extends TradeTask {
Coin msOutputAmount = makerInputAmount Coin msOutputAmount = makerInputAmount
.add(trade.getTxFee()) .add(trade.getTxFee())
.add(offer.getSellerSecurityDeposit()) .add(offer.getSellerSecurityDeposit())
.add(trade.getTradeAmount()); .add(tradeAmount);
List<RawTransactionInput> takerRawTransactionInputs = checkNotNull(tradingPeer.getRawTransactionInputs()); List<RawTransactionInput> takerRawTransactionInputs = checkNotNull(tradingPeer.getRawTransactionInputs());
long takerChangeOutputValue = tradingPeer.getChangeOutputValue(); long takerChangeOutputValue = tradingPeer.getChangeOutputValue();
String takerChangeAddressString = tradingPeer.getChangeOutputAddress(); @Nullable String takerChangeAddressString = tradingPeer.getChangeOutputAddress();
Address makerAddress = walletService.getOrCreateAddressEntry(id, AddressEntry.Context.RESERVED_FOR_TRADE).getAddress(); Address makerAddress = walletService.getOrCreateAddressEntry(id, AddressEntry.Context.RESERVED_FOR_TRADE).getAddress();
Address makerChangeAddress = walletService.getFreshAddressEntry().getAddress(); Address makerChangeAddress = walletService.getFreshAddressEntry().getAddress();
byte[] buyerPubKey = processModel.getMyMultiSigPubKey(); byte[] buyerPubKey = processModel.getMyMultiSigPubKey();
byte[] sellerPubKey = tradingPeer.getMultiSigPubKey(); byte[] sellerPubKey = checkNotNull(tradingPeer.getMultiSigPubKey());
checkArgument(Arrays.equals(buyerPubKey, checkArgument(Arrays.equals(buyerPubKey,
makerMultiSigAddressEntry.getPubKey()), makerMultiSigAddressEntry.getPubKey()),
"buyerPubKey from AddressEntry must match the one from the trade data. trade id =" + id); "buyerPubKey from AddressEntry must match the one from the trade data. trade id =" + id);