[
https://issues.jboss.org/browse/JBTM-2458?page=com.atlassian.jira.plugin....
]
Gytis Trikleris commented on JBTM-2458:
---------------------------------------
My first example:
{code}
public class BankingService {
@Inject
private AccountManager accountManager;
@Compensatable
public void transferMoney(String fromAccount, String toAccount, Double amount) {
accountManager.debitAccount(fromAccount, amount);
accountManager.creditAccount(toAccount, amount);
}
}
@Compensatable
public class AccountManager {
private static final String DATABASE_NAME = "accounts-database";
private static final String COLLECTION_NAME = "accounts-collection";
@Inject(db = DATABASE_NAME, collection = COLLECTION_NAME)
private MongoCollection collection;
public void creditAccount(String account, Double amount) {
Document filter = new Document("name", account);
Document update = new Document("$inc", amount);
Document undo = new Document("$inc", -1 * amount);
updateCollection(filter, update, undo);
}
public void debitAccount(String account, Double amount) {
Document filter = new Document("name", account);
Document update = new Document("$inc", -1 * amount);
Document undo = new Document("$inc", amount);
updateCollection(filter, update, undo);
}
private void updateCollection(Document filter, Document update, Document undo) {
CompensationHandler compensationHandler = () -> collection.updateOne(filter,
undo);
ConfirmationHandler confirmationHandler = () -> System.out.println(filter +
" was updated");
// v1
collection.onFailure(compensationHandler).onSuccess(confirmationHandler).updateOne(filter,
update);
// v2
// collection.updateOne(filter, update, compensationHandler,
confirmationHandler);
}
}
{code}
Think of the possibility to improve Compensations API with lambdas
------------------------------------------------------------------
Key: JBTM-2458
URL:
https://issues.jboss.org/browse/JBTM-2458
Project: JBoss Transaction Manager
Issue Type: Task
Components: TXFramework
Reporter: Gytis Trikleris
Assignee: Gytis Trikleris
Fix For: 5.next
Emmanuel suggested to reduce verbosity in Compensations API by making it possible to use
lambdas for handler implementation.
We should try to think of the best API changes to introduce that.
We could rewrite MongoDB quickstart to make it easier to visualise the difference.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)