List of usage examples for org.springframework.transaction.support TransactionCallback TransactionCallback
TransactionCallback
From source file:com.thoughtworks.go.server.service.ScheduledPipelineLoaderIntegrationTest.java
private Pipeline createAndLoadModifyOneFilePipeline(PipelineConfig pipelineConfig) { MaterialConfigs expandedConfigs = materialExpansionService .expandMaterialConfigsForScheduling(pipelineConfig.materialConfigs()); MaterialRevisions materialRevisions = ModificationsMother .modifyOneFile(new MaterialConfigConverter().toMaterials(expandedConfigs)); Pipeline building = PipelineMother.buildingWithRevisions(pipelineConfig, materialRevisions); Pipeline pipeline = dbHelper.savePipelineWithMaterials(building); final long jobId = pipeline.getStages().get(0).getJobInstances().get(0).getId(); return (Pipeline) transactionTemplate.execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus status) { return loader.pipelineWithPasswordAwareBuildCauseByBuildId(jobId); }//from w w w . j a v a 2 s . co m }); }
From source file:org.wallride.service.PageService.java
@CacheEvict(value = WallRideCacheConfiguration.PAGE_CACHE, allEntries = true) @Transactional(propagation = Propagation.NOT_SUPPORTED) public List<Page> bulkDeletePage(PageBulkDeleteRequest bulkDeleteRequest, BindingResult result) { List<Page> pages = new ArrayList<>(); for (long id : bulkDeleteRequest.getIds()) { final PageDeleteRequest deleteRequest = new PageDeleteRequest.Builder().id(id) .language(bulkDeleteRequest.getLanguage()).build(); final BeanPropertyBindingResult r = new BeanPropertyBindingResult(deleteRequest, "request"); r.setMessageCodesResolver(messageCodesResolver); TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); transactionTemplate.setPropagationBehavior(TransactionTemplate.PROPAGATION_REQUIRES_NEW); Page page = null;//ww w .j av a2 s . c o m try { page = transactionTemplate.execute(new TransactionCallback<Page>() { public Page doInTransaction(TransactionStatus status) { try { return deletePage(deleteRequest, r); } catch (BindException e) { throw new RuntimeException(e); } } }); pages.add(page); } catch (Exception e) { logger.debug("Errors: {}", r); result.addAllErrors(r); } } return pages; }
From source file:dao.DashboardDAO.java
public static ObjectNode getPagedConfidentialDatasetsByManagerId(String managerId, String platform, int page, int size) { DataSourceTransactionManager tm = new DataSourceTransactionManager(getJdbcTemplate().getDataSource()); TransactionTemplate txTemplate = new TransactionTemplate(tm); return txTemplate.execute(new TransactionCallback<ObjectNode>() { public ObjectNode doInTransaction(TransactionStatus status) { List<Map<String, Object>> rows = new ArrayList<>(size); long count = getPagedDashboardDatasets(managerId, GET_CONFIDENTIAL_DATASETS_FILTER_PLATFORM, platform, null, page, size, rows); List<DashboardDataset> datasets = new ArrayList<>(); for (Map row : rows) { DashboardDataset dashboardDataset = new DashboardDataset(); dashboardDataset.datasetId = (Long) row.get("dataset_id"); dashboardDataset.datasetName = (String) row.get("name"); dashboardDataset.ownerId = (String) row.get("owner_id"); if (dashboardDataset.datasetId != null && dashboardDataset.datasetId > 0) { dashboardDataset.fields = getJdbcTemplate().queryForList( GET_CONFIDENTIAL_FIELDS_BY_DATASET_ID, String.class, dashboardDataset.datasetId); }/*from w w w.ja va 2s. c om*/ datasets.add(dashboardDataset); } ObjectNode resultNode = Json.newObject(); resultNode.put("status", "ok"); resultNode.put("count", count); resultNode.put("page", page); resultNode.put("itemsPerPage", size); resultNode.put("totalPages", (int) Math.ceil(count / ((double) size))); resultNode.set("datasets", Json.toJson(datasets)); return resultNode; } }); }
From source file:org.jspresso.hrsample.backend.JspressoUnitOfWorkTest.java
/** * Test uninitialized reference properties merge on commit. See bug #1023. *//*from w ww . j a va 2 s . com*/ @Test public void testUnititializedPropertiesMerge() { final HibernateBackendController hbc = (HibernateBackendController) getBackendController(); EnhancedDetachedCriteria departmentCriteria = EnhancedDetachedCriteria.forClass(Department.class); List<Department> departments = hbc.findByCriteria(departmentCriteria, EMergeMode.MERGE_KEEP, Department.class); final Department department = departments.get(0); final Company existingCompany = (Company) department.straightGetProperty(Department.COMPANY); assertFalse("Company property is already initialized", Hibernate.isInitialized(existingCompany)); Serializable newCompanyId = hbc.getTransactionTemplate().execute(new TransactionCallback<Serializable>() { @Override public Serializable doInTransaction(TransactionStatus status) { Department departmentClone = hbc.cloneInUnitOfWork(department); Company newCompany = hbc.getEntityFactory().createEntityInstance(Company.class); newCompany.setName("NewCompany"); departmentClone.setCompany(newCompany); return newCompany.getId(); } }); assertEquals("New company reference is not correctly merged", newCompanyId, department.getCompany().getId()); assertEquals("New company name is not correctly merged", "NewCompany", department.getCompany().getName()); hbc.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { @Override public void doInTransactionWithoutResult(TransactionStatus status) { List<IEntity> clonedEntities = hbc .cloneInUnitOfWork(Arrays.asList((IEntity) existingCompany, department)); Company existingCompanyClone = (Company) clonedEntities.get(0); assertFalse("Company clone is already initialized", Hibernate.isInitialized(existingCompanyClone)); Department departmentClone = (Department) clonedEntities.get(1); departmentClone.setCompany(existingCompanyClone); } }); assertEquals("New company reference is not correctly merged", existingCompany.getId(), department.getCompany().getId()); final Department otherDepartment = departments.get(1); Department deptFromUow = hbc.getTransactionTemplate().execute(new TransactionCallback<Department>() { @Override public Department doInTransaction(TransactionStatus status) { Department d = hbc.findById(otherDepartment.getId(), null, Department.class); return d; } }); assertFalse("Department Company property from UOW is initialized", Hibernate.isInitialized(deptFromUow.straightGetProperty(Department.COMPANY))); hbc.merge(deptFromUow, EMergeMode.MERGE_EAGER); }
From source file:org.openvpms.component.business.service.archetype.ArchetypeServiceActTestCase.java
/** * Creates two acts, act1 and act2 with a relationship between them. * In a transaction, deletes act2 and associates act1 with act3. *///from w w w . ja v a 2 s .com @Test public void testActReplacementInTxn() { final Act act1 = createSimpleAct("act1", "IN_PROGRESS"); final Act act2 = createSimpleAct("act2", "IN_PROGRESS"); final Act act3 = createSimpleAct("act3", "IN_PROGRESS"); // create a relationship from act1 -> act2 final ActRelationship relAct1Act2 = addRelationship(act1, act2, "act1->act2"); save(Arrays.asList(act1, act2)); template.execute(new TransactionCallback<Object>() { public Object doInTransaction(TransactionStatus status) { remove(act2); Act reloaded = reload(act1); // relationship should be removed assertFalse(reloaded.getActRelationships().contains(relAct1Act2)); // add a new relationship addRelationship(reloaded, act3, "act1->act3"); save(reloaded); save(act3); return null; } }); Act reloaded = reload(act1); ActBean relBean = new ActBean(reloaded); assertTrue(relBean.getActs().contains(act3)); }
From source file:dao.SearchDAO.java
public static ObjectNode getPagedDatasetByKeyword(String category, String keyword, String source, int page, int size) { List<Dataset> pagedDatasets = new ArrayList<Dataset>(); final JdbcTemplate jdbcTemplate = getJdbcTemplate(); javax.sql.DataSource ds = jdbcTemplate.getDataSource(); DataSourceTransactionManager tm = new DataSourceTransactionManager(ds); TransactionTemplate txTemplate = new TransactionTemplate(tm); ObjectNode result;// ww w .j a v a 2 s. c om result = txTemplate.execute(new TransactionCallback<ObjectNode>() { public ObjectNode doInTransaction(TransactionStatus status) { List<Map<String, Object>> rows = null; if (StringUtils.isBlank(source) || source.toLowerCase().equalsIgnoreCase("all")) { String query = SEARCH_DATASET_WITH_PAGINATION.replace("$keyword", keyword); rows = jdbcTemplate.queryForList(query, (page - 1) * size, size); } else { String query = SEARCH_DATASET_BY_SOURCE_WITH_PAGINATION.replace("$keyword", keyword); rows = jdbcTemplate.queryForList(query, source, (page - 1) * size, size); } for (Map row : rows) { Dataset ds = new Dataset(); ds.id = (Long) row.get(DatasetRowMapper.DATASET_ID_COLUMN); ds.name = (String) row.get(DatasetRowMapper.DATASET_NAME_COLUMN); ds.source = (String) row.get(DatasetRowMapper.DATASET_SOURCE_COLUMN); ds.urn = (String) row.get(DatasetRowMapper.DATASET_URN_COLUMN); ds.schema = (String) row.get(DatasetRowMapper.DATASET_SCHEMA_COLUMN); pagedDatasets.add(ds); } long count = 0; try { count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class); } catch (EmptyResultDataAccessException e) { Logger.error("Exception = " + e.getMessage()); } ObjectNode resultNode = Json.newObject(); resultNode.put("count", count); resultNode.put("page", page); resultNode.put("category", category); resultNode.put("source", source); resultNode.put("itemsPerPage", size); resultNode.put("totalPages", (int) Math.ceil(count / ((double) size))); resultNode.set("data", Json.toJson(pagedDatasets)); return resultNode; } }); return result; }
From source file:org.jspresso.hrsample.backend.JspressoModelTest.java
/** * Test translated name./* w w w .j a v a 2 s .c om*/ */ @Test public void testPropertyTranslation() { final HibernateBackendController hbc = (HibernateBackendController) getBackendController(); Serializable cityId = hbc.getTransactionTemplate().execute(new TransactionCallback<Serializable>() { @Override public Serializable doInTransaction(TransactionStatus status) { City c = hbc.getEntityFactory().createEntityInstance(City.class); c.setNameRaw("raw"); c.setName("test"); hbc.registerForUpdate(c); return c.getId(); } }); final City c = hbc.findById(cityId, EMergeMode.MERGE_KEEP, City.class); assertEquals("A message translation should have been created", 1, c.getPropertyTranslations().size()); hbc.getTransactionTemplate().execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { City cClone = hbc.cloneInUnitOfWork(c); cClone.setName("modified"); } }); hbc.reload(c); assertEquals("The message translation should have been updated", "modified", c.getName()); }
From source file:dao.DatasetsDAO.java
public static ObjectNode getPagedDatasets(String urn, Integer page, Integer size, String user) { ObjectNode result = Json.newObject(); Integer userId = UserDAO.getUserIDByUserName(user); javax.sql.DataSource ds = getJdbcTemplate().getDataSource(); DataSourceTransactionManager tm = new DataSourceTransactionManager(ds); TransactionTemplate txTemplate = new TransactionTemplate(tm); final Integer id = userId; result = txTemplate.execute(new TransactionCallback<ObjectNode>() { public ObjectNode doInTransaction(TransactionStatus status) { ObjectNode resultNode = Json.newObject(); List<Dataset> pagedDatasets = new ArrayList<Dataset>(); List<Map<String, Object>> rows = null; if (id != null && id > 0) { if (StringUtils.isBlank(urn)) { rows = getJdbcTemplate().queryForList(SELECT_PAGED_DATASET_BY_CURRENT_USER, (page - 1) * size, size, id, id); } else { rows = getJdbcTemplate().queryForList(SELECT_PAGED_DATASET_BY_URN_CURRENT_USER, urn + "%", (page - 1) * size, size, id, id); }// w w w . jav a 2 s. c om } else { if (StringUtils.isBlank(urn)) { rows = getJdbcTemplate().queryForList(SELECT_PAGED_DATASET, (page - 1) * size, size); } else { rows = getJdbcTemplate().queryForList(SELECT_PAGED_DATASET_BY_URN, urn + "%", (page - 1) * size, size); } } long count = 0; try { if (StringUtils.isBlank(urn)) { count = getJdbcTemplate().queryForObject(GET_PAGED_DATASET_COUNT, Long.class); } else { count = getJdbcTemplate().queryForObject(GET_PAGED_DATASET_COUNT_BY_URN, Long.class, urn + "%"); } } catch (EmptyResultDataAccessException e) { Logger.error("Exception = " + e.getMessage()); } for (Map row : rows) { Dataset ds = new Dataset(); Timestamp modified = (Timestamp) row.get(DatasetWithUserRowMapper.DATASET_MODIFIED_TIME_COLUMN); ds.id = (Long) row.get(DatasetWithUserRowMapper.DATASET_ID_COLUMN); ds.name = (String) row.get(DatasetWithUserRowMapper.DATASET_NAME_COLUMN); ds.source = (String) row.get(DatasetWithUserRowMapper.DATASET_SOURCE_COLUMN); ds.urn = (String) row.get(DatasetWithUserRowMapper.DATASET_URN_COLUMN); ds.schema = (String) row.get(DatasetWithUserRowMapper.DATASET_SCHEMA_COLUMN); String strOwner = (String) row.get(DatasetWithUserRowMapper.DATASET_OWNER_ID_COLUMN); String strOwnerName = (String) row.get(DatasetWithUserRowMapper.DATASET_OWNER_NAME_COLUMN); Long sourceModifiedTime = (Long) row .get(DatasetWithUserRowMapper.DATASET_SOURCE_MODIFIED_TIME_COLUMN); String properties = (String) row.get(DatasetWithUserRowMapper.DATASET_PROPERTIES_COLUMN); try { if (StringUtils.isNotBlank(properties)) { ds.properties = Json.parse(properties); } } catch (Exception e) { Logger.error(e.getMessage()); } if (modified != null && sourceModifiedTime != null && sourceModifiedTime > 0) { ds.modified = modified; ds.formatedModified = modified.toString(); } String[] owners = null; if (StringUtils.isNotBlank(strOwner)) { owners = strOwner.split(","); } String[] ownerNames = null; if (StringUtils.isNotBlank(strOwnerName)) { ownerNames = strOwnerName.split(","); } ds.owners = new ArrayList<User>(); if (owners != null && ownerNames != null) { if (owners.length == ownerNames.length) { for (int i = 0; i < owners.length; i++) { User datasetOwner = new User(); datasetOwner.userName = owners[i]; if (datasetOwner.userName.equalsIgnoreCase(user)) { ds.isOwned = true; } if (StringUtils.isBlank(ownerNames[i]) || ownerNames[i].equalsIgnoreCase("*")) { datasetOwner.name = owners[i]; } else { datasetOwner.name = ownerNames[i]; } ds.owners.add(datasetOwner); } } else { Logger.error("getPagedDatasets get wrong owner and names. Dataset ID: " + Long.toString(ds.id) + " Owner: " + owners + " Owner names: " + ownerNames); } } Integer favoriteId = (Integer) row.get(DatasetWithUserRowMapper.FAVORITE_DATASET_ID_COLUMN); Long watchId = (Long) row.get(DatasetWithUserRowMapper.DATASET_WATCH_ID_COLUMN); Long schemaHistoryRecordCount = 0L; try { schemaHistoryRecordCount = getJdbcTemplate().queryForObject(CHECK_SCHEMA_HISTORY, Long.class, ds.id); } catch (EmptyResultDataAccessException e) { Logger.error("Exception = " + e.getMessage()); } if (StringUtils.isNotBlank(ds.urn)) { if (ds.urn.substring(0, 4).equalsIgnoreCase(DatasetRowMapper.HDFS_PREFIX)) { ds.hdfsBrowserLink = Play.application().configuration().getString(HDFS_BROWSER_URL_KEY) + ds.urn.substring(DatasetRowMapper.HDFS_URN_PREFIX_LEN); } } if (favoriteId != null && favoriteId > 0) { ds.isFavorite = true; } else { ds.isFavorite = false; } if (watchId != null && watchId > 0) { ds.watchId = watchId; ds.isWatched = true; } else { ds.isWatched = false; ds.watchId = 0L; } if (schemaHistoryRecordCount != null && schemaHistoryRecordCount > 0) { ds.hasSchemaHistory = true; } else { ds.hasSchemaHistory = false; } pagedDatasets.add(ds); } resultNode.put("count", count); resultNode.put("page", page); resultNode.put("itemsPerPage", size); resultNode.put("totalPages", (int) Math.ceil(count / ((double) size))); resultNode.set("datasets", Json.toJson(pagedDatasets)); return resultNode; } }); return result; }
From source file:com.devnexus.ting.core.service.impl.BusinessServiceImpl.java
@Override public CfpSubmission saveAndNotifyCfpSubmission(final CfpSubmission cfpSubmission) { final BusinessService businessService = this; final CfpSubmission savedCfpSubmission = transactionTemplate .execute(new TransactionCallback<CfpSubmission>() { public CfpSubmission doInTransaction(TransactionStatus status) { return businessService.saveCfpSubmission(cfpSubmission); }/*w w w . j a v a 2 s. c o m*/ }); if (mailSettings.isEmailEnabled()) { mailChannel.send(MessageBuilder.withPayload(cfpSubmission).build()); } return savedCfpSubmission; }
From source file:dao.DashboardDAO.java
public static ObjectNode getPagedDescriptionDatasetsByManagerId(String managerId, String platform, int option, int page, int size) { DataSourceTransactionManager tm = new DataSourceTransactionManager(getJdbcTemplate().getDataSource()); TransactionTemplate txTemplate = new TransactionTemplate(tm); return txTemplate.execute(new TransactionCallback<ObjectNode>() { public ObjectNode doInTransaction(TransactionStatus status) { Boolean isDatasetLevel = true; String description;//from www . j a v a 2 s .c o m final String datasetQuery; switch (option) { case 1: datasetQuery = GET_DATASETS_WITH_DESCRIPTION_FILTER_PLATFORM; description = "has dataset level description"; break; case 2: datasetQuery = GET_DATASETS_WITHOUT_DESCRIPTION_FILTER_PLATFORM; description = "no dataset level description"; break; case 3: datasetQuery = GET_DATASETS_WITH_FULL_FIELD_DESCRIPTION_FILTER_PLATFORM; description = "all fields have description"; isDatasetLevel = false; break; case 4: datasetQuery = GET_DATASETS_WITH_ANY_FIELD_DESCRIPTION_FILTER_PLATFORM; description = "has field description"; isDatasetLevel = false; break; case 5: datasetQuery = GET_DATASETS_WITH_NO_FIELD_DESCRIPTION_FILTER_PLATFORM; description = "no field description"; isDatasetLevel = false; break; case 6: datasetQuery = GET_ALL_DATASETS_BY_ID_FILTER_PLATFORM; description = ""; break; default: datasetQuery = GET_ALL_DATASETS_BY_ID_FILTER_PLATFORM; description = ""; } List<Map<String, Object>> rows = new ArrayList<>(size); long count = getPagedDashboardDatasets(managerId, datasetQuery, platform, null, page, size, rows); List<DashboardDataset> datasets = new ArrayList<>(); for (Map row : rows) { DashboardDataset dashboardDataset = new DashboardDataset(); dashboardDataset.datasetId = (Long) row.get("dataset_id"); dashboardDataset.datasetName = (String) row.get("name"); dashboardDataset.ownerId = (String) row.get("owner_id"); if (dashboardDataset.datasetId != null && dashboardDataset.datasetId > 0) { if (isDatasetLevel) { dashboardDataset.fields = getJdbcTemplate().queryForList(GET_DATASET_LEVEL_COMMENTS, String.class, dashboardDataset.datasetId); } else { dashboardDataset.fields = getJdbcTemplate().queryForList(GET_FIELDS_WITH_DESCRIPTION, String.class, dashboardDataset.datasetId); } } datasets.add(dashboardDataset); } ObjectNode resultNode = Json.newObject(); resultNode.put("status", "ok"); resultNode.put("count", count); resultNode.put("page", page); resultNode.put("description", description); resultNode.put("itemsPerPage", size); resultNode.put("isDatasetLevel", isDatasetLevel); resultNode.put("totalPages", (int) Math.ceil(count / ((double) size))); resultNode.set("datasets", Json.toJson(datasets)); return resultNode; } }); }