List of usage examples for org.springframework.transaction TransactionStatus setRollbackOnly
void setRollbackOnly();
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; }); }