List of usage examples for org.springframework.transaction.support TransactionSynchronizationAdapter TransactionSynchronizationAdapter
TransactionSynchronizationAdapter
From source file:org.javersion.store.jdbc.SpringTransactions.java
@Override public void afterCommit(final Runnable callback) { registerSynchronization(new TransactionSynchronizationAdapter() { @Override/*from w ww .j av a2s . com*/ public void afterCommit() { callback.run(); } }); }
From source file:com.thoughtworks.go.server.cache.GoCache.java
public void stopServingForTransaction() { if (transactionSynchronizationManager.isTransactionBodyExecuting() && !doNotServeForTransaction()) { doNotServeForTransaction.set(true); transactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override/*from w w w. ja v a 2 s . c o m*/ public void beforeCompletion() { doNotServeForTransaction.set(false); } }); } }
From source file:com.thoughtworks.go.server.dao.UserSqlMapDao.java
public void saveOrUpdate(final User user) { assertUserNotAnonymous(user);/*from w w w . j a va 2s. co m*/ transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { transactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCommit() { clearEnabledUserCountFromCache(); } }); sessionFactory.getCurrentSession().saveOrUpdate(copyLoginToDisplayNameIfNotPresent(user)); } }); }
From source file:org.zenoss.zep.dao.impl.DaoCacheImpl.java
private <T> int getIdFromName(final DaoTableCache<T> cache, final T name) { Integer cached = cache.getCache().getIdFromName(name); if (cached == null) { final int id = cache.insertOrSelect(name); TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override/*from ww w .ja v a 2s . co m*/ public void afterCommit() { cache.getCache().cache(name, id); } }); cached = id; } return cached; }
From source file:org.zenoss.zep.dao.impl.DaoCacheImpl.java
private <T> T getNameFromId(final DaoTableCache<T> cache, final int id) { T cached = cache.getCache().getNameFromId(id); if (cached == null) { final T name = cache.findNameFromId(id); if (TransactionSynchronizationManager.isSynchronizationActive()) { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override/*from w ww . j ava 2 s . c o m*/ public void afterCommit() { cache.getCache().cache(name, id); } }); } else { // Not part of a transaction - can safely cache cache.getCache().cache(name, id); } cached = name; } return cached; }
From source file:org.vader.common.spring.TransactionScope.java
private static void registerSynchronization() { LOG.debug("Registers transaction synchronization"); TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override/*from w ww . j a va 2 s .c o m*/ public void suspend() { LOG.debug("Push new transaction scope"); SCOPES.get().push(new HashMap<String, ScopeEntry>()); } @Override public void resume() { LOG.debug("Pop old transaction scope"); SCOPES.get().pop(); } @Override public void afterCompletion(int status) { final Map<String, ScopeEntry> scope = getCurrentScope(); LOG.debug("Destroying {} beans", scope.size()); for (Map.Entry<String, ScopeEntry> entry : scope.entrySet()) { for (Runnable runnable : entry.getValue().getCallbacks()) { LOG.debug("Executes destruction callback for bean={}", entry.getKey()); runnable.run(); } } scope.clear(); LOG.debug("Destruction completed"); } }); }
From source file:com.thoughtworks.go.server.cache.GoCacheIntegrationTest.java
@Test public void shouldStartServingThingsOutOfCacheOnceTransactionCompletes() { final SqlSessionDaoSupport daoSupport = new SqlSessionDaoSupport() { };//from w w w . j av a2 s . co m daoSupport.setSqlSessionFactory(sqlMapClient); goCache.put("foo", "bar"); final String[] valueInCleanTxn = new String[1]; final String[] valueInDirtyTxn = new String[1]; final String[] valueInAfterCommit = new String[1]; final String[] valueInAfterCompletion = new String[1]; transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { valueInCleanTxn[0] = (String) goCache.get("foo"); User user = new User("loser", "Massive Loser", "boozer@loser.com"); userSqlMapDao.saveOrUpdate(user); valueInDirtyTxn[0] = (String) goCache.get("foo"); transactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCommit() { valueInAfterCommit[0] = (String) goCache.get("foo"); } @Override public void afterCompletion(int status) { valueInAfterCompletion[0] = (String) goCache.get("foo"); } }); } }); assertThat(valueInCleanTxn[0], is("bar")); assertThat(valueInDirtyTxn[0], is(nullValue())); assertThat(valueInAfterCommit[0], is("bar")); assertThat(valueInAfterCompletion[0], is("bar")); }
From source file:com.thoughtworks.go.server.dao.PipelineSqlMapDao.java
public Pipeline save(final Pipeline pipeline) { return (Pipeline) transactionTemplate.execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus status) { transactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override//from ww w.ja v a 2s . co m public void afterCommit() { goCache.remove(cacheKeyForLatestPipelineIdByPipelineName(pipeline.getName())); invalidateCacheConditionallyForPipelineInstancesTriggeredWithDependencyMaterial(pipeline); } }); pipelineByBuildIdCache.flushOnCommit(); getSqlMapClientTemplate().insert("insertPipeline", pipeline); savePipelineMaterialRevisions(pipeline, pipeline.getId()); environmentVariableDao.save(pipeline.getId(), EnvironmentVariableType.Trigger, pipeline.scheduleTimeVariables()); return pipeline; } }); }
From source file:com.thoughtworks.go.server.dao.UserSqlMapDao.java
private void changeEnabledStatus(final List<String> usernames, final boolean enabled) { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override// www. ja v a 2 s . c o m protected void doInTransactionWithoutResult(TransactionStatus status) { transactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCommit() { clearEnabledUserCountFromCache(); } }); String queryString = String.format("update %s set enabled = :enabled where name in (:userNames)", User.class.getName()); Query query = sessionFactory.getCurrentSession().createQuery(queryString); query.setParameter("enabled", enabled); query.setParameterList("userNames", usernames); query.executeUpdate(); } }); }
From source file:com.thoughtworks.go.config.materials.git.GitMaterial.java
private GitCommand git(ConsoleOutputStreamConsumer outputStreamConsumer, final File workingFolder, int preferredCloneDepth, SubprocessExecutionContext executionContext) throws Exception { if (isSubmoduleFolder()) { return new GitCommand(getFingerprint(), new File(workingFolder.getPath()), GitMaterialConfig.DEFAULT_BRANCH, true, secrets()); }//from ww w .j a v a 2 s.c om GitCommand gitCommand = new GitCommand(getFingerprint(), workingFolder, getBranch(), false, secrets()); if (!isGitRepository(workingFolder) || isRepositoryChanged(gitCommand, workingFolder)) { LOG.debug("Invalid git working copy or repository changed. Delete folder: {}", workingFolder); deleteDirectoryNoisily(workingFolder); } createParentFolderIfNotExist(workingFolder); if (!workingFolder.exists()) { TransactionSynchronizationManager txManager = new TransactionSynchronizationManager(); if (txManager.isActualTransactionActive()) { txManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCompletion(int status) { if (status != TransactionSynchronization.STATUS_COMMITTED) { FileUtils.deleteQuietly(workingFolder); } } }); } int cloneDepth = shallowClone ? preferredCloneDepth : Integer.MAX_VALUE; int returnValue; if (executionContext.isServer()) { returnValue = gitCommand.cloneWithNoCheckout(outputStreamConsumer, urlForCommandLine()); } else { returnValue = gitCommand.clone(outputStreamConsumer, urlForCommandLine(), cloneDepth); } bombIfFailedToRunCommandLine(returnValue, "Failed to run git clone command"); } return gitCommand; }