Browse Source

Refactor post-importAsUnconfirmed as method to be overridden by Transaction subclasses, e.g. CHAT

blocksig
catbref 4 years ago
parent
commit
90b993e234
  1. 10
      src/main/java/org/qortal/transaction/ChatTransaction.java
  2. 19
      src/main/java/org/qortal/transaction/Transaction.java

10
src/main/java/org/qortal/transaction/ChatTransaction.java

@ -188,6 +188,16 @@ public class ChatTransaction extends Transaction {
return MemoryPoW.verify2(transactionBytes, POW_BUFFER_SIZE, difficulty, nonce);
}
/**
* Ensure there's at least a skeleton account so people
* can retrieve sender's public key using address, even if all their messages
* expire.
*/
@Override
protected void onImportAsUnconfirmed() throws DataException {
this.getCreator().ensureAccount();
}
@Override
public void process() throws DataException {
throw new DataException("CHAT transactions should never be processed");

19
src/main/java/org/qortal/transaction/Transaction.java

@ -800,13 +800,7 @@ public abstract class Transaction {
repository.getTransactionRepository().save(transactionData);
repository.getTransactionRepository().unconfirmTransaction(transactionData);
/*
* If CHAT transaction then ensure there's at least a skeleton account so people
* can retrieve sender's public key using address, even if all their messages
* expire.
*/
if (transactionData.getType() == TransactionType.CHAT)
this.getCreator().ensureAccount();
this.onImportAsUnconfirmed();
repository.saveChanges();
@ -816,6 +810,17 @@ public abstract class Transaction {
}
}
/**
* Callback for when a transaction is imported as unconfirmed.
* <p>
* Called after transaction is added to repository, but before commit.
* <p>
* Blockchain lock is being held during this time.
*/
protected void onImportAsUnconfirmed() throws DataException {
/* To be optionally overridden */
}
/**
* Returns whether transaction can be added to the blockchain.
* <p>

Loading…
Cancel
Save