I like it, seems less error prone and I don't see any bad consequences using
it.

Bilgin

On Mon, Apr 25, 2011 at 5:13 PM, Adrian Crum <
[email protected]> wrote:

> Setting up transactions properly can be complicated. I've seen cases where
> it was done wrong. Even when it's done right, it adds a lot of client code
> that gets repeated every time a transaction is used. I have an idea to make
> transaction handling easier and more reliable:
>
> 1. Create an interface:
>
> public interface TransactionTask {
>  void run() throws GenericEntityException;
> }
>
> 2. Add a method to TransactionUtil.java:
>
> public static void runTransactionTask(TransactionTask task, boolean
> suspendCurrent) throws GenericEntityException, GenericTransactionException {
> ...
> }
>
> The TransactionUtil.runTransactionTask method will contain all of the
> correct begin, suspend, commit, resume, rollback, try, catch, finally logic.
> All the client code needs to do is put the transaction-protected code in a
> TransactionTask instance run() method and call the
> TransactionUtil.runTransactionTask method. Bottom line - less code, better
> results.
>
> Example:
>
> TransactionTask task = new TransactionTask() {
>    public void run() throws GenericEntityException {
>        GenericValue target = delegator...;
>        target.set("someField", "someValue");
>        target.store();
>    }
> };
> TransactionUtil.runTransactionTask(task, true);
>
>
> What do you think?
>
> -Adrian
>
>

Reply via email to