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

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

Introduction

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

Prototype

TransactionCallback

Source Link

Usage

From source file:com.vladmihalcea.HibernateCascadeLockComponentTest.java

protected Long cleanAndSaveParent() {
    return transactionTemplate.execute(new TransactionCallback<Long>() {
        @Override/*from w ww. j  av a 2s.  c  om*/
        public Long doInTransaction(TransactionStatus transactionStatus) {
            entityManager.createQuery("delete from Post where id > 0").executeUpdate();
            assertTrue(entityManager.createQuery("from Post").getResultList().isEmpty());
            Post post = new Post();
            entityManager.persist(post);
            entityManager.flush();
            return post.getId();
        }
    });
}

From source file:org.fireflow.BaseEnviroment4Junit.java

/**
 * ?/*w  w w. j a  v  a 2  s.  c o  m*/
 */
@BeforeClass
public static void beforeClass() {
    resource = new ClassPathResource(springConfig);
    beanFactory = new XmlBeanFactory(resource);
    runtimeContext = (RuntimeContext) beanFactory.getBean("runtimeContext");
    transactionTemplate = (TransactionTemplate) beanFactory.getBean("springTransactionTemplate");
    final JunitInitializer initializer = (JunitInitializer) beanFactory.getBean("junitInitializer");

    // ?
    transactionTemplate.execute(new TransactionCallback() {

        public Object doInTransaction(TransactionStatus arg0) {

            initializer.clearData();
            return null;
        }

    });

    final WorkflowSession session = WorkflowSessionFactory.createWorkflowSession(runtimeContext,
            FireWorkflowSystem.getInstance());
    final WorkflowStatement stmt = session.createWorkflowStatement(PROCESS_TYPE);

    // ???
    transactionTemplate.execute(new TransactionCallback() {

        public Object doInTransaction(TransactionStatus arg0) {
            try {
                InputStream in = BaseEnviroment4Junit.class.getClassLoader()
                        .getResourceAsStream("FireWorkflow-Default-Resources.rsc.xml");
                Map<ResourceDescriptorProperty, Object> props = new HashMap<ResourceDescriptorProperty, Object>();
                props.put(ResourceDescriptorProperty.FILE_NAME, "FireWorkflow-Default-Resources.rsc.xml");

                stmt.uploadResources(in, props);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

    });

}

From source file:org.codehaus.grepo.procedure.repository.GenericProcedureRepositoryImpl.java

/**
 * Execute the procedure./*  ww w  .  j  a  v  a2s.  c om*/
 *
 * @param pmpi The method parameter info.
 * @param genericProcedure The annotation.
 * @return Returns the result map of the procedure call.
 */
protected Map<String, Object> executeProcedure(final ProcedureMethodParameterInfo pmpi,
        GenericProcedure genericProcedure) {
    TransactionCallback<Object> callback = new TransactionCallback<Object>() {

        public Object doInTransaction(final TransactionStatus status) {
            ProcedureExecutionContext context = createProcedureExecutionContext();

            StoredProcedure sp = prepareProcedure(pmpi, context);

            Map<String, Object> input = generateInputMap(pmpi, context);

            if (logger.isDebugEnabled()) {
                logger.debug("About to execute procedure: {}", sp.getSql());
                logger.debug("Using input map: {}", input);
            }

            Object result = sp.execute(input);
            logger.debug("Procedure result is '{}'", result);
            return result;
        }
    };

    return executeCallback(callback, genericProcedure.isReadOnly());
}

From source file:ch.tatool.app.service.impl.DataServiceImpl.java

/**
 * Creates a new module session.//from  www .  j  ava  2 s. c o  m
 * The module start date is set immediately
 */
public ModuleSession createSession(Module module) {
    final ModuleImpl moduleImpl = (ModuleImpl) module;
    ModuleSession moduleSession = (ModuleSession) moduleImpl.getTransactionTemplate()
            .execute(new TransactionCallback() {
                public Object doInTransaction(TransactionStatus status) {
                    ModuleSession moduleSession = new ModuleSessionImpl();
                    moduleSession.setStartTime(new Date());
                    moduleImpl.getSessionDAO().saveSession(moduleImpl, moduleSession);
                    return moduleSession;
                }
            });
    return moduleSession;
}

From source file:com.mothsoft.alexis.service.security.AlexisApiAuthenticationProvider.java

@Override
protected UserDetails retrieveUser(final String username, final UsernamePasswordAuthenticationToken token)
        throws AuthenticationException {
    return this.transactionTemplate.execute(new TransactionCallback<UserDetails>() {

        @Override/*  www  . ja v a  2s . c  o  m*/
        public UserDetails doInTransaction(TransactionStatus arg0) {
            final String apiToken = String.valueOf(token.getCredentials());
            final boolean valid = AlexisApiAuthenticationProvider.this.userDao.authenticate(username, apiToken);

            if (!valid) {
                throw new BadCredentialsException(username);
            }

            final UserDetails userDetails = AlexisApiAuthenticationProvider.this.userDetailsService
                    .loadUserByUsername(username);
            final UserDetails toReturn = new UserAuthenticationDetails((UserAuthenticationDetails) userDetails,
                    apiToken);
            return toReturn;
        }
    });

}

From source file:ch.tatool.app.service.impl.ModuleServiceImpl.java

/**
 * Get a list of all available modules.//from   www.  j  av a 2  s.  co m
 */
@SuppressWarnings("unchecked")
public Set<Module.Info> getModules(UserAccount account) {
    final UserAccountImpl accountImpl = (UserAccountImpl) account;
    return (Set<Module.Info>) accountImpl.getTransactionTemplate().execute(new TransactionCallback() {
        public Object doInTransaction(TransactionStatus status) {
            return accountImpl.getModuleDAO().getModules(accountImpl);
        }
    });
}

From source file:org.cleverbus.core.common.asynch.repair.RepairExternalCallDbImpl.java

private List<ExternalCall> findProcessingExternalCalls() {
    return transactionTemplate.execute(new TransactionCallback<List<ExternalCall>>() {
        @Override/* w ww  .ja  va  2 s. c  o  m*/
        @SuppressWarnings("unchecked")
        public List<ExternalCall> doInTransaction(TransactionStatus status) {
            return externalCallDao.findProcessingExternalCalls(repeatInterval);
        }
    });
}

From source file:com.vladmihalcea.HibernateSQLStatementCountTest.java

@Test
public void test() {

    transactionTemplate.execute(new TransactionCallback<Void>() {
        @Override/*from  w  w w .j  a v a  2s . c  o m*/
        public Void doInTransaction(TransactionStatus transactionStatus) {

            Company company = new Company();
            company.setName("TV Company");
            entityManager.persist(company);

            Product product1 = new Product("tvCode");
            product1.setName("TV");
            product1.setCompany(company);

            WarehouseProductInfo warehouseProductInfo1 = new WarehouseProductInfo();
            warehouseProductInfo1.setQuantity(101);
            product1.addWarehouse(warehouseProductInfo1);

            Product product2 = new Product("cdCode");
            product2.setName("CD");
            product2.setCompany(company);

            WarehouseProductInfo warehouseProductInfo2 = new WarehouseProductInfo();
            warehouseProductInfo2.setQuantity(50);
            product2.addWarehouse(warehouseProductInfo2);

            entityManager.persist(product1);
            entityManager.persist(product2);
            entityManager.flush();

            final JdbcTemplate otherDataSourceJdbcTemplate = new JdbcTemplate(otherDataSource);
            List<Map<String, Object>> versions = otherDataSourceJdbcTemplate
                    .queryForList(" select * from version ");
            assertTrue(versions.isEmpty());
            return null;
        }
    });

    try {
        SQLStatementCountValidator.reset();
        warehouseProductInfoService.findAllWithNPlusOne();
        SQLStatementCountValidator.assertSelectCount(1);
    } catch (SQLSelectCountMismatchException e) {
        assertEquals(3, e.getRecorded());
    }

    SQLStatementCountValidator.reset();
    warehouseProductInfoService.findAllWithFetch();
    SQLStatementCountValidator.assertSelectCount(1);

    SQLStatementCountValidator.reset();
    warehouseProductInfoService.newWarehouseProductInfo();
    SQLStatementCountValidator.assertSelectCount(1);
    SQLStatementCountValidator.assertInsertCount(2);
}

From source file:com.vladmihalcea.service.impl.ProductServiceImpl.java

@Override
@Retry(times = 10, on = OptimisticLockException.class)
public Product updateName(final Long id, final String name) {
    return transactionTemplate.execute(new TransactionCallback<Product>() {
        @Override/*w  ww  .  ja va 2  s .  com*/
        public Product doInTransaction(TransactionStatus status) {
            Product product = entityManager.find(Product.class, id);
            product.setName(name);
            LOGGER.info("Updating product {} name to {}", product, name);
            product = entityManager.merge(product);
            entityManager.flush();
            return product;
        }
    });
}

From source file:org.web4thejob.orm.MetaReaderServiceImpl.java

@Override
@SuppressWarnings("unchecked")
public <E extends Entity> E deproxyEntity(E entity) {
    final E proxy = entity;

    if (proxy instanceof HibernateProxy) {
        {/*from  w  w  w .  jav  a  2  s  .  co  m*/
            if (((HibernateProxy) proxy).getHibernateLazyInitializer().isUninitialized()) {
                final E impl = ContextUtil.getTransactionWrapper().execute(new TransactionCallback<E>() {
                    @Override
                    public E doInTransaction(TransactionStatus status) {
                        final LazyInitializer lazy = ((HibernateProxy) proxy).getHibernateLazyInitializer();

                        lazy.setSession((SessionImplementor) sessionFactory.getCurrentSession());
                        lazy.initialize();
                        final Object impl = lazy.getImplementation();
                        lazy.unsetSession();
                        return (E) impl;
                    }
                });
                return impl;
            } else {
                return (E) ((HibernateProxy) proxy).getHibernateLazyInitializer().getImplementation();
            }
        }
    }

    return entity;
}