@Override public StaticAssetStorage findStaticAssetStorageById(final Long id) { final StaticAssetStorage[] storage = new StaticAssetStorage[1]; transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() { storage[0] = staticAssetStorageDao.readStaticAssetStorageById(id); } }, RuntimeException.class); return storage[0]; }
@Override public StaticAssetStorage readStaticAssetStorageByStaticAssetId(final Long id) { final StaticAssetStorage[] storage = new StaticAssetStorage[1]; transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() { storage[0] = staticAssetStorageDao.readStaticAssetStorageByStaticAssetId(id); } }, RuntimeException.class); return storage[0]; }
@Override public StaticAssetStorage save(final StaticAssetStorage assetStorage) { final StaticAssetStorage[] storage = new StaticAssetStorage[1]; transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() { storage[0] = staticAssetStorageDao.save(assetStorage); } }, RuntimeException.class); return storage[0]; }
@Override public void delete(final StaticAssetStorage assetStorage) { transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() { staticAssetStorageDao.delete(assetStorage); } }, RuntimeException.class); }
@Override public Blob createBlob(final InputStream uploadedFileInputStream, final long fileSize) throws IOException { final Blob[] blob = new Blob[1]; transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() { try { blob[0] = staticAssetStorageDao.createBlob(uploadedFileInputStream, fileSize); } catch (IOException e) { LOG.error("Unable to create blob from InputStream.", e); } } }, RuntimeException.class); return blob[0]; }
@Override public Blob createBlob(final MultipartFile uploadedFile) throws IOException { final Blob[] blob = new Blob[1]; transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() { try { blob[0] = staticAssetStorageDao.createBlob(uploadedFile); } catch (IOException e) { LOG.error("Unable to create blob from MultipartFile.", e); } } }, RuntimeException.class); return blob[0]; }
protected void initializeEntityManagerCache() { for (Map<String, Map<String, Object>> targetModeMap : targetModeMaps) { for (final String targetMode : targetModeMap.keySet()) { final Map<String, Object> managerMap = targetModeMap.get(targetMode); transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() throws Throwable { populateCaches(targetMode, managerMap); } }, RuntimeException.class, getTransactionManager(managerMap)); } } }
@Override public void onApplicationEvent(ContextRefreshedEvent event) { if (detectSequenceGeneratorInconsistencies) { for (Map<String, Map<String, Object>> targetModeMap : targetModeMaps) { for (final String targetMode : targetModeMap.keySet()) { final Map<String, Object> managerMap = targetModeMap.get(targetMode); PlatformTransactionManager txManager = persistenceService.getTransactionManager(managerMap); transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() throws Throwable { EntityManager em = persistenceService.getEntityManager(managerMap); Session hibernateSession = em.unwrap(Session.class); patchSequenceGeneratorInconsistencies(em, hibernateSession); } }, RuntimeException.class, txManager); } } } }
@Override public PersistenceResponse add(final PersistencePackage persistencePackage) throws ServiceException { final PersistenceResponse[] response = new PersistenceResponse[1]; try { PlatformTransactionManager transactionManager = identifyTransactionManager(persistencePackage); transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() throws Throwable { response[0] = nonTransactionalAdd(persistencePackage); } @Override public boolean shouldRetryOnTransactionLockAcquisitionFailure() { return super.shouldRetryOnTransactionLockAcquisitionFailure(); } }, RuntimeException.class, transactionManager); } catch (RuntimeException e) { if (e.getCause() instanceof ServiceException) { throw (ServiceException) e.getCause(); } throw e; } return response[0]; }
@Override public PersistenceResponse update(final PersistencePackage persistencePackage) throws ServiceException { final PersistenceResponse[] response = new PersistenceResponse[1]; try { PlatformTransactionManager transactionManager = identifyTransactionManager(persistencePackage); transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() throws Throwable { response[0] = nonTransactionalUpdate(persistencePackage); } @Override public boolean shouldRetryOnTransactionLockAcquisitionFailure() { return super.shouldRetryOnTransactionLockAcquisitionFailure(); } }, RuntimeException.class, transactionManager); } catch (RuntimeException e) { if (e.getCause() instanceof ServiceException) { throw (ServiceException) e.getCause(); } throw e; } return response[0]; }
/** * For enterprise installations, this will refresh any OfferCodes found to be out-of-date with * current sandbox status. * * @param order the order to check * @return the refreshed list of OfferCodes */ protected List<OfferCode> refreshOfferCodesIfApplicable(final Order order) { final List<OfferCode> orderOfferCodes = order.getAddedOfferCodes(); transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() { for (OfferCode offerCode : orderOfferCodes) { if (offerCode.getOffer() != null) { Long sandBoxVersionId = sandBoxHelper.getSandBoxVersionId(OfferImpl.class, offerCode.getOffer().getId()); if (sandBoxVersionId != null && !Objects.equals(sandBoxVersionId, offerCode.getOffer().getId())) { em.refresh(offerCode); } } } } @Override public boolean shouldRetryOnTransactionLockAcquisitionFailure() { return true; } }, RuntimeException.class); return orderOfferCodes; }
@Override public PersistenceResponse remove(final PersistencePackage persistencePackage) throws ServiceException { final PersistenceResponse[] response = new PersistenceResponse[1]; try { PlatformTransactionManager transactionManager = identifyTransactionManager(persistencePackage); transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() throws Throwable { response[0] = nonTransactionalRemove(persistencePackage); } @Override public boolean shouldRetryOnTransactionLockAcquisitionFailure() { return super.shouldRetryOnTransactionLockAcquisitionFailure(); } }, RuntimeException.class, transactionManager); } catch (RuntimeException e) { if (e.getCause() instanceof ServiceException) { throw (ServiceException) e.getCause(); } throw e; } return response[0]; }
@Override public boolean releaseLock(final Order order) { final boolean[] response = {false}; try { transUtil.runTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() throws Throwable { Query q = em.createNamedQuery("BC_ORDER_LOCK_RELEASE"); q.setParameter("orderId", order.getId()); q.setParameter("key", getOrderLockKey()); q.setHint(QueryHints.HINT_CACHEABLE, false); int rowsAffected = q.executeUpdate(); response[0] = rowsAffected == 1; } @Override public boolean shouldRetryOnTransactionLockAcquisitionFailure() { return true; } }, RuntimeException.class); } catch (RuntimeException e) { LOG.error(String.format("Could not release order lock (%s)", order.getId()), e); } return response[0]; }