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

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

Introduction

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

Prototype

TransactionSynchronizationAdapter

Source Link

Usage

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