Example usage for org.springframework.transaction TransactionStatus setRollbackOnly

List of usage examples for org.springframework.transaction TransactionStatus setRollbackOnly

Introduction

In this page you can find the example usage for org.springframework.transaction TransactionStatus setRollbackOnly.

Prototype

void setRollbackOnly();

Source Link

Document

Set the transaction rollback-only.

Usage

From source file:org.seedstack.spring.internal.SpringTransactionHandler.java

@Override
public void doMarkTransactionAsRollbackOnly(TransactionStatus currentTransaction) {
    currentTransaction.setRollbackOnly();
}

From source file:com.bitsofproof.supernode.core.GetHeadersHandler.java

@Override
public void process(GetHeadersMessage m, BitcoinPeer peer) {
    log.trace("received getheader from " + peer.getAddress());
    List<String> locator = new ArrayList<String>();
    for (byte[] h : m.getLocators()) {
        locator.add(new Hash(h).toString());
    }//from   w w  w. ja v  a  2  s  . c  o m
    List<String> inventory = store.getInventory(locator, new Hash(m.getStop()).toString(), 2000);
    final HeadersMessage hm = (HeadersMessage) peer.createMessage("headers");
    for (final String h : inventory) {
        new TransactionTemplate(transactionManager).execute(new TransactionCallbackWithoutResult() {
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus status) {
                status.setRollbackOnly();

                Blk b;
                try {
                    b = store.getBlock(h);
                    if (b != null) {
                        WireFormat.Writer writer = new WireFormat.Writer();
                        b.toWireHeaderOnly(writer);
                        hm.getBlockHeader().add(writer.toByteArray());
                    }
                } catch (ValidationException e) {
                }
            }
        });
    }
    if (hm.getBlockHeader().size() > 0) {
        peer.send(hm);
        log.debug("sent  " + hm.getBlockHeader().size() + " block headers to " + peer.getAddress());
    }
}

From source file:bigbank.transaction.MultiTransactionStatus.java

@Override
public void setRollbackOnly() {
    for (TransactionStatus ts : transactionStatuses.values()) {
        ts.setRollbackOnly();
    }
}

From source file:com.bitsofproof.supernode.core.GetDataHandler.java

@Override
public void process(final GetDataMessage m, final BitcoinPeer peer) {
    log.trace("received getdata for " + m.getBlocks().size() + " blocks " + m.getTransactions().size()
            + " transactions from " + peer.getAddress());
    boolean found = false;
    for (byte[] h : m.getTransactions()) {
        Tx t = txHandler.getTransaction(new Hash(h).toString());
        if (t != null) {
            found = true;//from  w  ww.  j av  a 2 s . c o  m
            TxMessage tm = (TxMessage) peer.createMessage("tx");
            tm.setTx(t);
            peer.send(tm);
            log.trace("sent transaction " + t.getHash() + " to " + peer.getAddress());
        }
    }
    if (!found) {
        peer.send(peer.createMessage("notfound"));
    }

    if (m.getBlocks().size() > 0) {
        new TransactionTemplate(transactionManager).execute(new TransactionCallbackWithoutResult() {
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus status) {
                status.setRollbackOnly();

                for (final byte[] h : m.getBlocks()) {
                    Blk b;
                    try {
                        b = store.getBlock(new Hash(h).toString());
                        if (b != null) {
                            final BlockMessage bm = (BlockMessage) peer.createMessage("block");

                            bm.setBlock(b);
                            peer.send(bm);
                            log.trace("sent block " + b.getHash() + " to " + peer.getAddress());
                        }
                    } catch (ValidationException e) {
                    }

                }
                if (m.getBlocks().size() > 1) {
                    log.debug("sent " + m.getBlocks().size() + " blocks to " + peer.getAddress());
                } else {
                    peer.send(peer.createMessage("notfound"));
                }
                InvMessage inv = (InvMessage) peer.createMessage("inv");
                inv.getBlockHashes().add(new Hash(store.getHeadHash()).toByteArray());
                peer.send(inv);
            }
        });
    }
    if (m.getFilteredBlocks().size() > 0 && peer.getFilter() != null) {
        new TransactionTemplate(transactionManager).execute(new TransactionCallbackWithoutResult() {
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus status) {
                status.setRollbackOnly();
                for (final byte[] h : m.getBlocks()) {
                    Blk b;
                    try {
                        b = store.getBlock(new Hash(h).toString());
                        if (b != null) {
                            final MerkleBlockMessage bm = (MerkleBlockMessage) peer
                                    .createMessage("merkleblock");
                            bm.setBlock(b);
                            bm.filter(peer.getFilter());
                            peer.send(bm);
                            log.trace("sent block " + b.getHash() + " to " + peer.getAddress());
                        }
                    } catch (ValidationException e) {
                    }
                }
                if (m.getBlocks().size() > 1) {
                    log.debug("sent " + m.getBlocks().size() + " merkleblocks to " + peer.getAddress());
                } else {
                    peer.send(peer.createMessage("notfound"));
                }
                InvMessage inv = (InvMessage) peer.createMessage("inv");
                inv.getBlockHashes().add(new Hash(store.getHeadHash()).toByteArray());
                peer.send(inv);
            }
        });
    }
}

From source file:com.becool.base.spring.tx.MultiTransactionStatus.java

public void setRollbackOnly() {
    for (TransactionStatus ts : transactionStatuses.values()) {
        ts.setRollbackOnly();
    }
}

From source file:com.bitsofproof.supernode.core.TxHandler.java

public void validateCacheAndSend(final Tx t, final BitcoinPeer peer) throws ValidationException {
    ValidationException exception = network.getStore().runInCacheContext(new BlockStore.CacheContextRunnable() {
        @Override//from w  w w.  jav  a  2 s . c  o  m
        public void run(TxOutCache cache) throws ValidationException {
            synchronized (unconfirmed) {
                if (!unconfirmed.containsKey(t.getHash())) {
                    ValidationException exception = new TransactionTemplate(transactionManager)
                            .execute(new TransactionCallback<ValidationException>() {
                                @Override
                                public ValidationException doInTransaction(TransactionStatus status) {
                                    status.setRollbackOnly();

                                    try {
                                        network.getStore().validateTransaction(t, availableOutput);
                                        sendTransaction(t, peer);
                                        cacheTransaction(t);
                                        notifyListener(t);
                                        if (peer == null) {
                                            synchronized (own) {
                                                own.add(t.getHash());
                                            }
                                        }
                                        return null;
                                    } catch (ValidationException e) {
                                        return e;
                                    }
                                }
                            });
                    if (exception != null) {
                        throw exception;
                    }
                }
            }
        }
    });
    if (exception != null) {
        log.debug("REJECTING transaction " + t.getHash());
        throw exception;
    }
}

From source file:ar.com.zauber.commons.spring.web.handlers.TransactionAwareHandlerAdapter.java

/** @see HandlerAdapter#handle(
 *       HttpServletRequest, HttpServletResponse, Object) */
public final ModelAndView handle(final HttpServletRequest request, final HttpServletResponse response,
        final Object handler) throws Exception {

    final TransactionTemplate transactionTemplate = transactionStrategy.getTransactionTemplate(handler,
            request);//from ww w  . j a va2 s .c om

    return transactionTemplate.execute(new TransactionCallback<ModelAndView>() {
        public ModelAndView doInTransaction(final TransactionStatus transactionStatus) {
            // CHECKSTYLE:ALL:OFF
            try {
                return target.handle(request, response, handler);
            } catch (final RuntimeException e) {
                //rollback & re-throw original exception
                transactionStatus.setRollbackOnly();
                throw e;
            } catch (final Exception e) {
                //rollback & wrap original exception
                transactionStatus.setRollbackOnly();
                throw new RuntimeException("Transaction can not be executed", e);
            }
            // CHECKSTYLE:ALL:ON
        }
    });
}

From source file:org.okj.commons.service.action.SimpleActionsExecutor.java

/**
 * action/*from  w  ww .j a v  a2 s .  c  om*/
 * 
 * @param context
 */
protected void doExecuteWithTransaction(final Actions actions, final ActionContext context) {
    transactionTemplate.execute(new TransactionCallback() {
        /** 
         * @see org.springframework.transaction.support.TransactionCallback#doInTransaction(org.springframework.transaction.TransactionStatus)
         */
        @Override
        public Object doInTransaction(TransactionStatus status) {
            try {
                doExecuteWithoutTransaction(actions, context);
            } catch (ActionException ex) {
                context.occurError(ex); //
                status.setRollbackOnly(); //
            } catch (Exception ex) {
                LogUtils.error(LOGGER, "action", ex);
                context.occurError(new ActionException(ActionErrorCode.SYSTEM_ERROR_CODE)); //
                status.setRollbackOnly(); //
            }
            return null;
        }
    });

    //
    rethrowExcetpion(context);
}

From source file:mojo.core.test.RepositoryTest.java

public void testCRUD() {
    TransactionTemplate template = new TransactionTemplate(transactionManager);
    template.execute(new TransactionCallback<Object>() {

        public Object doInTransaction(TransactionStatus status) {
            status.setRollbackOnly();
            String tmp = null;/*w ww .j  a  va2 s.c o m*/

            // simple typed repository
            // entity class has been set on the repository instance

            log("Creating Person A");
            Person personA = new Person(tmp = "Person A");
            Insert<Person> insertPerson = new Insert<Person>(personA);
            personA = personRepository.insert(insertPerson);
            assertValidPerson(personA, tmp);

            log("Retrieving Person A #" + personA.getId());
            Select<Person> selectPerson = new Select<Person>(new ByKey(personA.getId()));
            personA = personRepository.select(selectPerson).unique();
            assertValidPerson(personA, tmp);

            log("Modifying Person A #" + personA.getId());
            personA.setName(tmp = "Mickey Mouse");
            Update<Person> updatePerson = new Update<Person>(personA);
            personA = personRepository.update(updatePerson);
            assertValidPerson(personA, tmp);

            log("Retrieving Person A #" + personA.getId());
            personA = personRepository.select(selectPerson).unique();
            assertValidPerson(personA, tmp);

            // simple untyped repository
            // entity class is being set on each of the statement instances

            log("Creating Person B");
            Person personB = new Person(tmp = "Person B");
            Insert<Object> insertObject = new Insert<Object>(Person.class, personB);
            personB = (Person) repository.insert(insertObject);
            assertValidPerson(personB, tmp);

            log("Retrieving Person B #" + personB.getId());
            Select<Object> selectObject = new Select<Object>(Person.class, new ByKey(personB.getId()));
            personB = (Person) repository.select(selectObject).unique();
            assertValidPerson(personB, tmp);

            log("Modifying Person B #" + personB.getId());
            personB.setName(tmp = "Jon Arbuckle");
            Update<Object> updateObject = new Update<Object>(Person.class, personB);
            personB = (Person) repository.update(updateObject);
            assertValidPerson(personB, tmp);

            log("Retrieving Person B #" + personB.getId());
            personB = (Person) repository.select(selectObject).unique();
            assertValidPerson(personB, tmp);

            // many-to-one repository

            log("Creating Pet A");
            Pet petA = new Pet(tmp = "Pet");
            petA = petRepository.insert(new InsertDetail<Pet>(personB.getId(), petA));
            assertValidPet(petA, tmp, personB);

            log("Modifying Pet A");
            petA.setName(tmp = "Pluto");
            petA = petRepository.update(new UpdateDetail<Pet>(personA.getId(), petA));
            assertValidPet(petA, tmp, personA);

            log("Creating Pet B");
            Pet petB = new Pet(tmp = "Garfield");
            petB = petRepository.insert(new InsertDetail<Pet>(personB.getId(), petB));
            assertValidPet(petB, tmp, personB);

            log("Creating Pet C");
            Pet petC = new Pet(tmp = "Odie");
            petC = petRepository.insert(new InsertDetail<Pet>(personB.getId(), petC));
            assertValidPet(petC, tmp, personB);

            // one-to-many repository

            log("Creating Phone 1");
            Phone phoneA = new Phone(tmp = "9876543210");
            phoneA = phoneRepository.insert(new InsertDetail<Phone>(personB.getId(), phoneA));
            assertValidPhone(phoneA, tmp);

            log("Modifying Phone 1");
            phoneA.setNumber(tmp = "0123456789");
            phoneA = phoneRepository.update(new UpdateDetail<Phone>(personA.getId(), phoneA));
            assertValidPhone(phoneA, tmp);

            log("Creating Phone 2");
            Phone phoneB = new Phone(tmp = "0011223344");
            phoneB = phoneRepository.insert(new InsertDetail<Phone>(personB.getId(), phoneB));
            assertValidPhone(phoneB, tmp);

            log("Creating Phone 3");
            Phone phoneC = new Phone(tmp = "5566778899");
            phoneC = phoneRepository.insert(new InsertDetail<Phone>(personB.getId(), phoneC));
            assertValidPhone(phoneC, tmp);

            // plain selects

            log("Retrieving all persons");
            DataPage<?> page = repository.select(new Select<Object>(Person.class));
            assertValidDataPage(page, 2);

            log("Retrieving persons by property");
            page = repository.select(new Select<Object>(Person.class, new ByText("buck", "name")));
            assertValidDataPage(page, 1);

            // many-to-one selects

            log("Retrieving all pets");
            page = petRepository.select(new SelectDetail<Pet>());
            assertValidDataPage(page, 3);

            log("Retrieving pets by property");
            page = petRepository.select(new SelectDetail<Pet>(null, new ByText("lut", "name")));
            assertValidDataPage(page, 1);

            log("Retrieving PersonA's pets by property");
            page = petRepository.select(new SelectDetail<Pet>(personA.getId(), new ByText("arfiel", "name")));
            assertValidDataPage(page, 0);

            log("Retrieving PersonB's pets by property");
            page = petRepository.select(new SelectDetail<Pet>(personB.getId(), new ByText("arfiel", "name")));
            assertValidDataPage(page, 1);

            log("Retrieving PersonB's pets with pagging");
            page = petRepository.select(new SelectDetail<Pet>(personB.getId()).page(0, 1));
            assertValidDataPage(page, 1, 2);

            // one-to-many selects

            log("Retrieving all phones");
            page = phoneRepository.select(new SelectDetail<Phone>());
            assertValidDataPage(page, 3);

            log("Retrieving phones by property");
            page = phoneRepository.select(new SelectDetail<Phone>(null, new ByText("1234", "number")));
            assertValidDataPage(page, 1);

            log("Retrieving PersonA's phones by property");
            page = phoneRepository
                    .select(new SelectDetail<Phone>(personA.getId(), new ByText("1122", "number")));
            assertValidDataPage(page, 0);

            log("Retrieving PersonB's phones by property");
            page = phoneRepository
                    .select(new SelectDetail<Phone>(personB.getId(), new ByText("1122", "number")));
            assertValidDataPage(page, 1);

            log("Retrieving PersonB's phones with paging");
            page = phoneRepository.select(new SelectDetail<Phone>(personB.getId()).page(0, 1));
            assertValidDataPage(page, 1, 2);

            return null;
        }
    });
}

From source file:org.iti.agrimarket.model.dao.UserPlantsPlantDAO.java

@Override
public boolean create(UserPlantsPlant userPlantsPlant) {
    return (boolean) transactionTemplate.execute((TransactionStatus ts) -> {
        try {/*from ww w.j  a  v a2 s  .  c o m*/
            Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
            if (session.save(userPlantsPlant) == null) {
                return false;
            }

        } catch (Exception e) {
            e.printStackTrace();
            ts.setRollbackOnly();
            return false;
        }
        return true;
    });
}