List of usage examples for org.springframework.transaction.support TransactionSynchronizationManager hasResource
public static boolean hasResource(Object key)
From source file:org.springextensions.db4o.Db4oTransactionManager.java
protected void doResume(Object transaction, Object suspendedResources) { SuspendedResourcesHolder resourcesHolder = (SuspendedResourcesHolder) suspendedResources; if (TransactionSynchronizationManager.hasResource(getObjectContainer())) { TransactionSynchronizationManager.unbindResource(getObjectContainer()); }/*w w w.j av a 2s .c o m*/ TransactionSynchronizationManager.bindResource(getObjectContainer(), resourcesHolder.getObjectContainerHolder()); }
From source file:org.springextensions.db4o.Db4oTransactionManagerTest.java
@Test public void testInvalidIsolation() throws Exception { final ExtObjectContainer container = mock(ExtObjectContainer.class); PlatformTransactionManager tm = new Db4oTransactionManager(container); TransactionTemplate tt = new TransactionTemplate(tm); Assert.assertTrue(!TransactionSynchronizationManager.hasResource(container), "Has no container"); Assert.assertTrue(!TransactionSynchronizationManager.isSynchronizationActive(), "JTA synchronizations not active"); tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); try {/* w w w .j a va 2 s. c o m*/ tt.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { Assert.assertTrue(TransactionSynchronizationManager.hasResource(container), "Has thread session"); Db4oTemplate template = new Db4oTemplate(container); template.execute(new Db4oCallback() { public Object doInDb4o(ObjectContainer cont) { return null; } }); } }); Assert.fail("Should have thrown InvalidIsolationLevelException"); } catch (InvalidIsolationLevelException e) { // it's okay } Assert.assertTrue(!TransactionSynchronizationManager.hasResource(container), "Has no container"); Assert.assertTrue(!TransactionSynchronizationManager.isSynchronizationActive(), "JTA synchronizations not active"); // TODO verify(container)....; exception thrown? }
From source file:com.mobileman.filter.OpenSessionFilter.java
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { if (webApplicationContext == null) { HttpServletRequest rq1 = (HttpServletRequest) request; String requestURI = rq1.getRequestURI(); if (!requestURI.endsWith(INIT_SERVLET_URI)) { request.getRequestDispatcher(INIT_SERVLET_URI).forward(request, response); return; }//from w w w .j a va2s .c om } SessionFactory sessionFactory = lookupSessionFactory(); boolean participate = false; if (sessionFactory != null) { if (isSingleSession()) { // single session mode if (TransactionSynchronizationManager.hasResource(sessionFactory)) { // Do not modify the Session: just set the participate flag. participate = true; } else { Session session = getSession(sessionFactory); TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session)); } } else { // deferred close mode if (SessionFactoryUtils.isDeferredCloseActive(sessionFactory)) { // Do not modify deferred close: just set the participate // flag. participate = true; } else { SessionFactoryUtils.initDeferredClose(sessionFactory); } } } try { filterChain.doFilter(request, response); } finally { if (sessionFactory != null) { if (!participate) { if (isSingleSession()) { // single session mode SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager .unbindResource(sessionFactory); closeSession(sessionHolder.getSession(), sessionFactory); } else { // deferred close mode SessionFactoryUtils.processDeferredClose(sessionFactory); } } } } }
From source file:org.openvpms.component.business.service.archetype.Notifier.java
/** * Returns the notifier for the given service and current thread. * <p/>/*from w ww .j av a 2 s. c o m*/ * If one does not exist, it will be created. * * @param service the archetype service * @return the context */ public static Notifier getNotifier(ArchetypeService service) { Notifier notifier; if (TransactionSynchronizationManager.isSynchronizationActive()) { if (!TransactionSynchronizationManager.hasResource(service)) { notifier = new Notifier(service, true); TransactionSynchronizationManager.bindResource(service, notifier); TransactionSynchronizationManager.registerSynchronization(new NotifierSynchronization(notifier)); } else { notifier = (Notifier) TransactionSynchronizationManager.getResource(service); } } else { notifier = new Notifier(service, false); } return notifier; }
From source file:de.codecentric.batch.metrics.BatchMetricsImpl.java
private void initializeMetricContainerAndRegisterTransactionSynchronizationIfNecessary() { if (!TransactionSynchronizationManager.hasResource(serviceKey)) { TransactionSynchronizationManager.bindResource(serviceKey, new StringBuffer()); TransactionSynchronizationManager.registerSynchronization(this); }//from w w w .j av a 2 s. c o m if (metricContainer.get() == null) { metricContainer.set(new MetricContainer()); } }
From source file:org.fornax.cartridges.sculptor.framework.web.jpa.JpaFlowExecutionListener.java
private void unbind(EntityManager em) { if (TransactionSynchronizationManager.hasResource(entityManagerFactory)) { TransactionSynchronizationManager.unbindResource(entityManagerFactory); }/*from ww w . j a v a 2 s. c o m*/ }
From source file:grails.orm.HibernateCriteriaBuilder.java
@Override protected void createCriteriaInstance() { {/*www.j a v a 2s . c o m*/ if (TransactionSynchronizationManager.hasResource(sessionFactory)) { participate = true; hibernateSession = ((SessionHolder) TransactionSynchronizationManager.getResource(sessionFactory)) .getSession(); } else { hibernateSession = sessionFactory.openSession(); } criteria = hibernateSession.createCriteria(targetClass); cacheCriteriaMapping(); criteriaMetaClass = GroovySystem.getMetaClassRegistry().getMetaClass(criteria.getClass()); } }
From source file:org.fornax.cartridges.sculptor.framework.web.hibernate.OpenHibernateSessionInConversationListener.java
private void bind(Session session) { if (!TransactionSynchronizationManager.hasResource(sessionFactory)) { TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session)); }// ww w . java 2s . c o m }
From source file:ar.edu.utn.sigmaproject.webflow.Hibernate4FlowExecutionListener.java
private void unbind(Session session) { if (TransactionSynchronizationManager.hasResource(sessionFactory)) { TransactionSynchronizationManager.unbindResource(sessionFactory); }//from w w w . j a v a 2s .com }
From source file:com._4dconcept.springframework.data.marklogic.datasource.DatabaseConnectorJtaTransactionTest.java
private void doTestJtaTransactionWithPropagationRequiresNew(final boolean rollback, final boolean openOuterConnection, final boolean accessAfterResume, final boolean useTransactionAwareContentSource) throws Exception { given(transactionManager.suspend()).willReturn(transaction); if (rollback) { given(userTransaction.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE); } else {//w w w . ja v a2s. c o m given(userTransaction.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE); } given(session.getTransactionMode()).willReturn(Session.TransactionMode.QUERY); final ContentSource dsToUse = useTransactionAwareContentSource ? new TransactionAwareContentSourceProxy(contentSource) : contentSource; JtaTransactionManager ptm = new JtaTransactionManager(userTransaction, transactionManager); final TransactionTemplate tt = new TransactionTemplate(ptm); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(dsToUse)); assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); tt.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) throws RuntimeException { assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(dsToUse)); assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive()); assertTrue("Is new transaction", status.isNewTransaction()); Session s = ContentSourceUtils.getSession(dsToUse); assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(dsToUse)); s.getTransactionMode(); ContentSourceUtils.releaseSession(s, dsToUse); s = ContentSourceUtils.getSession(dsToUse); assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(dsToUse)); if (!openOuterConnection) { ContentSourceUtils.releaseSession(s, dsToUse); } for (int i = 0; i < 5; i++) { tt.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) throws RuntimeException { assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(dsToUse)); assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive()); assertTrue("Is new transaction", status.isNewTransaction()); Session s = ContentSourceUtils.getSession(dsToUse); s.getTransactionMode(); assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(dsToUse)); ContentSourceUtils.releaseSession(s, dsToUse); s = ContentSourceUtils.getSession(dsToUse); assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(dsToUse)); ContentSourceUtils.releaseSession(s, dsToUse); } }); } if (rollback) { status.setRollbackOnly(); } if (accessAfterResume) { if (!openOuterConnection) { s = ContentSourceUtils.getSession(dsToUse); } assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(dsToUse)); s.getTransactionMode(); ContentSourceUtils.releaseSession(s, dsToUse); s = ContentSourceUtils.getSession(dsToUse); assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(dsToUse)); ContentSourceUtils.releaseSession(s, dsToUse); } else { if (openOuterConnection) { ContentSourceUtils.releaseSession(s, dsToUse); } } } }); assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(dsToUse)); assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); verify(userTransaction, times(6)).begin(); verify(transactionManager, times(5)).resume(transaction); if (rollback) { verify(userTransaction, times(5)).commit(); verify(userTransaction).rollback(); } else { verify(userTransaction, times(6)).commit(); } if (accessAfterResume && !openOuterConnection) { verify(session, times(7)).close(); } else { verify(session, times(6)).close(); } }