Search in sources :

Example 26 with PlatformTransactionManager

use of org.springframework.transaction.PlatformTransactionManager in project uPortal by Jasig.

the class TransactionManagerCachingTransactionInterceptor method determineTransactionManager.

protected PlatformTransactionManager determineTransactionManager(TransactionAttribute txAttr) {
    if (txAttr == null) {
        return super.determineTransactionManager(txAttr);
    }
    final String qualifier = txAttr.getQualifier();
    if (StringUtils.hasLength(qualifier)) {
        PlatformTransactionManager platformTransactionManager = platformTransactionManagerCache.get(qualifier);
        if (platformTransactionManager == null) {
            platformTransactionManager = super.determineTransactionManager(txAttr);
            platformTransactionManagerCache.put(qualifier, platformTransactionManager);
        }
        return platformTransactionManager;
    }
    return super.determineTransactionManager(txAttr);
}
Also used : PlatformTransactionManager(org.springframework.transaction.PlatformTransactionManager)

Example 27 with PlatformTransactionManager

use of org.springframework.transaction.PlatformTransactionManager in project camel by apache.

the class TransactionErrorHandlerBuilder method createErrorHandler.

public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
    if (transactionTemplate == null) {
        // lookup in context if no transaction template has been configured
        LOG.debug("No TransactionTemplate configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
        Map<String, TransactedPolicy> mapPolicy = routeContext.lookupByType(TransactedPolicy.class);
        if (mapPolicy != null && mapPolicy.size() == 1) {
            TransactedPolicy policy = mapPolicy.values().iterator().next();
            if (policy != null && policy instanceof SpringTransactionPolicy) {
                transactionTemplate = ((SpringTransactionPolicy) policy).getTransactionTemplate();
            }
        }
        if (transactionTemplate == null) {
            TransactedPolicy policy = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
            if (policy != null && policy instanceof SpringTransactionPolicy) {
                transactionTemplate = ((SpringTransactionPolicy) policy).getTransactionTemplate();
            }
        }
        if (transactionTemplate == null) {
            Map<String, TransactionTemplate> mapTemplate = routeContext.lookupByType(TransactionTemplate.class);
            if (mapTemplate == null || mapTemplate.isEmpty()) {
                LOG.trace("No TransactionTemplate found in registry.");
            } else if (mapTemplate.size() == 1) {
                transactionTemplate = mapTemplate.values().iterator().next();
            } else {
                LOG.debug("Found {} TransactionTemplate in registry. Cannot determine which one to use. " + "Please configure a TransactionTemplate on the TransactionErrorHandlerBuilder", mapTemplate.size());
            }
        }
        if (transactionTemplate == null) {
            Map<String, PlatformTransactionManager> mapManager = routeContext.lookupByType(PlatformTransactionManager.class);
            if (mapManager == null || mapManager.isEmpty()) {
                LOG.trace("No PlatformTransactionManager found in registry.");
            } else if (mapManager.size() == 1) {
                transactionTemplate = new TransactionTemplate(mapManager.values().iterator().next());
            } else {
                LOG.debug("Found {} PlatformTransactionManager in registry. Cannot determine which one to use for TransactionTemplate. " + "Please configure a TransactionTemplate on the TransactionErrorHandlerBuilder", mapManager.size());
            }
        }
        if (transactionTemplate != null) {
            LOG.debug("Found TransactionTemplate in registry to use: " + transactionTemplate);
        }
    }
    ObjectHelper.notNull(transactionTemplate, "transactionTemplate", this);
    TransactionErrorHandler answer = new TransactionErrorHandler(routeContext.getCamelContext(), processor, getLogger(), getOnRedelivery(), getRedeliveryPolicy(), getExceptionPolicyStrategy(), transactionTemplate, getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorService(routeContext.getCamelContext()), getRollbackLoggingLevel(), getOnExceptionOccurred());
    // configure error handler before we can use it
    configure(routeContext, answer);
    return answer;
}
Also used : TransactedPolicy(org.apache.camel.spi.TransactedPolicy) TransactionTemplate(org.springframework.transaction.support.TransactionTemplate) PlatformTransactionManager(org.springframework.transaction.PlatformTransactionManager)

Example 28 with PlatformTransactionManager

use of org.springframework.transaction.PlatformTransactionManager in project cucumber-jvm by cucumber.

the class SpringTransactionHooksTest method setUp.

@Before
public void setUp() {
    target = new SpringTransactionHooks() {

        @Override
        public PlatformTransactionManager obtainPlatformTransactionManager() {
            return mockedPlatformTransactionManager;
        }
    };
    target.setBeanFactory(mockedBeanFactory);
}
Also used : SpringTransactionHooks(cucumber.api.spring.SpringTransactionHooks) PlatformTransactionManager(org.springframework.transaction.PlatformTransactionManager) Before(org.junit.Before)

Example 29 with PlatformTransactionManager

use of org.springframework.transaction.PlatformTransactionManager in project grails-core by grails.

the class ChainedTransactionManager method commit.

/*
	 * (non-Javadoc)
	 * @see org.springframework.transaction.PlatformTransactionManager#commit(org.springframework.transaction.TransactionStatus)
	 */
public void commit(TransactionStatus status) throws TransactionException {
    MultiTransactionStatus multiTransactionStatus = (MultiTransactionStatus) status;
    boolean commit = true;
    Exception commitException = null;
    PlatformTransactionManager commitExceptionTransactionManager = null;
    for (PlatformTransactionManager transactionManager : reverse(transactionManagers)) {
        if (commit) {
            try {
                multiTransactionStatus.commit(transactionManager);
            } catch (Exception ex) {
                commit = false;
                commitException = ex;
                commitExceptionTransactionManager = transactionManager;
            }
        } else {
            try {
                multiTransactionStatus.rollback(transactionManager);
            } catch (Exception ex) {
                LOGGER.warn("Rollback exception (after commit) (" + transactionManager + ") " + ex.getMessage(), ex);
            }
        }
    }
    if (multiTransactionStatus.isNewSynchonization()) {
        synchronizationManager.clearSynchronization();
    }
    if (commitException != null) {
        boolean firstTransactionManagerFailed = commitExceptionTransactionManager == getLastTransactionManager();
        int transactionState = firstTransactionManagerFailed ? HeuristicCompletionException.STATE_ROLLED_BACK : HeuristicCompletionException.STATE_MIXED;
        throw new HeuristicCompletionException(transactionState, commitException);
    }
}
Also used : HeuristicCompletionException(org.springframework.transaction.HeuristicCompletionException) UnexpectedRollbackException(org.springframework.transaction.UnexpectedRollbackException) TransactionException(org.springframework.transaction.TransactionException) CannotCreateTransactionException(org.springframework.transaction.CannotCreateTransactionException) HeuristicCompletionException(org.springframework.transaction.HeuristicCompletionException) PlatformTransactionManager(org.springframework.transaction.PlatformTransactionManager)

Example 30 with PlatformTransactionManager

use of org.springframework.transaction.PlatformTransactionManager in project grails-core by grails.

the class ChainedTransactionManagerTests method shouldCompleteSuccessfully.

@Test
public void shouldCompleteSuccessfully() throws Exception {
    PlatformTransactionManager transactionManager = createNonFailingTransactionManager("single");
    setupTransactionManagers(transactionManager);
    createAndCommitTransaction();
    assertThat(transactionManager, isCommitted());
}
Also used : TestPlatformTransactionManager(org.grails.transaction.ChainedTransactionManagerTests.TestPlatformTransactionManager) PlatformTransactionManager(org.springframework.transaction.PlatformTransactionManager) Test(org.junit.Test)

Aggregations

PlatformTransactionManager (org.springframework.transaction.PlatformTransactionManager)52 Test (org.junit.Test)32 TransactionStatus (org.springframework.transaction.TransactionStatus)13 ITestBean (org.springframework.tests.sample.beans.ITestBean)10 TestBean (org.springframework.tests.sample.beans.TestBean)10 BeanFactory (org.springframework.beans.factory.BeanFactory)7 Method (java.lang.reflect.Method)6 TransactionTemplate (org.springframework.transaction.support.TransactionTemplate)6 TestPlatformTransactionManager (org.grails.transaction.ChainedTransactionManagerTests.TestPlatformTransactionManager)5 IpInterfaceDao (org.opennms.netmgt.dao.api.IpInterfaceDao)5 OnmsIpInterface (org.opennms.netmgt.model.OnmsIpInterface)5 CannotCreateTransactionException (org.springframework.transaction.CannotCreateTransactionException)4 TransactionException (org.springframework.transaction.TransactionException)4 UnexpectedRollbackException (org.springframework.transaction.UnexpectedRollbackException)4 HashMap (java.util.HashMap)3 DataSource (javax.sql.DataSource)3 Before (org.junit.Before)3 OnmsNode (org.opennms.netmgt.model.OnmsNode)3 Connection (java.sql.Connection)2 Properties (java.util.Properties)2