diff --git a/core/src/main/java/io/bitsquare/common/taskrunner/Model.java b/core/src/main/java/io/bitsquare/common/taskrunner/Model.java index c7d3e86ed8..5c10f6a735 100644 --- a/core/src/main/java/io/bitsquare/common/taskrunner/Model.java +++ b/core/src/main/java/io/bitsquare/common/taskrunner/Model.java @@ -17,15 +17,8 @@ package io.bitsquare.common.taskrunner; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +public interface Model { + void persist(); -public class Model { - private static final Logger log = LoggerFactory.getLogger(Model.class); - - public void persist() { - } - - public void onComplete() { - } + void onComplete(); } diff --git a/core/src/main/java/io/bitsquare/trade/Trade.java b/core/src/main/java/io/bitsquare/trade/Trade.java index 590b6bb38f..b56f9ea935 100644 --- a/core/src/main/java/io/bitsquare/trade/Trade.java +++ b/core/src/main/java/io/bitsquare/trade/Trade.java @@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory; * Holds all data which are relevant to the trade, but not those which are only needed in the trade process as shared data between tasks. Those data are * stored in the task model. */ -abstract public class Trade extends Model implements Serializable { +abstract public class Trade implements Model, Serializable { // That object is saved to disc. We need to take care of changes to not break deserialization. private static final long serialVersionUID = 1L; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityModel.java b/core/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityModel.java index f1431a4c7f..a48a5017db 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityModel.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityModel.java @@ -27,7 +27,7 @@ import io.bitsquare.trade.protocol.trade.messages.OfferMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CheckOfferAvailabilityModel extends Model { +public class CheckOfferAvailabilityModel implements Model { private static final Logger log = LoggerFactory.getLogger(CheckOfferAvailabilityModel.class); public final Offer offer; @@ -58,4 +58,14 @@ public class CheckOfferAvailabilityModel extends Model { public OfferMessage getMessage() { return message; } + + @Override + public void persist() { + + } + + @Override + public void onComplete() { + + } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferModel.java b/core/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferModel.java index b73cc1b495..41cb1dd6f5 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferModel.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferModel.java @@ -28,7 +28,7 @@ import org.bitcoinj.core.Transaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class PlaceOfferModel extends Model { +public class PlaceOfferModel implements Model { private static final Logger log = LoggerFactory.getLogger(PlaceOfferModel.class); public final Offer offer; @@ -55,4 +55,14 @@ public class PlaceOfferModel extends Model { public Transaction getTransaction() { return transaction; } + + @Override + public void persist() { + + } + + @Override + public void onComplete() { + + } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeTask.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeTask.java index df4e9daf10..95f6603125 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeTask.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeTask.java @@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory; public class TradeTask extends Task { private static final Logger log = LoggerFactory.getLogger(TradeTask.class); + protected final ProcessModel processModel; protected final Trade trade; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/BuyerAsOffererProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/BuyerAsOffererProtocol.java index 4f77c9e543..25f96757da 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/BuyerAsOffererProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/BuyerAsOffererProtocol.java @@ -24,6 +24,7 @@ import io.bitsquare.p2p.MessageHandler; import io.bitsquare.p2p.Peer; import io.bitsquare.p2p.listener.SendMessageListener; import io.bitsquare.trade.BuyerAsOffererTrade; +import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.availability.messages.ReportOfferAvailabilityMessage; import io.bitsquare.trade.protocol.availability.messages.RequestIsOfferAvailableMessage; import io.bitsquare.trade.protocol.trade.TradeProtocol; @@ -56,17 +57,17 @@ public class BuyerAsOffererProtocol implements TradeProtocol { private static final Logger log = LoggerFactory.getLogger(BuyerAsOffererProtocol.class); private MessageHandler messageHandler; - private final BuyerAsOffererTrade buyerAsOffererTrade; + private final BuyerAsOffererTrade trade; private final ProcessModel processModel; /////////////////////////////////////////////////////////////////////////////////////////// // Constructor /////////////////////////////////////////////////////////////////////////////////////////// - public BuyerAsOffererProtocol(BuyerAsOffererTrade model) { + public BuyerAsOffererProtocol(BuyerAsOffererTrade trade) { log.debug("New OffererProtocol " + this); - this.buyerAsOffererTrade = model; - processModel = buyerAsOffererTrade.getProcessModel(); + this.trade = trade; + processModel = this.trade.getProcessModel(); messageHandler = this::handleMessage; processModel.getMessageService().addMessageHandler(messageHandler); @@ -110,7 +111,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol { // to take the // offer // at the same time - boolean isOfferOpen = buyerAsOffererTrade.lifeCycleStateProperty().get() == OffererState.LifeCycleState.OFFER_OPEN; + boolean isOfferOpen = trade.lifeCycleStateProperty().get() == OffererState.LifeCycleState.OFFER_OPEN; ReportOfferAvailabilityMessage reportOfferAvailabilityMessage = new ReportOfferAvailabilityMessage(processModel.getId(), isOfferOpen); processModel.getMessageService().sendMessage(sender, reportOfferAvailabilityMessage, new SendMessageListener() { @Override @@ -135,11 +136,11 @@ public class BuyerAsOffererProtocol implements TradeProtocol { private void handleRequestDepositTxInputsMessage(RequestDepositTxInputsMessage tradeMessage, Peer taker) { checkTradeId(processModel.getId(), tradeMessage); processModel.setTradeMessage(tradeMessage); - buyerAsOffererTrade.setTradingPeer(taker); + trade.setTradingPeer(taker); - buyerAsOffererTrade.setLifeCycleState(OffererState.LifeCycleState.OFFER_RESERVED); + trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_RESERVED); - TaskRunner taskRunner = new TaskRunner<>(buyerAsOffererTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleRequestDepositTxInputsMessage completed"), this::handleTaskRunnerFault); taskRunner.addTasks( @@ -153,7 +154,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol { private void handleRequestPublishDepositTxMessage(RequestPublishDepositTxMessage tradeMessage) { processModel.setTradeMessage(tradeMessage); - TaskRunner taskRunner = new TaskRunner<>(buyerAsOffererTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleRequestPublishDepositTxMessage completed"), this::handleTaskRunnerFault); taskRunner.addTasks( @@ -173,7 +174,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol { // User clicked the "bank transfer started" button public void onFiatPaymentStarted() { - TaskRunner taskRunner = new TaskRunner<>(buyerAsOffererTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleBankTransferStartedUIEvent completed"), this::handleTaskRunnerFault); taskRunner.addTasks( @@ -192,7 +193,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol { private void handlePayoutTxPublishedMessage(PayoutTxPublishedMessage tradeMessage) { processModel.setTradeMessage(tradeMessage); - TaskRunner taskRunner = new TaskRunner<>(buyerAsOffererTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> { log.debug("taskRunner at handlePayoutTxPublishedMessage completed"); // we are done! @@ -216,7 +217,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol { TradeMessage tradeMessage = (TradeMessage) message; nonEmptyStringOf(tradeMessage.tradeId); - if (tradeMessage.tradeId.equals(buyerAsOffererTrade.getId())) { + if (tradeMessage.tradeId.equals(trade.getId())) { if (tradeMessage instanceof RequestIsOfferAvailableMessage) { handleRequestIsOfferAvailableMessage((RequestIsOfferAvailableMessage) tradeMessage, sender); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/BuyerAsTakerProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/BuyerAsTakerProtocol.java index 336ef1b2d2..694a7695c1 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/BuyerAsTakerProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/BuyerAsTakerProtocol.java @@ -23,6 +23,7 @@ import io.bitsquare.p2p.Message; import io.bitsquare.p2p.MessageHandler; import io.bitsquare.p2p.Peer; import io.bitsquare.trade.BuyerAsTakerTrade; +import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeProtocol; import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCommitsPayoutTx; import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCreatesAndSignPayoutTx; @@ -51,7 +52,7 @@ import static io.bitsquare.util.Validator.nonEmptyStringOf; public class BuyerAsTakerProtocol implements TradeProtocol { private static final Logger log = LoggerFactory.getLogger(BuyerAsTakerProtocol.class); - private final BuyerAsTakerTrade buyerAsTakerTrade; + private final BuyerAsTakerTrade trade; private final ProcessModel processModel; private final MessageHandler messageHandler; @@ -62,7 +63,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol { public BuyerAsTakerProtocol(BuyerAsTakerTrade trade) { log.debug("New SellerAsTakerProtocol " + this); - this.buyerAsTakerTrade = trade; + this.trade = trade; processModel = trade.getProcessModel(); messageHandler = this::handleMessage; @@ -94,7 +95,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol { } public void takeAvailableOffer() { - TaskRunner taskRunner = new TaskRunner<>(buyerAsTakerTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at takeAvailableOffer completed"), this::handleTaskRunnerFault); @@ -115,7 +116,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol { private void handle(RequestPublishDepositTxMessage tradeMessage) { processModel.setTradeMessage(tradeMessage); - TaskRunner taskRunner = new TaskRunner<>(buyerAsTakerTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleRequestPublishDepositTxMessage completed"), this::handleTaskRunnerFault); taskRunner.addTasks( @@ -135,7 +136,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol { // User clicked the "bank transfer started" button public void onFiatPaymentStarted() { - TaskRunner taskRunner = new TaskRunner<>(buyerAsTakerTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at onFiatPaymentStarted completed"), this::handleTaskRunnerFault); taskRunner.addTasks( @@ -154,7 +155,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol { private void handle(PayoutTxPublishedMessage tradeMessage) { processModel.setTradeMessage(tradeMessage); - TaskRunner taskRunner = new TaskRunner<>(buyerAsTakerTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> { log.debug("taskRunner at handlePayoutTxPublishedMessage completed"); // we are done! diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/SellerAsOffererProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/SellerAsOffererProtocol.java index f81a49abd5..cac5fee167 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/SellerAsOffererProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/SellerAsOffererProtocol.java @@ -24,6 +24,7 @@ import io.bitsquare.p2p.MessageHandler; import io.bitsquare.p2p.Peer; import io.bitsquare.p2p.listener.SendMessageListener; import io.bitsquare.trade.SellerAsOffererTrade; +import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.availability.messages.ReportOfferAvailabilityMessage; import io.bitsquare.trade.protocol.availability.messages.RequestIsOfferAvailableMessage; import io.bitsquare.trade.protocol.trade.TradeProtocol; @@ -54,17 +55,17 @@ public class SellerAsOffererProtocol implements TradeProtocol { private static final Logger log = LoggerFactory.getLogger(SellerAsOffererProtocol.class); private final MessageHandler messageHandler; - private final SellerAsOffererTrade sellerAsOffererTrade; + private final SellerAsOffererTrade trade; private final ProcessModel processModel; /////////////////////////////////////////////////////////////////////////////////////////// // Constructor /////////////////////////////////////////////////////////////////////////////////////////// - public SellerAsOffererProtocol(SellerAsOffererTrade model) { + public SellerAsOffererProtocol(SellerAsOffererTrade trade) { log.debug("New OffererProtocol " + this); - this.sellerAsOffererTrade = model; - processModel = sellerAsOffererTrade.getProcessModel(); + this.trade = trade; + processModel = this.trade.getProcessModel(); messageHandler = this::handleMessage; processModel.getMessageService().addMessageHandler(messageHandler); @@ -108,7 +109,7 @@ public class SellerAsOffererProtocol implements TradeProtocol { // to take the // offer // at the same time - boolean isOfferOpen = sellerAsOffererTrade.lifeCycleStateProperty().get() == OffererState.LifeCycleState.OFFER_OPEN; + boolean isOfferOpen = trade.lifeCycleStateProperty().get() == OffererState.LifeCycleState.OFFER_OPEN; ReportOfferAvailabilityMessage reportOfferAvailabilityMessage = new ReportOfferAvailabilityMessage(processModel.getId(), isOfferOpen); processModel.getMessageService().sendMessage(sender, reportOfferAvailabilityMessage, new SendMessageListener() { @@ -138,9 +139,9 @@ public class SellerAsOffererProtocol implements TradeProtocol { private void handle(RequestPayDepositMessage tradeMessage, Peer sender) { processModel.setTradeMessage(tradeMessage); - sellerAsOffererTrade.setTradingPeer(sender); + trade.setTradingPeer(sender); - TaskRunner taskRunner = new TaskRunner<>(sellerAsOffererTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleTakerDepositPaymentRequestMessage completed"), this::handleTaskRunnerFault); @@ -157,7 +158,7 @@ public class SellerAsOffererProtocol implements TradeProtocol { private void handle(DepositTxPublishedMessage tradeMessage) { processModel.setTradeMessage(tradeMessage); - TaskRunner taskRunner = new TaskRunner<>(sellerAsOffererTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleDepositTxPublishedMessage completed"), this::handleTaskRunnerFault); @@ -171,7 +172,7 @@ public class SellerAsOffererProtocol implements TradeProtocol { private void handle(FiatTransferStartedMessage tradeMessage) { processModel.setTradeMessage(tradeMessage); - TaskRunner taskRunner = new TaskRunner<>(sellerAsOffererTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleFiatTransferStartedMessage completed"), this::handleTaskRunnerFault); @@ -186,9 +187,9 @@ public class SellerAsOffererProtocol implements TradeProtocol { // User clicked the "bank transfer received" button, so we release the funds for pay out public void onFiatPaymentReceived() { - sellerAsOffererTrade.setProcessState(OffererState.ProcessState.FIAT_PAYMENT_RECEIVED); + trade.setProcessState(OffererState.ProcessState.FIAT_PAYMENT_RECEIVED); - TaskRunner taskRunner = new TaskRunner<>(sellerAsOffererTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> { log.debug("taskRunner at handleFiatReceivedUIEvent completed"); @@ -215,7 +216,7 @@ public class SellerAsOffererProtocol implements TradeProtocol { if (message instanceof TradeMessage) { TradeMessage tradeMessage = (TradeMessage) message; nonEmptyStringOf(tradeMessage.tradeId); - if (tradeMessage.tradeId.equals(sellerAsOffererTrade.getId())) { + if (tradeMessage.tradeId.equals(trade.getId())) { if (tradeMessage instanceof RequestIsOfferAvailableMessage) { handle((RequestIsOfferAvailableMessage) tradeMessage, sender); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/SellerAsTakerProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/SellerAsTakerProtocol.java index 069f8986e2..5dfc44755b 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/SellerAsTakerProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/SellerAsTakerProtocol.java @@ -54,7 +54,7 @@ import static io.bitsquare.util.Validator.nonEmptyStringOf; public class SellerAsTakerProtocol implements TradeProtocol { private static final Logger log = LoggerFactory.getLogger(SellerAsTakerProtocol.class); - private final SellerAsTakerTrade sellerAsTakerTrade; + private final SellerAsTakerTrade trade; private final ProcessModel processModel; private final MessageHandler messageHandler; @@ -65,7 +65,7 @@ public class SellerAsTakerProtocol implements TradeProtocol { public SellerAsTakerProtocol(SellerAsTakerTrade trade) { log.debug("New SellerAsTakerProtocol " + this); - this.sellerAsTakerTrade = trade; + this.trade = trade; processModel = trade.getProcessModel(); messageHandler = this::handleMessage; @@ -97,7 +97,7 @@ public class SellerAsTakerProtocol implements TradeProtocol { } public void takeAvailableOffer() { - TaskRunner taskRunner = new TaskRunner<>(sellerAsTakerTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at takeAvailableOffer completed"), this::handleTaskRunnerFault); @@ -117,7 +117,7 @@ public class SellerAsTakerProtocol implements TradeProtocol { private void handleRequestTakerDepositPaymentMessage(RequestPayDepositMessage tradeMessage) { processModel.setTradeMessage(tradeMessage); - TaskRunner taskRunner = new TaskRunner<>(sellerAsTakerTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleTakerDepositPaymentRequestMessage completed"), this::handleTaskRunnerFault); @@ -134,7 +134,7 @@ public class SellerAsTakerProtocol implements TradeProtocol { private void handleDepositTxPublishedMessage(DepositTxPublishedMessage tradeMessage) { processModel.setTradeMessage(tradeMessage); - TaskRunner taskRunner = new TaskRunner<>(sellerAsTakerTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleDepositTxPublishedMessage completed"), this::handleTaskRunnerFault); @@ -148,7 +148,7 @@ public class SellerAsTakerProtocol implements TradeProtocol { private void handleFiatTransferStartedMessage(FiatTransferStartedMessage tradeMessage) { processModel.setTradeMessage(tradeMessage); - TaskRunner taskRunner = new TaskRunner<>(sellerAsTakerTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> log.debug("taskRunner at handleFiatTransferStartedMessage completed"), this::handleTaskRunnerFault); @@ -163,9 +163,9 @@ public class SellerAsTakerProtocol implements TradeProtocol { // User clicked the "bank transfer received" button, so we release the funds for pay out public void onFiatPaymentReceived() { - sellerAsTakerTrade.setProcessState(TakerState.ProcessState.FIAT_PAYMENT_RECEIVED); + trade.setProcessState(TakerState.ProcessState.FIAT_PAYMENT_RECEIVED); - TaskRunner taskRunner = new TaskRunner<>(sellerAsTakerTrade, + TaskRunner taskRunner = new TaskRunner<>(trade, () -> { log.debug("taskRunner at handleFiatReceivedUIEvent completed"); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/tasks/SellerCreatesAndSignsContract.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/tasks/SellerCreatesAndSignsContract.java index 507e83d73e..27e7198165 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/tasks/SellerCreatesAndSignsContract.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/tasks/SellerCreatesAndSignsContract.java @@ -39,7 +39,7 @@ public class SellerCreatesAndSignsContract extends TradeTask { assert processModel.getTakeOfferFeeTxId() != null; Contract contract = new Contract( processModel.getOffer(), - model.getTradeAmount(), + trade.getTradeAmount(), processModel.getTakeOfferFeeTxId(), processModel.tradingPeer.getAccountId(), processModel.getAccountId(), @@ -50,9 +50,9 @@ public class SellerCreatesAndSignsContract extends TradeTask { String contractAsJson = Utilities.objectToJson(contract); String signature = processModel.getSignatureService().signMessage(processModel.getRegistrationKeyPair(), contractAsJson); - model.setContract(contract); - model.setContractAsJson(contractAsJson); - model.setSellerContractSignature(signature); + trade.setContract(contract); + trade.setContractAsJson(contractAsJson); + trade.setSellerContractSignature(signature); complete(); } catch (Throwable t) { diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/shared/models/ProcessModel.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/shared/models/ProcessModel.java index f6494cabe5..82ff38fa7b 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/shared/models/ProcessModel.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/shared/models/ProcessModel.java @@ -49,7 +49,7 @@ import javax.annotation.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ProcessModel extends Model implements Serializable { +public class ProcessModel implements Model, Serializable { // That object is saved to disc. We need to take care of changes to not break deserialization. private static final long serialVersionUID = 1L; @@ -277,4 +277,14 @@ public class ProcessModel extends Model implements Serializable { public void setTakeOfferFeeTxId(String takeOfferFeeTxId) { this.takeOfferFeeTxId = takeOfferFeeTxId; } + + @Override + public void persist() { + + } + + @Override + public void onComplete() { + + } }