Add null checks

This commit is contained in:
Manfred Karrer 2014-11-26 21:10:01 +01:00
parent 33682694ed
commit 3b75cc2fd0
5 changed files with 56 additions and 34 deletions

View File

@ -2,8 +2,6 @@
Theme colors:
logo colors:
blue: 0096c9
dark grey: #333333
new blue: 0f87c3
new grey: 666666

View File

@ -59,7 +59,7 @@ import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
/**
* Domain for that UI element.
@ -244,7 +244,7 @@ class CreateOfferDataModel implements Activatable, DataModel {
@SuppressWarnings("NullableProblems")
void setDirection(Direction direction) {
// direction can not be changed once it is initially set
checkArgument(direction != null);
checkNotNull(direction);
this.direction = direction;
}

View File

@ -129,15 +129,22 @@ class TakeOfferDataModel implements Activatable, DataModel {
}
void takeOffer() {
Trade trade = tradeManager.takeOffer(amountAsCoin.get(), offer);
final Trade trade = tradeManager.takeOffer(amountAsCoin.get(), offer);
trade.stateProperty().addListener((ov, oldValue, newValue) -> {
log.debug("trade state = " + newValue);
switch (newValue) {
// TODO Check why DEPOSIT_CONFIRMED can happen, refactor state handling
case DEPOSIT_PUBLISHED:
case DEPOSIT_CONFIRMED:
transactionId.set(trade.getDepositTx().getHashAsString());
requestTakeOfferSuccess.set(true);
// TODO null pointer happened here!
if (trade.getDepositTx() != null) {
transactionId.set(trade.getDepositTx().getHashAsString());
requestTakeOfferSuccess.set(true);
}
else {
log.warn("trade.getDepositTx() = null. at trade state " + newValue +
" That should not happen and needs more investigation why it can happen.");
}
break;
case FAILED:
requestTakeOfferErrorMessage.set("An error occurred. Error: " + trade.getFault().getMessage());

View File

@ -418,34 +418,48 @@ public class TradeManager {
log.trace("onIncomingTradeMessage sender " + sender);
String tradeId = tradeMessage.getTradeId();
if (tradeMessage instanceof RequestTakeOfferMessage) {
createOffererAsBuyerProtocol(tradeId, sender);
if (tradeId != null) {
if (tradeMessage instanceof RequestTakeOfferMessage) {
createOffererAsBuyerProtocol(tradeId, sender);
}
else if (tradeMessage instanceof RespondToTakeOfferRequestMessage) {
takerAsSellerProtocolMap.get(tradeId).onRespondToTakeOfferRequestMessage(
(RespondToTakeOfferRequestMessage) tradeMessage);
}
else if (tradeMessage instanceof TakeOfferFeePayedMessage) {
offererAsBuyerProtocolMap.get(tradeId).onTakeOfferFeePayedMessage((TakeOfferFeePayedMessage)
tradeMessage);
}
else if (tradeMessage instanceof RequestTakerDepositPaymentMessage) {
takerAsSellerProtocolMap.get(tradeId).onRequestTakerDepositPaymentMessage(
(RequestTakerDepositPaymentMessage) tradeMessage);
}
else if (tradeMessage instanceof RequestOffererPublishDepositTxMessage) {
offererAsBuyerProtocolMap.get(tradeId).onRequestOffererPublishDepositTxMessage(
(RequestOffererPublishDepositTxMessage) tradeMessage);
}
else if (tradeMessage instanceof DepositTxPublishedMessage) {
persistPendingTrades();
takerAsSellerProtocolMap.get(tradeId).onDepositTxPublishedMessage((DepositTxPublishedMessage)
tradeMessage);
}
else if (tradeMessage instanceof BankTransferInitedMessage) {
// Here happened a null pointer. I assume the only possible reason was that we got a null for the
// tradeID
// as the takerAsSellerProtocolMap need to have that trade got added earlier.
// For getting better info we add a check. tradeId is checked above.
if (takerAsSellerProtocolMap.get(tradeId) == null)
log.error("takerAsSellerProtocolMap.get(tradeId) = null. That must not happen.");
takerAsSellerProtocolMap.get(tradeId).onBankTransferInitedMessage((BankTransferInitedMessage)
tradeMessage);
}
else if (tradeMessage instanceof PayoutTxPublishedMessage) {
offererAsBuyerProtocolMap.get(tradeId).onPayoutTxPublishedMessage((PayoutTxPublishedMessage)
tradeMessage);
}
}
else if (tradeMessage instanceof RespondToTakeOfferRequestMessage) {
takerAsSellerProtocolMap.get(tradeId).onRespondToTakeOfferRequestMessage(
(RespondToTakeOfferRequestMessage) tradeMessage);
}
else if (tradeMessage instanceof TakeOfferFeePayedMessage) {
offererAsBuyerProtocolMap.get(tradeId).onTakeOfferFeePayedMessage((TakeOfferFeePayedMessage) tradeMessage);
}
else if (tradeMessage instanceof RequestTakerDepositPaymentMessage) {
takerAsSellerProtocolMap.get(tradeId).onRequestTakerDepositPaymentMessage(
(RequestTakerDepositPaymentMessage) tradeMessage);
}
else if (tradeMessage instanceof RequestOffererPublishDepositTxMessage) {
offererAsBuyerProtocolMap.get(tradeId).onRequestOffererPublishDepositTxMessage(
(RequestOffererPublishDepositTxMessage) tradeMessage);
}
else if (tradeMessage instanceof DepositTxPublishedMessage) {
persistPendingTrades();
takerAsSellerProtocolMap.get(tradeId).onDepositTxPublishedMessage((DepositTxPublishedMessage) tradeMessage);
}
else if (tradeMessage instanceof BankTransferInitedMessage) {
takerAsSellerProtocolMap.get(tradeId).onBankTransferInitedMessage((BankTransferInitedMessage) tradeMessage);
}
else if (tradeMessage instanceof PayoutTxPublishedMessage) {
offererAsBuyerProtocolMap.get(tradeId).onPayoutTxPublishedMessage((PayoutTxPublishedMessage) tradeMessage);
else {
log.error("tradeId from onIncomingTradeMessage is null. That must not happen.");
}
}

View File

@ -156,6 +156,9 @@ public class BuyerAcceptsOfferProtocol {
tradeId = trade.getId();
offer = trade.getOffer();
checkNotNull(tradeId);
checkNotNull(offer);
//TODO use first for now
arbitratorPubKey = offer.getArbitrators().get(0).getPubKeyAsHex();