List of usage examples for org.springframework.transaction.support TransactionCallbackWithoutResult TransactionCallbackWithoutResult
TransactionCallbackWithoutResult
From source file:nl.clockwork.mule.ebms.dao.postgresql.EbMSDAOImpl.java
@Override public void insertMessage(final EbMSMessageError messageError, final EbMSMessageStatus status) throws DAOException { try {/*w ww . j a v a 2 s. c o m*/ transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override public void doInTransactionWithoutResult(TransactionStatus transactionStatus) { try { Date timestamp = new Date(); jdbcTemplate.update(new EbMSMessagePreparedStatement(timestamp, messageError.getMessageHeader().getCPAId(), messageError.getMessageHeader().getConversationId(), messageError.getMessageHeader().getMessageData().getMessageId(), messageError.getMessageHeader().getMessageData().getRefToMessageId(), messageError.getMessageHeader().getFrom().getRole(), messageError.getMessageHeader().getTo().getRole(), messageError.getMessageHeader().getService().getType(), messageError.getMessageHeader().getService().getValue(), messageError.getMessageHeader().getAction(), XMLMessageBuilder.getInstance(MessageHeader.class) .handle(messageError.getMessageHeader()), XMLMessageBuilder.getInstance(ErrorList.class).handle(messageError.getErrorList()), status)); Long id = getEbMSMessageId( messageError.getMessageHeader().getMessageData().getRefToMessageId()); if (id != null) simpleJdbcTemplate.update( "delete from ebms_send_event" + " where ebms_message_id=? and status=0", id); } catch (Exception e) { throw new RuntimeException(e); } } }); } catch (Exception e) { throw new DAOException(e); } }
From source file:org.jspresso.hrsample.backend.JspressoModelTest.java
/** * Test translated name./*from w w w . j a v a 2 s . c o m*/ */ @Test public void testPropertyTranslation() { final HibernateBackendController hbc = (HibernateBackendController) getBackendController(); Serializable cityId = hbc.getTransactionTemplate().execute(new TransactionCallback<Serializable>() { @Override public Serializable doInTransaction(TransactionStatus status) { City c = hbc.getEntityFactory().createEntityInstance(City.class); c.setNameRaw("raw"); c.setName("test"); hbc.registerForUpdate(c); return c.getId(); } }); final City c = hbc.findById(cityId, EMergeMode.MERGE_KEEP, City.class); assertEquals("A message translation should have been created", 1, c.getPropertyTranslations().size()); hbc.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { City cClone = hbc.cloneInUnitOfWork(c); cClone.setName("modified"); } }); hbc.reload(c); assertEquals("The message translation should have been updated", "modified", c.getName()); }
From source file:com._4dconcept.springframework.data.marklogic.datasource.DatabaseConnectorJtaTransactionTest.java
@Test public void testJtaTransactionWithConnectionHolderStillBound() throws Exception { @SuppressWarnings("serial") JtaTransactionManager ptm = new JtaTransactionManager(userTransaction) { @Override/*from w w w. j av a2 s .co m*/ protected void doRegisterAfterCompletionWithJtaTransaction(JtaTransactionObject txObject, final List<TransactionSynchronization> synchronizations) throws RollbackException, SystemException { Thread async = new Thread() { @Override public void run() { invokeAfterCompletion(synchronizations, TransactionSynchronization.STATUS_COMMITTED); } }; async.start(); try { async.join(); } catch (InterruptedException ex) { ex.printStackTrace(); } } }; TransactionTemplate tt = new TransactionTemplate(ptm); assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(contentSource)); assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); given(userTransaction.getStatus()).willReturn(Status.STATUS_ACTIVE); for (int i = 0; i < 3; i++) { final boolean releaseCon = (i != 1); tt.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) throws RuntimeException { assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive()); assertTrue("Is existing transaction", !status.isNewTransaction()); Session c = ContentSourceUtils.getSession(contentSource); assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(contentSource)); ContentSourceUtils.releaseSession(c, contentSource); c = ContentSourceUtils.getSession(contentSource); assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(contentSource)); if (releaseCon) { ContentSourceUtils.releaseSession(c, contentSource); } } }); if (!releaseCon) { assertTrue("Still has session holder", TransactionSynchronizationManager.hasResource(contentSource)); } else { assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(contentSource)); } assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); } verify(session, times(3)).close(); }
From source file:org.jspresso.hrsample.backend.JspressoUnitOfWorkTest.java
/** * Test update / delete in TX. See bug #1009. *///w ww . j a va 2 s.c o m @Test public void testUpdateDeleteInTx() { final HibernateBackendController hbc = (HibernateBackendController) getBackendController(); final City c1 = hbc.getEntityFactory().createEntityInstance(City.class); c1.setName("ToUpdate"); c1.setZip("12345"); hbc.registerForUpdate(c1); hbc.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { hbc.performPendingOperations(); } }); hbc.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { City c1Clone = hbc.cloneInUnitOfWork(c1); c1Clone.setName("ToDelete"); hbc.registerForUpdate(c1Clone); hbc.registerForDeletion(c1Clone); } }); City c2 = hbc.findById(c1.getId(), EMergeMode.MERGE_KEEP, City.class); assertNull("City has not been deleted correctly.", c2); }
From source file:nl.clockwork.mule.ebms.dao.postgresql.EbMSDAOImpl.java
@Override public void insertMessage(final EbMSAcknowledgment acknowledgment, final EbMSMessageStatus status) throws DAOException { try {/*w w w.j av a 2 s. c o m*/ transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override public void doInTransactionWithoutResult(TransactionStatus transactionStatus) { try { Date timestamp = new Date(); jdbcTemplate.update(new EbMSMessagePreparedStatement(timestamp, acknowledgment.getMessageHeader().getCPAId(), acknowledgment.getMessageHeader().getConversationId(), acknowledgment.getMessageHeader().getMessageData().getMessageId(), acknowledgment.getMessageHeader().getMessageData().getRefToMessageId(), acknowledgment.getMessageHeader().getFrom().getRole(), acknowledgment.getMessageHeader().getTo().getRole(), acknowledgment.getMessageHeader().getService().getType(), acknowledgment.getMessageHeader().getService().getValue(), acknowledgment.getMessageHeader().getAction(), XMLMessageBuilder.getInstance(MessageHeader.class) .handle(acknowledgment.getMessageHeader()), XMLMessageBuilder.getInstance(Acknowledgment.class) .handle(acknowledgment.getAcknowledgment()), status)); Long id = getEbMSMessageId( acknowledgment.getMessageHeader().getMessageData().getRefToMessageId()); if (id != null) simpleJdbcTemplate.update( "delete from ebms_send_event" + " where ebms_message_id=? and status=0", id); } catch (Exception e) { throw new RuntimeException(e); } } }); } catch (Exception e) { throw new DAOException(e); } }
From source file:com._4dconcept.springframework.data.marklogic.datasource.DatabaseConnectorJtaTransactionTest.java
@Test public void testJtaTransactionWithIsolationLevelContentSourceAdapter() throws Exception { given(userTransaction.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE, Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE); final IsolationLevelContentSourceAdapter dsToUse = new IsolationLevelContentSourceAdapter(); dsToUse.setTargetContentSource(contentSource); dsToUse.afterPropertiesSet();/*from w w w. j ava 2 s .co m*/ JtaTransactionManager ptm = new JtaTransactionManager(userTransaction); ptm.setAllowCustomIsolationLevels(true); TransactionTemplate tt = new TransactionTemplate(ptm); tt.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) throws RuntimeException { Session c = ContentSourceUtils.getSession(dsToUse); assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(dsToUse)); assertSame(session, c); ContentSourceUtils.releaseSession(c, dsToUse); } }); tt.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ); tt.setReadOnly(true); tt.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) throws RuntimeException { Session c = ContentSourceUtils.getSession(dsToUse); assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(dsToUse)); assertSame(session, c); ContentSourceUtils.releaseSession(c, dsToUse); } }); verify(userTransaction, times(2)).begin(); verify(userTransaction, times(2)).commit(); verify(session).setTransactionMode(Session.TransactionMode.QUERY); verify(session, times(2)).close(); }
From source file:org.jspresso.hrsample.backend.JspressoModelTest.java
/** * Test one to one dB access./*from w w w .j a v a2 s . c o m*/ */ @Test public void testOneToOneDBAccess() { final HibernateBackendController hbc = (HibernateBackendController) getBackendController(); hbc.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { EnhancedDetachedCriteria critDept = EnhancedDetachedCriteria.forClass(Department.class); critDept.add(Restrictions.like(Department.OU_ID, "HR", MatchMode.START)); Department dept = hbc.findFirstByCriteria(critDept, EMergeMode.MERGE_KEEP, Department.class); assertTrue("OneToOne has not been initialized when querying", Hibernate.isInitialized(dept.straightGetProperty(Department.MANAGER))); } }); hbc.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { EnhancedDetachedCriteria critEmp = EnhancedDetachedCriteria.forClass(Employee.class); critEmp.add(Restrictions.like(Employee.FIRST_NAME, "Gloria", MatchMode.START)); Employee emp = hbc.findFirstByCriteria(critEmp, EMergeMode.MERGE_KEEP, Employee.class); assertFalse("ManyToOne has not been initialized when querying", Hibernate.isInitialized(emp.straightGetProperty(Employee.MANAGED_OU))); } }); }
From source file:nl.clockwork.mule.ebms.dao.AbstractEbMSDAO.java
@Override public void insertMessage(final EbMSMessage message, final EbMSMessageStatus status, final EbMSMessageError messageError, final EbMSSendEvent sendEvent) throws DAOException { try {//from w w w . j a v a 2 s .c o m transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override public void doInTransactionWithoutResult(TransactionStatus transactionStatus) { try { Date timestamp = new Date(); KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(getEbMSMessagePreparedStatement(timestamp, message.getMessageHeader().getCPAId(), message.getMessageHeader().getConversationId(), message.getMessageOrder() == null ? null : message.getMessageOrder().getSequenceNumber().getValue().longValue(), message.getMessageHeader().getMessageData().getMessageId(), message.getMessageHeader().getMessageData().getRefToMessageId(), message.getMessageHeader().getFrom().getRole(), message.getMessageHeader().getTo().getRole(), message.getMessageHeader().getService().getType(), message.getMessageHeader().getService().getValue(), message.getMessageHeader().getAction(), message.getOriginal(), XMLMessageBuilder.getInstance(SignatureType.class) .handle(new ObjectFactory().createSignature(message.getSignature())), XMLMessageBuilder.getInstance(MessageHeader.class) .handle(message.getMessageHeader()), XMLMessageBuilder.getInstance(SyncReply.class).handle(message.getSyncReply()), XMLMessageBuilder.getInstance(MessageOrder.class).handle(message.getMessageOrder()), XMLMessageBuilder.getInstance(AckRequested.class).handle(message.getAckRequested()), XMLMessageBuilder.getInstance(Manifest.class).handle(message.getManifest()), status), keyHolder); for (DataSource attachment : message.getAttachments()) { simpleJdbcTemplate.update("insert into ebms_attachment (" + "ebms_message_id," + "name," + "content_type," + "content" + ") values (?,?,?,?)", keyHolder.getKey().longValue(), attachment.getName() == null ? Constants.DEFAULT_FILENAME : attachment.getName(), attachment.getContentType().split(";")[0].trim(), IOUtils.toByteArray(attachment.getInputStream())); } jdbcTemplate.update(getEbMSMessagePreparedStatement(timestamp, messageError.getMessageHeader().getCPAId(), messageError.getMessageHeader().getConversationId(), messageError.getMessageHeader().getMessageData().getMessageId(), messageError.getMessageHeader().getMessageData().getRefToMessageId(), messageError.getMessageHeader().getFrom().getRole(), messageError.getMessageHeader().getTo().getRole(), messageError.getMessageHeader().getService().getType(), messageError.getMessageHeader().getService().getValue(), messageError.getMessageHeader().getAction(), XMLMessageBuilder.getInstance(MessageHeader.class) .handle(messageError.getMessageHeader()), XMLMessageBuilder.getInstance(ErrorList.class).handle(messageError.getErrorList())), keyHolder); simpleJdbcTemplate.update( "insert into ebms_send_event (" + "ebms_message_id," + "time" + ") values (?,?)", keyHolder.getKey().longValue(), //String.format(getDateFormat(),sendEvent.getTime()) sendEvent.getTime()); } catch (Exception e) { throw new RuntimeException(e); } } }); } catch (RuntimeException e) { throw new DAOException(e); } }
From source file:org.jspresso.hrsample.backend.JspressoUnitOfWorkTest.java
/** * Test clone in UOW of just initialized collection properties (recorded * original value might be UNKNOWN).//from w ww .ja v a 2 s .c o m */ @Test public void testJustInitializedCollectionPropertyClone() { final HibernateBackendController hbc = (HibernateBackendController) getBackendController(); final EnhancedDetachedCriteria departmentCriteria = EnhancedDetachedCriteria.forClass(Department.class); final List<Department> departments = hbc.findByCriteria(departmentCriteria, EMergeMode.MERGE_KEEP, Department.class); final Department department = departments.get(0); assertFalse("Department teams property from is initialized", Hibernate.isInitialized(department.straightGetProperty(Department.TEAMS))); hbc.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { Department departmentInTx = hbc.findById(department.getId(), EMergeMode.MERGE_KEEP, Department.class); assertFalse("TX department teams property is initialized", Hibernate.isInitialized(departmentInTx.straightGetProperty(Department.TEAMS))); departmentInTx.getTeams(); Map<String, Object> inTxDirtyProperties = hbc.getDirtyProperties(departmentInTx); assertFalse("teams property is dirty whereas is shouldn't", inTxDirtyProperties.containsKey(Department.TEAMS)); } }); department.getTeams(); hbc.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { Department departmentInTx = hbc.cloneInUnitOfWork(department); departmentInTx.getTeams(); Map<String, Object> inTxDirtyProperties = hbc.getDirtyProperties(departmentInTx); assertFalse("teams property is dirty whereas is shouldn't", inTxDirtyProperties.containsKey(Department.TEAMS)); } }); Map<String, Object> dirtyProperties = hbc.getDirtyProperties(department); assertFalse("teams property is dirty whereas is shouldn't", dirtyProperties.containsKey(Department.TEAMS)); final Department anotherDepartment = departments.get(1); assertFalse("Other department teams property is initialized", Hibernate.isInitialized(anotherDepartment.straightGetProperty(Department.TEAMS))); final Department anotherDepartmentClone = hbc.getTransactionTemplate() .execute(new TransactionCallback<Department>() { @Override public Department doInTransaction(TransactionStatus status) { Department anotherDeptClone = hbc.cloneInUnitOfWork(anotherDepartment); assertFalse("Other department clone teams property is initialized", Hibernate.isInitialized(anotherDeptClone.straightGetProperty(Department.TEAMS))); anotherDeptClone.getTeams(); return anotherDeptClone; } }); hbc.merge(anotherDepartmentClone, EMergeMode.MERGE_EAGER); Map<String, Object> anotherDirtyProperties = hbc.getDirtyProperties(anotherDepartment); assertFalse("Other department teams property is dirty whereas is shouldn't", anotherDirtyProperties.containsKey(Department.TEAMS)); hbc.getTransactionTemplate().execute(new TransactionCallback<Department>() { @Override public Department doInTransaction(TransactionStatus status) { Department yetAnotherDeptClone = hbc.cloneInUnitOfWork(anotherDepartmentClone); return yetAnotherDeptClone; } }); }
From source file:database.DataLoader.java
private void addAuthorRights() throws Exception { final String modelName = USERS; final ResultSet userRes = getFromOldBase("select * from z_zauthor"); while (userRes.next()) { final TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override//from w w w .ja v a2s . c o m protected void doInTransactionWithoutResult(TransactionStatus ts) { try { Long userId = userRes.getLong("id"); Long branchId = userRes.getLong("branch_id"); Long newUserId = getNewId(userId, modelName); User user = getUser(newUserId); if (branchId != 0) { Long newBranchId = getNewId(branchId, BRANCH); Branch branch = branchDao.find(newBranchId); List<Long> branchIds = new ArrayList(); if (user instanceof Author) { branchIds.add(newBranchId); authorService.changeRoleForAuthor(newUserId, branchIds); } } else { List<Branch> branchList = branchDao.getAll(); List<Long> branchIds = new ArrayList(); for (Branch branch : branchList) { branchIds.add(branch.getBranchId()); } if (user instanceof Author) { authorService.changeRoleForAuthor(newUserId, branchIds); } } } catch (Exception e) { ts.setRollbackOnly(); addErrorMessage(StringAdapter.getStackExeption(e)); } } }); } }