/** * 手动进行回滚事务. * 接口中如果 try catch 异常无法回滚时,这手动调用回滚处理 */ public static void rollback () { TransactionStatus transactionStatus = TransactionAspectSupport.currentTransactionStatus(); if ( null != transactionStatus ) { transactionStatus.setRollbackOnly(); } } }
protected Tx getCurrentTX() { try { return (SpannerTransactionManager.Tx) ((DefaultTransactionStatus) TransactionAspectSupport .currentTransactionStatus()) .getTransaction(); } catch (NoTransactionException ex) { return null; } }
protected Tx getCurrentTX() { try { return (SpannerTransactionManager.Tx) ((DefaultTransactionStatus) TransactionAspectSupport .currentTransactionStatus()) .getTransaction(); } catch (NoTransactionException ex) { return null; } }
private void rollbackCurrentTransaction() { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); }
@VisibleForTesting Tx getCurrentTX() { return TransactionSynchronizationManager.isActualTransactionActive() ? (Tx) ((DefaultTransactionStatus) TransactionAspectSupport .currentTransactionStatus()).getTransaction() : null; }
@Transactional public Optional<Either<String, TechnologyId>> customize(final Long nodeId, final Entity mainProduct, final GeneratorSettings settings, boolean generationMode) { Optional<Entity> maybeNode = technologyStructureTreeDataProvider.tryFind(nodeId); if (!maybeNode.isPresent()) { return Optional.of(Either.left(String.format("Cannot find generator node with id = '%s'", nodeId))); } Optional<Either<String, TechnologyId>> customizationResult = maybeNode.filter(this::isCustomizableNode).map( node -> customize(node, mainProduct, settings, generationMode)); if (customizationResult.map(Either::isLeft).orElse(false)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return customizationResult; }
Tx getCurrentTX() { return TransactionSynchronizationManager.isActualTransactionActive() ? (Tx) ((DefaultTransactionStatus) TransactionAspectSupport .currentTransactionStatus()).getTransaction() : null; }
public Optional<Either<String, TechnologyId>> customize(final Long nodeId, final Entity mainProduct, final GeneratorSettings settings, boolean generationMode) { Optional<Entity> maybeNode = technologyStructureTreeDataProvider.tryFind(nodeId); if (!maybeNode.isPresent()) { return Optional.of(Either.left(String.format("Cannot find generator node with id = '%s'", nodeId))); } Optional<Either<String, TechnologyId>> customizationResult = maybeNode.filter(this::isCustomizableNode).map( node -> customize(node, mainProduct, settings, generationMode)); if (customizationResult.map(Either::isLeft).orElse(false)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return customizationResult; }
public ServiceExecutionResult<ReconciliationResult> reconcile(final ReconciliationCriteria reconciliationCriteria) throws IllegalArgumentException { Assert.notNull(reconciliationCriteria, "reconciliationCriteria cannot be null"); logger.info("reconcile start"); final Set validationErrors = this.validator.validate(reconciliationCriteria); if (!validationErrors.isEmpty()) { Iterator iter = validationErrors.iterator(); while (iter.hasNext()) { logger.info("validation errors: " + iter.next()); } logger.info("reconcile start"); //since because of existing design we cannot raise exception, we can only rollback the transaction through code //OR-384 if( TransactionAspectSupport.currentTransactionStatus()!=null){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return new GeneralServiceExecutionResult<ReconciliationResult>(validationErrors); } final ReconciliationResult result = this.reconciler.reconcile(reconciliationCriteria); //(reconciliationCriteria, result); return new GeneralServiceExecutionResult<ReconciliationResult>(result); }
/** * Save document in database and creates resources if document is accepted. * * @return Created document entity. */ public Entity build() { return buildWithInvalidStrategy((buildContext) -> TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()); }
private DatastoreReaderWriter getDatastoreReadWriter() { return TransactionSynchronizationManager.isActualTransactionActive() ? ((DatastoreTransactionManager.Tx) ((DefaultTransactionStatus) TransactionAspectSupport .currentTransactionStatus()).getTransaction()).getTransaction() : this.datastore; }
private TransactionContext getTransactionContext() { return TransactionSynchronizationManager.isActualTransactionActive() ? ((SpannerTransactionManager.Tx) ((DefaultTransactionStatus) TransactionAspectSupport .currentTransactionStatus()).getTransaction()).getTransactionContext() : null; }
private void checkNoStatusOnThread() { try { TransactionAspectSupport.currentTransactionStatus(); fail("Spring transaction info is present outside of transaction boundaries"); } catch (NoTransactionException e) { // expected } }
private TransactionContext getTransactionContext() { return TransactionSynchronizationManager.isActualTransactionActive() ? ((SpannerTransactionManager.Tx) ((DefaultTransactionStatus) TransactionAspectSupport .currentTransactionStatus()).getTransaction()).getTransactionContext() : null; }
private DatastoreReaderWriter getDatastoreReadWriter() { return TransactionSynchronizationManager.isActualTransactionActive() ? ((DatastoreTransactionManager.Tx) ((DefaultTransactionStatus) TransactionAspectSupport .currentTransactionStatus()).getTransaction()).getTransaction() : this.datastore; } }
private Entity acceptTransferDocument(DocumentBuilder document, final Entity order) { document.setAccepted(); document.setField(DocumentFields.TIME, new Date()); document.setField(DocumentFieldsPFTD.ORDER, order); Entity savedDocument = document.build(); if (!savedDocument.isValid()) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return savedDocument; }
@Transactional(propagation = Propagation.REQUIRES_NEW) private Either<Entity, Void> tryValidateDailyProgress(final Entity dailyProgress) { Entity savedDailyProgress = saved(dailyProgress); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // reset id to avoid 'entity cannot be found' exceptions. savedDailyProgress.setId(dailyProgress.getId()); if (savedDailyProgress.isValid()) { return Either.right(null); } return Either.left(savedDailyProgress); }
@Override public Map<String, Object> del(String roleId) { try { if(Tools.isEmpty(roleId) || !Tools.isNumber(roleId)){ return ResponseModel.getModel("你请求的是一个冒牌接口", "failed", null); } roleDao.delRole(roleId); roleDao.delUserRole(roleId); } catch (Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); e.printStackTrace(); log.error("del role error", e); return ResponseModel.getModel("error", "falied", null); } return ResponseModel.getModel("ok", "success", null); } }
@Override public ServiceExecutionResult<SorPerson> saveOrCreateEmailForSorPersonForAllRoles(SorPerson sorPerson, String emailAddress, Type emailType) { //get all the roles for an SorPerson List<SorRole> openRoles = sorPerson.getRoles(); if (openRoles.isEmpty()) { return new GeneralServiceExecutionResult<SorPerson>((SorPerson) null); } for (SorRole r : openRoles) { r.addOrUpdateEmail(emailAddress, emailType); } ServiceExecutionResult<SorPerson> ser = this.personService.updateSorPerson(sorPerson); //OR-384 if(!ser.succeeded()){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return ser; }
@Override public ServiceExecutionResult<SorPerson> saveOrCreateEmailForSorPersonWithRoleIdentifiedByAffiliation(SorPerson sorPerson, String emailAddress, Type emailType, Type affiliationType) { List<SorRole> openRoles = sorPerson.findOpenRolesByAffiliation(affiliationType); if (openRoles.isEmpty()) { return new GeneralServiceExecutionResult<SorPerson>((SorPerson) null); } for (SorRole r : openRoles) { r.addOrUpdateEmail(emailAddress, emailType); } ServiceExecutionResult<SorPerson> ser = this.personService.updateSorPerson(sorPerson); //OR-384 if(!ser.succeeded()){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return ser; }