Example usage for org.springframework.transaction.support TransactionCallbackWithoutResult TransactionCallbackWithoutResult

List of usage examples for org.springframework.transaction.support TransactionCallbackWithoutResult TransactionCallbackWithoutResult

Introduction

In this page you can find the example usage for org.springframework.transaction.support TransactionCallbackWithoutResult TransactionCallbackWithoutResult.

Prototype

TransactionCallbackWithoutResult

Source Link

Usage

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));
                }
            }
        });
    }
}