From 0d1bd572172dd85a8dcae403182875ad6e66eb94 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Thu, 12 Jul 2007 04:15:28 +0000 Subject: [PATCH] More for AR-460: System concurrency There might be a few SDK projects that still use TransactionUtil, but this checkin gets rid of its use otherwise. I took a glance over the areas of the code that use UserTransaction directly and didn't see any transactionally wrapped code that desperately needed to be put into a retry loop (i.e. write transactions in a concurrent scenario). If you spot any that you think might qualify, let me know. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6220 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../java/org/alfresco/jcr/test/TestData.java | 9 ++- .../repo/action/ActionServiceImplTest.java | 16 ++--- .../scheduled/AbstractScheduledAction.java | 20 +++--- .../repo/admin/ConfigurationChecker.java | 11 ++- .../repo/admin/patch/AbstractPatch.java | 10 ++- .../repo/avm/AVMExpiredContentProcessor.java | 10 ++- .../org/alfresco/repo/avm/AVMServiceTest.java | 72 +++++++++---------- source/java/org/alfresco/repo/avm/Issuer.java | 10 ++- .../org/alfresco/repo/avm/OrphanReaper.java | 9 ++- .../coci/CheckOutCheckInServiceImplTest.java | 12 ++-- .../descriptor/DescriptorServiceImpl.java | 9 ++- .../dictionary/DictionaryModelTypeTest.java | 30 ++++---- .../DictionaryRepositoryBootstrap.java | 6 +- .../repo/importer/FileImporterImpl.java | 31 ++++---- .../repo/jscript/RhinoScriptTest.java | 37 +++++----- .../repo/module/ModuleComponentHelper.java | 9 ++- .../repo/node/PerformanceNodeServiceTest.java | 15 ++-- .../index/AVMFullIndexRecoveryComponent.java | 9 ++- .../node/index/AbstractReindexComponent.java | 15 ++-- .../index/FullIndexRecoveryComponent.java | 9 ++- .../IndexRemoteTransactionTrackerTest.java | 9 ++- .../index/MissingContentReindexComponent.java | 9 ++- ...stractLuceneIndexerAndSearcherFactory.java | 9 ++- .../SplitPersonCleanupBootstrapBean.java | 11 +-- .../template/TemplateServiceImplTest.java | 21 +++--- .../AlfrescoTransactionSupportTest.java | 8 +-- .../TransactionAwareSingletonTest.java | 15 ++-- .../repo/version/VersionServiceImplTest.java | 41 ++++++----- .../counter/VersionCounterServiceTest.java | 9 ++- .../repo/workflow/WorkflowInterpreter.java | 9 +-- .../jbpm/AlfrescoJobExecutorThread.java | 26 +++---- 31 files changed, 230 insertions(+), 286 deletions(-) diff --git a/source/java/org/alfresco/jcr/test/TestData.java b/source/java/org/alfresco/jcr/test/TestData.java index 24727f17ee..c0b329f47e 100644 --- a/source/java/org/alfresco/jcr/test/TestData.java +++ b/source/java/org/alfresco/jcr/test/TestData.java @@ -31,8 +31,7 @@ import java.util.Properties; import org.alfresco.repo.importer.ImporterBootstrap; import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.repo.security.authentication.MutableAuthenticationDao; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; @@ -72,9 +71,9 @@ public class TestData { final ServiceRegistry serviceRegistry = (ServiceRegistry) applicationContext.getBean(ServiceRegistry.SERVICE_REGISTRY); TransactionService transactionService = serviceRegistry.getTransactionService(); - TransactionWork createUserWork = new TransactionWork() + RetryingTransactionCallback createUserWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Bootstrap Users MutableAuthenticationDao authDAO = (MutableAuthenticationDao) applicationContext.getBean("alfDaoImpl"); @@ -93,7 +92,7 @@ public class TestData return null; } }; - TransactionUtil.executeInUserTransaction(transactionService, createUserWork); + transactionService.getRetryingTransactionHelper().doInTransaction(createUserWork); try { diff --git a/source/java/org/alfresco/repo/action/ActionServiceImplTest.java b/source/java/org/alfresco/repo/action/ActionServiceImplTest.java index 59fd4afb9f..63932ae8b8 100644 --- a/source/java/org/alfresco/repo/action/ActionServiceImplTest.java +++ b/source/java/org/alfresco/repo/action/ActionServiceImplTest.java @@ -42,7 +42,7 @@ import org.alfresco.repo.action.executer.CompositeActionExecuter; import org.alfresco.repo.action.executer.MoveActionExecuter; import org.alfresco.repo.action.executer.ScriptActionExecuter; import org.alfresco.repo.content.MimetypeMap; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.action.ActionCondition; import org.alfresco.service.cmr.action.ActionConditionDefinition; @@ -810,11 +810,10 @@ public class ActionServiceImplTest extends BaseAlfrescoSpringTest // Sleep for a bit Thread.sleep(sleepTime); - done = (TransactionUtil.executeInUserTransaction( - transactionService, - new TransactionUtil.TransactionWork() + done = (transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Boolean doWork() + public Boolean execute() { // See if the action has been performed boolean done = test.executeTest(); @@ -947,11 +946,10 @@ public class ActionServiceImplTest extends BaseAlfrescoSpringTest // Modify the compensating action so that it will also fail compensatingAction.setParameterValue(AddFeaturesActionExecuter.PARAM_ASPECT_NAME, QName.createQName("{test}badAspect")); - TransactionUtil.executeInUserTransaction( - this.transactionService, - new TransactionUtil.TransactionWork() + this.transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() + public Object execute() { try { diff --git a/source/java/org/alfresco/repo/action/scheduled/AbstractScheduledAction.java b/source/java/org/alfresco/repo/action/scheduled/AbstractScheduledAction.java index 508da104f6..bc7c1c0836 100644 --- a/source/java/org/alfresco/repo/action/scheduled/AbstractScheduledAction.java +++ b/source/java/org/alfresco/repo/action/scheduled/AbstractScheduledAction.java @@ -29,7 +29,7 @@ import java.util.Collections; import java.util.List; import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.action.ActionService; import org.alfresco.service.cmr.repository.NodeRef; @@ -461,10 +461,10 @@ public abstract class AbstractScheduledAction implements ScheduledActionDefiniti try { - TransactionUtil.executeInUserTransaction(abstractScheduledAction.getTransactionService(), - new TransactionUtil.TransactionWork() + abstractScheduledAction.getTransactionService().getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Build the full list of compensating actions // If anything goes wrong we need to do all these instead @@ -561,10 +561,10 @@ public abstract class AbstractScheduledAction implements ScheduledActionDefiniti try { - TransactionUtil.executeInUserTransaction(abstractScheduledAction.getTransactionService(), - new TransactionUtil.TransactionWork() + abstractScheduledAction.getTransactionService().getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // try action - failure triggers compensation Action action = abstractScheduledAction.getAction(nodeRef); @@ -611,10 +611,10 @@ public abstract class AbstractScheduledAction implements ScheduledActionDefiniti try { - TransactionUtil.executeInUserTransaction(abstractScheduledAction.getTransactionService(), - new TransactionUtil.TransactionWork() + abstractScheduledAction.getTransactionService().getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { try { diff --git a/source/java/org/alfresco/repo/admin/ConfigurationChecker.java b/source/java/org/alfresco/repo/admin/ConfigurationChecker.java index ad65845493..ffc1e058c6 100644 --- a/source/java/org/alfresco/repo/admin/ConfigurationChecker.java +++ b/source/java/org/alfresco/repo/admin/ConfigurationChecker.java @@ -34,9 +34,7 @@ import org.alfresco.i18n.I18NUtil; import org.alfresco.model.ContentModel; import org.alfresco.repo.importer.ImporterBootstrap; import org.alfresco.repo.node.index.FullIndexRecoveryComponent.RecoveryMode; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.InvalidStoreRefException; @@ -173,15 +171,15 @@ public class ConfigurationChecker extends AbstractLifecycleBean @Override protected void onBootstrap(ApplicationEvent event) { - TransactionWork checkWork = new TransactionWork() + RetryingTransactionCallback checkWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { check(); return null; } }; - TransactionUtil.executeInUserTransaction(transactionService, checkWork); + transactionService.getRetryingTransactionHelper().doInTransaction(checkWork); } /** @@ -216,6 +214,7 @@ public class ConfigurationChecker extends AbstractLifecycleBean // continue; //} + @SuppressWarnings("unused") NodeRef rootNodeRef = null; try { diff --git a/source/java/org/alfresco/repo/admin/patch/AbstractPatch.java b/source/java/org/alfresco/repo/admin/patch/AbstractPatch.java index 864a7a3ce2..fad28d455f 100644 --- a/source/java/org/alfresco/repo/admin/patch/AbstractPatch.java +++ b/source/java/org/alfresco/repo/admin/patch/AbstractPatch.java @@ -33,8 +33,7 @@ import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.repo.node.integrity.IntegrityChecker; import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.admin.PatchException; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.search.SearchService; @@ -340,9 +339,9 @@ public abstract class AbstractPatch implements Patch { public String doWork() throws Exception { - TransactionWork patchWork = new TransactionWork() + RetryingTransactionCallback patchWork = new RetryingTransactionCallback() { - public String doWork() throws Exception + public String execute() throws Exception { // downgrade integrity checking @@ -353,8 +352,7 @@ public abstract class AbstractPatch implements Patch return report; } }; - - return TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, patchWork); + return transactionService.getRetryingTransactionHelper().doInTransaction(patchWork); } }; String report = AuthenticationUtil.runAs(authorisedPathWork, AuthenticationUtil.getSystemUserName()); diff --git a/source/java/org/alfresco/repo/avm/AVMExpiredContentProcessor.java b/source/java/org/alfresco/repo/avm/AVMExpiredContentProcessor.java index 9b6278c0bf..33860c3567 100644 --- a/source/java/org/alfresco/repo/avm/AVMExpiredContentProcessor.java +++ b/source/java/org/alfresco/repo/avm/AVMExpiredContentProcessor.java @@ -42,8 +42,7 @@ import org.alfresco.model.ContentModel; import org.alfresco.model.WCMAppModel; import org.alfresco.repo.domain.PropertyValue; import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.repo.workflow.WorkflowModel; import org.alfresco.sandbox.SandboxConstants; import org.alfresco.service.cmr.avm.AVMNodeDescriptor; @@ -170,16 +169,15 @@ public class AVMExpiredContentProcessor { public String doWork() throws Exception { - TransactionWork expiredContentWork = new TransactionWork() + RetryingTransactionCallback expiredContentWork = new RetryingTransactionCallback() { - public String doWork() throws Exception + public String execute() throws Exception { processExpiredContent(); return null; } }; - - return TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, expiredContentWork); + return transactionService.getRetryingTransactionHelper().doInTransaction(expiredContentWork); } }; diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java index b9ba7746a1..1fc695237e 100644 --- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java +++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java @@ -56,7 +56,7 @@ import org.alfresco.repo.search.Indexer; import org.alfresco.repo.search.impl.lucene.AVMLuceneIndexer; import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; import org.alfresco.repo.transaction.RetryingTransactionHelper; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.avm.AVMBadArgumentException; import org.alfresco.service.cmr.avm.AVMCycleException; import org.alfresco.service.cmr.avm.AVMException; @@ -68,11 +68,8 @@ import org.alfresco.service.cmr.avm.LayeringDescriptor; import org.alfresco.service.cmr.avm.VersionDescriptor; import org.alfresco.service.cmr.avm.deploy.DeploymentReport; import org.alfresco.service.cmr.avm.deploy.DeploymentService; -import org.alfresco.service.cmr.avm.locking.AVMLockingException; -import org.alfresco.service.cmr.avm.locking.AVMLockingService; import org.alfresco.service.cmr.avmsync.AVMDifference; import org.alfresco.service.cmr.avmsync.AVMSyncException; -import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.remote.RepoRemote; import org.alfresco.service.cmr.repository.ContentData; @@ -1081,17 +1078,17 @@ public class AVMServiceTest extends AVMServiceTestBase action.setParameterValue(AVMRevertToVersionAction.TOREVERT, toRevert); final AVMRevertToVersionAction revert = (AVMRevertToVersionAction) fContext .getBean("avm-revert-to-version"); - class TxnWork implements TransactionUtil.TransactionWork + class TxnWork implements RetryingTransactionCallback { - public Object doWork() throws Exception + public Object execute() throws Exception { revert.execute(action, AVMNodeConverter.ToNodeRef(-1, "main:/a/b/c/foo")); return null; } - } - ; - TransactionUtil.executeInUserTransaction((TransactionService) fContext.getBean("transactionComponent"), - new TxnWork()); + }; + TransactionService transactionService = (TransactionService) fContext.getBean("transactionService"); + transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork()); + results = searchService.query(storeRef, "lucene", "TEXT:\"HEAD\""); assertEquals(0, results.length()); results.close(); @@ -1774,17 +1771,17 @@ public class AVMServiceTest extends AVMServiceTestBase action.setParameterValue(AVMRevertListAction.PARAM_VERSION, fService.getLatestSnapshotID("area")); action.setParameterValue(AVMRevertListAction.PARAM_NODE_LIST, (Serializable) paths); final AVMRevertListAction revert = (AVMRevertListAction) fContext.getBean("avm-revert-list"); - class TxnWork implements TransactionUtil.TransactionWork + class TxnWork implements RetryingTransactionCallback { - public Object doWork() throws Exception + public Object execute() throws Exception { revert.execute(action, null); return null; } - } - ; - TransactionUtil.executeInUserTransaction((TransactionService) fContext.getBean("transactionComponent"), - new TxnWork()); + }; + TransactionService transactionService = (TransactionService) fContext.getBean("transactionService"); + transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork()); + diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null); assertEquals(0, diffs.size()); System.out.println(recursiveList("area", -1, true)); @@ -1819,17 +1816,17 @@ public class AVMServiceTest extends AVMServiceTestBase versionPaths.add(new Pair(-1, "area:/a/b/c/bar")); action.setParameterValue(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable) versionPaths); final AVMUndoSandboxListAction revert = (AVMUndoSandboxListAction) fContext.getBean("avm-undo-list"); - class TxnWork implements TransactionUtil.TransactionWork + class TxnWork implements RetryingTransactionCallback { - public Object doWork() throws Exception + public Object execute() throws Exception { revert.execute(action, null); return null; } - } - ; - TransactionUtil.executeInUserTransaction((TransactionService) fContext.getBean("transactionComponent"), - new TxnWork()); + }; + TransactionService transactionService = (TransactionService) fContext.getBean("transactionService"); + transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork()); + diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null); assertEquals(0, diffs.size()); System.out.println(recursiveList("area", -1, true)); @@ -1862,18 +1859,18 @@ public class AVMServiceTest extends AVMServiceTestBase + JNDIConstants.DIR_DEFAULT_WWW + "/a"), GUID.generate(), SimpleAVMPromoteAction.NAME); action.setParameterValue(SimpleAVMPromoteAction.PARAM_TARGET_STORE, "main"); final SimpleAVMPromoteAction promote = (SimpleAVMPromoteAction) fContext.getBean("simple-avm-promote"); - class TxnWork implements TransactionUtil.TransactionWork + class TxnWork implements RetryingTransactionCallback { - public Object doWork() throws Exception + public Object execute() throws Exception { promote.execute(action, AVMNodeConverter.ToNodeRef(-1, "source:/" + JNDIConstants.DIR_DEFAULT_WWW + "/a")); return null; } - } - ; - TransactionUtil.executeInUserTransaction((TransactionService) fContext.getBean("transactionComponent"), - new TxnWork()); + }; + TransactionService transactionService = (TransactionService) fContext.getBean("transactionService"); + transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork()); + assertEquals(0, fSyncService.compare(-1, "source:/" + JNDIConstants.DIR_DEFAULT_WWW, -1, "main:/" + JNDIConstants.DIR_DEFAULT_WWW, null).size()); } @@ -1935,18 +1932,17 @@ public class AVMServiceTest extends AVMServiceTestBase "foo-staging:/" + JNDIConstants.DIR_DEFAULT_WWW, null); assertEquals(3, diffs.size()); final SimpleAVMSubmitAction action = (SimpleAVMSubmitAction) fContext.getBean("simple-avm-submit"); - class TxnWork implements TransactionUtil.TransactionWork + class TxnWork implements RetryingTransactionCallback { - public Object doWork() throws Exception + public Object execute() throws Exception { action.execute(null, AVMNodeConverter.ToNodeRef(-1, "area:/" + JNDIConstants.DIR_DEFAULT_WWW)); return null; } - } - ; - TxnWork worker = new TxnWork(); - TransactionUtil.executeInUserTransaction((TransactionService) fContext.getBean("transactionComponent"), - worker); + }; + TransactionService transactionService = (TransactionService) fContext.getBean("transactionService"); + transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork()); + diffs = fSyncService.compare(-1, "area:/" + JNDIConstants.DIR_DEFAULT_WWW, -1, "foo-staging:/" + JNDIConstants.DIR_DEFAULT_WWW, null); @@ -5355,7 +5351,7 @@ public class AVMServiceTest extends AVMServiceTestBase try { setupBasicTree(); - class TxnCallback implements RetryingTransactionHelper.RetryingTransactionCallback + class TxnCallback implements RetryingTransactionHelper.RetryingTransactionCallback { public Object execute() { @@ -5412,8 +5408,8 @@ public class AVMServiceTest extends AVMServiceTestBase } } } - RetryingTransactionHelper helper = (RetryingTransactionHelper) fContext - .getBean("retryingTransactionHelper"); + TransactionService transactionService = (TransactionService) fContext.getBean("transactionService"); + RetryingTransactionHelper helper = transactionService.getRetryingTransactionHelper(); helper.doInTransaction(new TxnCallback(), false); assertNotNull(fService.lookup(-1, "main:/layer/b/c/groo")); } diff --git a/source/java/org/alfresco/repo/avm/Issuer.java b/source/java/org/alfresco/repo/avm/Issuer.java index 7ac949a9d1..07219d56d2 100644 --- a/source/java/org/alfresco/repo/avm/Issuer.java +++ b/source/java/org/alfresco/repo/avm/Issuer.java @@ -23,7 +23,7 @@ package org.alfresco.repo.avm; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.transaction.TransactionService; /** @@ -73,16 +73,14 @@ public class Issuer */ public void initialize() { - class TxnWork implements TransactionUtil.TransactionWork + class TxnWork implements RetryingTransactionCallback { - public Long doWork() throws Exception + public Long execute() throws Exception { return AVMDAOs.Instance().fIssuerDAO.getIssuerValue(fName); } } - Long result = TransactionUtil.executeInUserTransaction(fTransactionService, - new TxnWork(), - true); + Long result = fTransactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork(), true); if (result == null) { fNext = 0L; diff --git a/source/java/org/alfresco/repo/avm/OrphanReaper.java b/source/java/org/alfresco/repo/avm/OrphanReaper.java index 037cb952a3..5fbd637d87 100644 --- a/source/java/org/alfresco/repo/avm/OrphanReaper.java +++ b/source/java/org/alfresco/repo/avm/OrphanReaper.java @@ -27,7 +27,7 @@ import java.util.LinkedList; import java.util.List; import org.alfresco.repo.domain.DbAccessControlList; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.transaction.TransactionService; import org.apache.log4j.Logger; import org.hibernate.SessionFactory; @@ -242,9 +242,9 @@ public class OrphanReaper */ public void doBatch() { - class TxnWork implements TransactionUtil.TransactionWork + class TxnWork implements RetryingTransactionCallback { - public Object doWork() + public Object execute() throws Exception { if (fPurgeQueue == null) @@ -341,8 +341,7 @@ public class OrphanReaper } try { - TransactionUtil.executeInUserTransaction(fTransactionService, - new TxnWork()); + fTransactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork()); } catch (Exception e) { diff --git a/source/java/org/alfresco/repo/coci/CheckOutCheckInServiceImplTest.java b/source/java/org/alfresco/repo/coci/CheckOutCheckInServiceImplTest.java index a6fc12c183..0c6c52c23d 100644 --- a/source/java/org/alfresco/repo/coci/CheckOutCheckInServiceImplTest.java +++ b/source/java/org/alfresco/repo/coci/CheckOutCheckInServiceImplTest.java @@ -26,17 +26,15 @@ package org.alfresco.repo.coci; import java.io.Serializable; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.alfresco.model.ContentModel; import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.security.authentication.AuthenticationComponent; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.repo.version.VersionModel; import org.alfresco.service.cmr.coci.CheckOutCheckInService; import org.alfresco.service.cmr.lock.LockService; -import org.alfresco.service.cmr.repository.AssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentReader; @@ -419,11 +417,10 @@ public class CheckOutCheckInServiceImplTest extends BaseSpringTest final NodeRef finalNodeRef = origNodeRef; - TransactionUtil.executeInUserTransaction( - this.transactionService, - new TransactionUtil.TransactionWork() + this.transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() + public Object execute() { NodeRef wk2 = CheckOutCheckInServiceImplTest.this.cociService.getWorkingCopy(finalNodeRef); assertNotNull(wk2); @@ -432,7 +429,6 @@ public class CheckOutCheckInServiceImplTest extends BaseSpringTest CheckOutCheckInServiceImplTest.this.cociService.cancelCheckout(workingCopy); return null; } - }); NodeRef wk3 = this.cociService.getWorkingCopy(this.nodeRef); diff --git a/source/java/org/alfresco/repo/descriptor/DescriptorServiceImpl.java b/source/java/org/alfresco/repo/descriptor/DescriptorServiceImpl.java index ccc76b9980..3700f6a487 100644 --- a/source/java/org/alfresco/repo/descriptor/DescriptorServiceImpl.java +++ b/source/java/org/alfresco/repo/descriptor/DescriptorServiceImpl.java @@ -35,8 +35,7 @@ import java.util.Properties; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.repo.importer.ImporterBootstrap; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; @@ -163,9 +162,9 @@ public class DescriptorServiceImpl extends AbstractLifecycleBean implements Desc { // initialise the repository descriptor // note: this requires that the repository schema has already been initialised - TransactionWork createDescriptorWork = new TransactionUtil.TransactionWork() + RetryingTransactionCallback createDescriptorWork = new RetryingTransactionCallback() { - public Descriptor doWork() + public Descriptor execute() { // initialise license service (if installed) initialiseLicenseService(); @@ -180,7 +179,7 @@ public class DescriptorServiceImpl extends AbstractLifecycleBean implements Desc return createInstalledRepositoryDescriptor(); } }; - installedRepoDescriptor = TransactionUtil.executeInUserTransaction(transactionService, createDescriptorWork); + installedRepoDescriptor = transactionService.getRetryingTransactionHelper().doInTransaction(createDescriptorWork); } @Override diff --git a/source/java/org/alfresco/repo/dictionary/DictionaryModelTypeTest.java b/source/java/org/alfresco/repo/dictionary/DictionaryModelTypeTest.java index 1771c36ef2..edc1bcdcd0 100644 --- a/source/java/org/alfresco/repo/dictionary/DictionaryModelTypeTest.java +++ b/source/java/org/alfresco/repo/dictionary/DictionaryModelTypeTest.java @@ -26,7 +26,7 @@ package org.alfresco.repo.dictionary; import org.alfresco.model.ContentModel; import org.alfresco.repo.content.MimetypeMap; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.coci.CheckOutCheckInService; import org.alfresco.service.cmr.dictionary.DictionaryException; import org.alfresco.service.cmr.dictionary.DictionaryService; @@ -180,9 +180,9 @@ public class DictionaryModelTypeTest extends BaseAlfrescoSpringTest setComplete(); endTransaction(); - final NodeRef workingCopy = TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + final NodeRef workingCopy = transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public NodeRef doWork() throws Exception + public NodeRef execute() throws Exception { // Check that the meta data has been extracted from the model assertEquals(QName.createQName("{http://www.alfresco.org/test/testmodel1/1.0}testModelOne"), @@ -210,9 +210,9 @@ public class DictionaryModelTypeTest extends BaseAlfrescoSpringTest } }); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Check that the policy has not been fired since we have updated a working copy assertEquals("1.0", DictionaryModelTypeTest.this.nodeService.getProperty(workingCopy, ContentModel.PROP_MODEL_VERSION)); @@ -223,9 +223,9 @@ public class DictionaryModelTypeTest extends BaseAlfrescoSpringTest } }); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Now check that the model has been updated assertEquals("1.1", DictionaryModelTypeTest.this.nodeService.getProperty(modelNode, ContentModel.PROP_MODEL_VERSION)); @@ -270,9 +270,9 @@ public class DictionaryModelTypeTest extends BaseAlfrescoSpringTest setComplete(); endTransaction(); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // The model should not yet be loaded try @@ -293,9 +293,9 @@ public class DictionaryModelTypeTest extends BaseAlfrescoSpringTest } }); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // The model should now be loaded assertNotNull(DictionaryModelTypeTest.this.dictionaryService.getModel(TEST_MODEL_ONE)); @@ -307,9 +307,9 @@ public class DictionaryModelTypeTest extends BaseAlfrescoSpringTest } }); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // The model should not be loaded try @@ -330,9 +330,9 @@ public class DictionaryModelTypeTest extends BaseAlfrescoSpringTest } }); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // The model should now be loaded assertNotNull(DictionaryModelTypeTest.this.dictionaryService.getModel(TEST_MODEL_ONE)); diff --git a/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java b/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java index 1a088aab31..2e28135644 100644 --- a/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java +++ b/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java @@ -31,7 +31,7 @@ import java.util.Map; import org.alfresco.model.ContentModel; import org.alfresco.repo.security.authentication.AuthenticationComponent; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.NodeRef; @@ -131,9 +131,9 @@ public class DictionaryRepositoryBootstrap @SuppressWarnings("unchecked") public void bootstrap() { - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { DictionaryRepositoryBootstrap.this.authenticationComponent.setCurrentUser( DictionaryRepositoryBootstrap.this.authenticationComponent.getSystemUserName()); diff --git a/source/java/org/alfresco/repo/importer/FileImporterImpl.java b/source/java/org/alfresco/repo/importer/FileImporterImpl.java index 9b56919b24..46634a1376 100644 --- a/source/java/org/alfresco/repo/importer/FileImporterImpl.java +++ b/source/java/org/alfresco/repo/importer/FileImporterImpl.java @@ -35,8 +35,8 @@ import java.util.Map; import org.alfresco.model.ApplicationModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentData; @@ -170,25 +170,26 @@ public class FileImporterImpl implements FileImporter boolean recurse, final String containerName) throws Throwable { + RetryingTransactionHelper txnHelper = transactionService.getRetryingTransactionHelper(); if (containerName != null) { - TransactionWork createDirectoryWork = new TransactionWork() + RetryingTransactionCallback createDirectoryWork = new RetryingTransactionCallback() { - public NodeRef doWork() throws Exception + public NodeRef execute() throws Exception { return createDirectory(container, containerName, containerName); } }; - NodeRef newContainer = TransactionUtil.executeInUserTransaction(transactionService, createDirectoryWork); + NodeRef newContainer = txnHelper.doInTransaction(createDirectoryWork); return create(counter, newContainer, file, filter, recurse, null); } if (file.isDirectory()) { counter.increment(); - TransactionWork createDirectoryWork = new TransactionWork() + RetryingTransactionCallback createDirectoryWork = new RetryingTransactionCallback() { - public NodeRef doWork() throws Exception + public NodeRef execute() throws Exception { return createDirectory(container, file); } @@ -196,13 +197,11 @@ public class FileImporterImpl implements FileImporter NodeRef directoryNodeRef = null; if (txnPerFile) { - directoryNodeRef = TransactionUtil.executeInUserTransaction( - transactionService, - createDirectoryWork); + directoryNodeRef = txnHelper.doInTransaction(createDirectoryWork); } else { - directoryNodeRef = createDirectoryWork.doWork(); + directoryNodeRef = createDirectoryWork.execute(); } if (recurse) @@ -219,9 +218,9 @@ public class FileImporterImpl implements FileImporter else { counter.increment(); - TransactionWork createFileWork = new TransactionWork() + RetryingTransactionCallback createFileWork = new RetryingTransactionCallback() { - public NodeRef doWork() throws Exception + public NodeRef execute() throws Exception { return createFile(container, file); } @@ -229,13 +228,11 @@ public class FileImporterImpl implements FileImporter NodeRef fileNodeRef = null; if (txnPerFile) { - fileNodeRef = TransactionUtil.executeInUserTransaction( - transactionService, - createFileWork); + fileNodeRef = txnHelper.doInTransaction(createFileWork); } else { - fileNodeRef = createFileWork.doWork(); + fileNodeRef = createFileWork.execute(); } return fileNodeRef; } diff --git a/source/java/org/alfresco/repo/jscript/RhinoScriptTest.java b/source/java/org/alfresco/repo/jscript/RhinoScriptTest.java index 6733467207..faffe1e9a7 100644 --- a/source/java/org/alfresco/repo/jscript/RhinoScriptTest.java +++ b/source/java/org/alfresco/repo/jscript/RhinoScriptTest.java @@ -37,7 +37,7 @@ import org.alfresco.repo.dictionary.DictionaryDAO; import org.alfresco.repo.dictionary.M2Model; import org.alfresco.repo.node.BaseNodeServiceTest; import org.alfresco.repo.security.authentication.AuthenticationComponent; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentService; @@ -113,11 +113,10 @@ public class RhinoScriptTest extends TestCase public void testRhinoIntegration() { - TransactionUtil.executeInUserTransaction( - transactionService, - new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // check that rhino script engine is available Context cx = Context.enter(); @@ -161,11 +160,10 @@ public class RhinoScriptTest extends TestCase public void testJSObjectWrapping() { - TransactionUtil.executeInUserTransaction( - transactionService, - new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { StoreRef store = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "rhino_" + System.currentTimeMillis()); NodeRef root = nodeService.getRootNode(store); @@ -215,11 +213,10 @@ public class RhinoScriptTest extends TestCase public void testScriptService() { - TransactionUtil.executeInUserTransaction( - transactionService, - new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { StoreRef store = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "rhino_" + System.currentTimeMillis()); NodeRef root = nodeService.getRootNode(store); @@ -274,11 +271,10 @@ public class RhinoScriptTest extends TestCase public void testScriptActions() { - TransactionUtil.executeInUserTransaction( - transactionService, - new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { StoreRef store = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "rhino_" + System.currentTimeMillis()); NodeRef root = nodeService.getRootNode(store); @@ -329,11 +325,10 @@ public class RhinoScriptTest extends TestCase public void xtestScriptActionsMail() { - TransactionUtil.executeInUserTransaction( - transactionService, - new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { StoreRef store = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "rhino_" + System.currentTimeMillis()); NodeRef root = nodeService.getRootNode(store); diff --git a/source/java/org/alfresco/repo/module/ModuleComponentHelper.java b/source/java/org/alfresco/repo/module/ModuleComponentHelper.java index 6765d712ea..a70b76dda9 100644 --- a/source/java/org/alfresco/repo/module/ModuleComponentHelper.java +++ b/source/java/org/alfresco/repo/module/ModuleComponentHelper.java @@ -40,8 +40,7 @@ import org.alfresco.i18n.I18NUtil; import org.alfresco.repo.admin.registry.RegistryKey; import org.alfresco.repo.admin.registry.RegistryService; import org.alfresco.repo.security.authentication.AuthenticationComponent; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.module.ModuleDependency; import org.alfresco.service.cmr.module.ModuleDetails; @@ -215,15 +214,15 @@ public class ModuleComponentHelper final Set startedModules = new HashSet(2); for (final ModuleDetails module : modules) { - TransactionWork startModuleWork = new TransactionWork() + RetryingTransactionCallback startModuleWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { startModule(module, startedModules, executedComponents); return null; } }; - TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, startModuleWork); + transactionService.getRetryingTransactionHelper().doInTransaction(startModuleWork); } // Check for missing modules. diff --git a/source/java/org/alfresco/repo/node/PerformanceNodeServiceTest.java b/source/java/org/alfresco/repo/node/PerformanceNodeServiceTest.java index 0c9cb4fd0c..fca70bd475 100644 --- a/source/java/org/alfresco/repo/node/PerformanceNodeServiceTest.java +++ b/source/java/org/alfresco/repo/node/PerformanceNodeServiceTest.java @@ -37,8 +37,7 @@ import org.alfresco.repo.dictionary.DictionaryDAO; import org.alfresco.repo.dictionary.M2Model; import org.alfresco.repo.node.integrity.IntegrityChecker; import org.alfresco.repo.transaction.AlfrescoTransactionSupport; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentService; @@ -109,9 +108,9 @@ public class PerformanceNodeServiceTest extends TestCase contentService = (ContentService) applicationContext.getBean("contentService"); // create a first store directly - TransactionWork createStoreWork = new TransactionWork() + RetryingTransactionCallback createStoreWork = new RetryingTransactionCallback() { - public NodeRef doWork() + public NodeRef execute() { StoreRef storeRef = nodeService.createStore( StoreRef.PROTOCOL_WORKSPACE, @@ -119,7 +118,7 @@ public class PerformanceNodeServiceTest extends TestCase return nodeService.getRootNode(storeRef); } }; - rootNodeRef = TransactionUtil.executeInUserTransaction(txnService, createStoreWork); + rootNodeRef = txnService.getRetryingTransactionHelper().doInTransaction(createStoreWork); } @Override @@ -165,16 +164,16 @@ public class PerformanceNodeServiceTest extends TestCase startTime = System.currentTimeMillis(); // ensure that we execute the node tree building in a transaction - TransactionWork buildChildrenWork = new TransactionWork() + RetryingTransactionCallback buildChildrenWork = new RetryingTransactionCallback() { - public Object doWork() + public Object execute() { IntegrityChecker.setWarnInTransaction(); buildNodeChildren(rootNodeRef, 1, testDepth, testChildCount); return null; } }; - TransactionUtil.executeInUserTransaction(txnService, buildChildrenWork); + txnService.getRetryingTransactionHelper().doInTransaction(buildChildrenWork); long endTime = System.currentTimeMillis(); diff --git a/source/java/org/alfresco/repo/node/index/AVMFullIndexRecoveryComponent.java b/source/java/org/alfresco/repo/node/index/AVMFullIndexRecoveryComponent.java index 4666e318e9..c47b872852 100644 --- a/source/java/org/alfresco/repo/node/index/AVMFullIndexRecoveryComponent.java +++ b/source/java/org/alfresco/repo/node/index/AVMFullIndexRecoveryComponent.java @@ -4,8 +4,7 @@ import java.util.List; import org.alfresco.repo.node.index.FullIndexRecoveryComponent.RecoveryMode; import org.alfresco.repo.search.AVMSnapShotTriggeredIndexingMethodInterceptor; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.avm.AVMService; import org.alfresco.service.cmr.avm.AVMStoreDescriptor; import org.apache.commons.logging.Log; @@ -199,9 +198,9 @@ public class AVMFullIndexRecoveryComponent extends AbstractReindexComponent logger.debug("Reindexing avm store: " + store + " snapshot id " + id); } - TransactionWork reindexWork = new TransactionWork() + RetryingTransactionCallback reindexWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { if (!avmSnapShotTriggeredIndexingMethodInterceptor.isSnapshotIndexed(store, id)) { @@ -211,7 +210,7 @@ public class AVMFullIndexRecoveryComponent extends AbstractReindexComponent return null; } }; - TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, reindexWork, true); + transactionService.getRetryingTransactionHelper().doInTransaction(reindexWork, true); // done } diff --git a/source/java/org/alfresco/repo/node/index/AbstractReindexComponent.java b/source/java/org/alfresco/repo/node/index/AbstractReindexComponent.java index 5c742b5f26..1776b79ab8 100644 --- a/source/java/org/alfresco/repo/node/index/AbstractReindexComponent.java +++ b/source/java/org/alfresco/repo/node/index/AbstractReindexComponent.java @@ -39,8 +39,7 @@ import org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexer; import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.transaction.TransactionServiceImpl; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; @@ -210,15 +209,15 @@ public abstract class AbstractReindexComponent implements IndexRecovery auth = AuthenticationUtil.getCurrentAuthentication(); // authenticate as the system user authenticationComponent.setSystemUserAsCurrentUser(); - TransactionWork reindexWork = new TransactionWork() + RetryingTransactionCallback reindexWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { reindexImpl(); return null; } }; - TransactionUtil.executeInUserTransaction(transactionService, reindexWork); + transactionService.getRetryingTransactionHelper().doInTransaction(reindexWork); } finally { @@ -426,9 +425,9 @@ public abstract class AbstractReindexComponent implements IndexRecovery logger.debug("Reindexing transaction: " + txnId); } - TransactionWork reindexWork = new TransactionWork() + RetryingTransactionCallback reindexWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // get the node references pertinent to the transaction List nodeRefs = nodeDaoService.getTxnChanges(txnId); @@ -461,7 +460,7 @@ public abstract class AbstractReindexComponent implements IndexRecovery return null; } }; - TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, reindexWork, true); + transactionService.getRetryingTransactionHelper().doInTransaction(reindexWork, true); // done } } \ No newline at end of file diff --git a/source/java/org/alfresco/repo/node/index/FullIndexRecoveryComponent.java b/source/java/org/alfresco/repo/node/index/FullIndexRecoveryComponent.java index 1bea91b9db..f4b725127d 100644 --- a/source/java/org/alfresco/repo/node/index/FullIndexRecoveryComponent.java +++ b/source/java/org/alfresco/repo/node/index/FullIndexRecoveryComponent.java @@ -29,8 +29,7 @@ import java.util.List; import org.alfresco.i18n.I18NUtil; import org.alfresco.model.ContentModel; import org.alfresco.repo.domain.Transaction; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef.Status; @@ -243,9 +242,9 @@ public class FullIndexRecoveryComponent extends AbstractReindexComponent logger.debug("Reindexing transaction: " + txnId); } - TransactionWork reindexWork = new TransactionWork() + RetryingTransactionCallback reindexWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // get the node references pertinent to the transaction List nodeRefs = nodeDaoService.getTxnChanges(txnId); @@ -278,7 +277,7 @@ public class FullIndexRecoveryComponent extends AbstractReindexComponent return null; } }; - TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, reindexWork, true); + transactionService.getRetryingTransactionHelper().doInTransaction(reindexWork, true); // done } } \ No newline at end of file diff --git a/source/java/org/alfresco/repo/node/index/IndexRemoteTransactionTrackerTest.java b/source/java/org/alfresco/repo/node/index/IndexRemoteTransactionTrackerTest.java index 30a93e2cd2..30da300800 100644 --- a/source/java/org/alfresco/repo/node/index/IndexRemoteTransactionTrackerTest.java +++ b/source/java/org/alfresco/repo/node/index/IndexRemoteTransactionTrackerTest.java @@ -33,8 +33,7 @@ import org.alfresco.repo.search.Indexer; import org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexer; import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.repo.transaction.TransactionServiceImpl; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.repository.ChildAssociationRef; @@ -95,9 +94,9 @@ public class IndexRemoteTransactionTrackerTest extends TestCase authenticationComponent.setSystemUserAsCurrentUser(); // disable indexing - TransactionWork createNodeWork = new TransactionWork() + RetryingTransactionCallback createNodeWork = new RetryingTransactionCallback() { - public ChildAssociationRef doWork() throws Exception + public ChildAssociationRef execute() throws Exception { StoreRef storeRef = new StoreRef("test", getName() + "-" + System.currentTimeMillis()); NodeRef rootNodeRef = null; @@ -117,7 +116,7 @@ public class IndexRemoteTransactionTrackerTest extends TestCase return childAssocRef; } }; - ChildAssociationRef childAssocRef = TransactionUtil.executeInUserTransaction(transactionService, createNodeWork); + ChildAssociationRef childAssocRef = transactionService.getRetryingTransactionHelper().doInTransaction(createNodeWork); } public void testSetup() throws Exception diff --git a/source/java/org/alfresco/repo/node/index/MissingContentReindexComponent.java b/source/java/org/alfresco/repo/node/index/MissingContentReindexComponent.java index 956c9fddfc..653698254a 100644 --- a/source/java/org/alfresco/repo/node/index/MissingContentReindexComponent.java +++ b/source/java/org/alfresco/repo/node/index/MissingContentReindexComponent.java @@ -27,8 +27,7 @@ package org.alfresco.repo.node.index; import java.util.List; import org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.search.ResultSet; @@ -113,15 +112,15 @@ public class MissingContentReindexComponent extends AbstractReindexComponent { final NodeRef childNodeRef = row.getNodeRef(); // prompt for a reindex - it might fail again, but we just keep plugging away - TransactionWork reindexWork = new TransactionWork() + RetryingTransactionCallback reindexWork = new RetryingTransactionCallback() { - public Object doWork() + public Object execute() { indexer.updateNode(childNodeRef); return null; } }; - TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, reindexWork); + transactionService.getRetryingTransactionHelper().doInTransaction(reindexWork); // check if we have to break out if (isShuttingDown()) { diff --git a/source/java/org/alfresco/repo/search/impl/lucene/AbstractLuceneIndexerAndSearcherFactory.java b/source/java/org/alfresco/repo/search/impl/lucene/AbstractLuceneIndexerAndSearcherFactory.java index ed837dfa15..7f04dce309 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/AbstractLuceneIndexerAndSearcherFactory.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/AbstractLuceneIndexerAndSearcherFactory.java @@ -46,8 +46,7 @@ import org.alfresco.repo.search.impl.lucene.index.IndexInfo; import org.alfresco.repo.search.transaction.SimpleTransaction; import org.alfresco.repo.search.transaction.SimpleTransactionManager; import org.alfresco.repo.transaction.AlfrescoTransactionSupport; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.transaction.TransactionService; @@ -965,15 +964,15 @@ public abstract class AbstractLuceneIndexerAndSearcherFactory implements LuceneI */ public void backup() { - TransactionWork backupWork = new TransactionWork() + RetryingTransactionCallback backupWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { backupImpl(); return null; } }; - TransactionUtil.executeInUserTransaction(transactionService, backupWork); + transactionService.getRetryingTransactionHelper().doInTransaction(backupWork); } private void backupImpl() diff --git a/source/java/org/alfresco/repo/security/person/SplitPersonCleanupBootstrapBean.java b/source/java/org/alfresco/repo/security/person/SplitPersonCleanupBootstrapBean.java index 43efa922b9..5c78d669d5 100644 --- a/source/java/org/alfresco/repo/security/person/SplitPersonCleanupBootstrapBean.java +++ b/source/java/org/alfresco/repo/security/person/SplitPersonCleanupBootstrapBean.java @@ -19,7 +19,7 @@ package org.alfresco.repo.security.person; import java.util.Set; import org.alfresco.model.ContentModel; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; @@ -78,11 +78,10 @@ public class SplitPersonCleanupBootstrapBean extends AbstractLifecycleBean */ private int removePeopleWithGUIDBasedIds() { - Integer count = TransactionUtil.executeInUserTransaction(transactionService, - new TransactionUtil.TransactionWork() + Integer count = transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - - public Integer doWork() throws Exception + public Integer execute() throws Exception { int count = 0; // A GUID should be 36 chars @@ -121,6 +120,7 @@ public class SplitPersonCleanupBootstrapBean extends AbstractLifecycleBean String guidString = uid.substring(uid.length() - 36); try { + @SuppressWarnings("unused") UUID id = new UUID(guidString); // We have a valid guid. return true; @@ -140,6 +140,7 @@ public class SplitPersonCleanupBootstrapBean extends AbstractLifecycleBean guidString = guidString.substring(1, 37); try { + @SuppressWarnings("unused") UUID id = new UUID(guidString); // We have a valid guid. return true; diff --git a/source/java/org/alfresco/repo/template/TemplateServiceImplTest.java b/source/java/org/alfresco/repo/template/TemplateServiceImplTest.java index e9e86a65c7..319cb27491 100644 --- a/source/java/org/alfresco/repo/template/TemplateServiceImplTest.java +++ b/source/java/org/alfresco/repo/template/TemplateServiceImplTest.java @@ -34,11 +34,9 @@ import org.alfresco.repo.dictionary.DictionaryComponent; import org.alfresco.repo.dictionary.DictionaryDAO; import org.alfresco.repo.dictionary.M2Model; import org.alfresco.repo.node.BaseNodeServiceTest; -import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.repo.security.authentication.AuthenticationComponent; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; @@ -54,7 +52,6 @@ public class TemplateServiceImplTest extends TestCase { private static final ApplicationContext ctx = ApplicationContextHelper.getApplicationContext(); - private ContentService contentService; private TemplateService templateService; private NodeService nodeService; private TransactionService transactionService; @@ -68,11 +65,10 @@ public class TemplateServiceImplTest extends TestCase { super.setUp(); - transactionService = (TransactionService)this.ctx.getBean("transactionComponent"); - contentService = (ContentService)this.ctx.getBean("contentService"); - nodeService = (NodeService)this.ctx.getBean("nodeService"); - templateService = (TemplateService)this.ctx.getBean("templateService"); - serviceRegistry = (ServiceRegistry)this.ctx.getBean("ServiceRegistry"); + transactionService = (TransactionService)ctx.getBean("transactionComponent"); + nodeService = (NodeService)ctx.getBean("nodeService"); + templateService = (TemplateService)ctx.getBean("templateService"); + serviceRegistry = (ServiceRegistry)ctx.getBean("ServiceRegistry"); this.authenticationComponent = (AuthenticationComponent)ctx.getBean("authenticationComponent"); this.authenticationComponent.setSystemUserAsCurrentUser(); @@ -106,12 +102,11 @@ public class TemplateServiceImplTest extends TestCase public void testTemplates() { - TransactionUtil.executeInUserTransaction( - transactionService, - new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { @SuppressWarnings("unchecked") - public Object doWork() throws Exception + public Object execute() throws Exception { StoreRef store = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "template_" + System.currentTimeMillis()); NodeRef root = nodeService.getRootNode(store); diff --git a/source/java/org/alfresco/repo/transaction/AlfrescoTransactionSupportTest.java b/source/java/org/alfresco/repo/transaction/AlfrescoTransactionSupportTest.java index 505d7aa08a..667a90922e 100644 --- a/source/java/org/alfresco/repo/transaction/AlfrescoTransactionSupportTest.java +++ b/source/java/org/alfresco/repo/transaction/AlfrescoTransactionSupportTest.java @@ -31,7 +31,7 @@ import javax.transaction.UserTransaction; import junit.framework.TestCase; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.ApplicationContextHelper; @@ -224,9 +224,9 @@ public class AlfrescoTransactionSupportTest extends TestCase } }; // start a transaction - TransactionWork bindWork = new TransactionWork() + RetryingTransactionCallback bindWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // just bind the listener to the transaction AlfrescoTransactionSupport.bindListener(dummyListener); @@ -235,7 +235,7 @@ public class AlfrescoTransactionSupportTest extends TestCase } }; // kick it all off - TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, bindWork); + transactionService.getRetryingTransactionHelper().doInTransaction(bindWork); // make sure that the binding all worked assertTrue("Expected callbacks not all processed: " + testList, testList.size() == 0); diff --git a/source/java/org/alfresco/repo/transaction/TransactionAwareSingletonTest.java b/source/java/org/alfresco/repo/transaction/TransactionAwareSingletonTest.java index acfb19656f..2cd37782a5 100644 --- a/source/java/org/alfresco/repo/transaction/TransactionAwareSingletonTest.java +++ b/source/java/org/alfresco/repo/transaction/TransactionAwareSingletonTest.java @@ -30,7 +30,7 @@ import javax.transaction.UserTransaction; import junit.framework.TestCase; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.ApplicationContextHelper; import org.springframework.context.ApplicationContext; @@ -212,22 +212,15 @@ public class TransactionAwareSingletonTest extends TestCase private void check(final Integer expected, boolean inTransaction) { - TransactionWork checkWork = new TransactionWork() + RetryingTransactionCallback checkWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { Integer actual = singleton.get(); assertTrue("Values don't match: " + expected + " != " + actual, actual == expected); return null; } }; - if (inTransaction) - { - TransactionUtil.executeInUserTransaction(transactionService, checkWork); - } - else - { - TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, checkWork); - } + transactionService.getRetryingTransactionHelper().doInTransaction(checkWork, false, !inTransaction); } } diff --git a/source/java/org/alfresco/repo/version/VersionServiceImplTest.java b/source/java/org/alfresco/repo/version/VersionServiceImplTest.java index a78d2375c2..8073813c43 100644 --- a/source/java/org/alfresco/repo/version/VersionServiceImplTest.java +++ b/source/java/org/alfresco/repo/version/VersionServiceImplTest.java @@ -34,7 +34,6 @@ import java.util.Set; import org.alfresco.model.ApplicationModel; import org.alfresco.model.ContentModel; import org.alfresco.repo.security.authentication.AuthenticationComponent; -import org.alfresco.repo.transaction.TransactionUtil; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.model.FileFolderService; @@ -472,9 +471,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest setComplete(); endTransaction(); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Check that the initial version has not been created VersionHistory versionHistory = VersionServiceImplTest.this.versionService.getVersionHistory(versionableNode); @@ -491,9 +490,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest }); // Now lets have a look and make sure we have the correct number of entries in the version history - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { VersionHistory versionHistory = VersionServiceImplTest.this.versionService.getVersionHistory(versionableNode); assertNotNull(versionHistory); @@ -516,9 +515,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest // The initial version should have been created now - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Add some content ContentWriter contentWriter = VersionServiceImplTest.this.contentService.getWriter(versionableNode, ContentModel.PROP_CONTENT, true); @@ -530,9 +529,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest }); // Now lets have a look and make sure we have the correct number of entries in the version history - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { VersionHistory versionHistory = VersionServiceImplTest.this.versionService.getVersionHistory(versionableNode); assertNotNull(versionHistory); @@ -564,9 +563,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest // The initial version should NOT have been created - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { VersionHistory versionHistory = VersionServiceImplTest.this.versionService.getVersionHistory(nodeRef); assertNull(versionHistory); @@ -592,9 +591,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest setComplete(); endTransaction(); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Check that the version history has been created VersionHistory versionHistory = VersionServiceImplTest.this.versionService.getVersionHistory(nodeRef); @@ -608,9 +607,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest } }); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Check that the version history has been removed VersionHistory versionHistory = VersionServiceImplTest.this.versionService.getVersionHistory(nodeRef); @@ -623,9 +622,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest } }); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Check that the version history has been created VersionHistory versionHistory = VersionServiceImplTest.this.versionService.getVersionHistory(nodeRef); @@ -655,9 +654,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest setComplete(); endTransaction(); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { VersionHistory versionHistory = VersionServiceImplTest.this.versionService.getVersionHistory(nodeRef); assertNotNull(versionHistory); @@ -670,9 +669,9 @@ public class VersionServiceImplTest extends BaseVersionStoreTest } }); - TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionUtil.TransactionWork() + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // Get the archived noderef NodeRef archivedNodeRef = VersionServiceImplTest.this.nodeArchiveService.getArchivedNode(nodeRef); diff --git a/source/java/org/alfresco/repo/version/common/counter/VersionCounterServiceTest.java b/source/java/org/alfresco/repo/version/common/counter/VersionCounterServiceTest.java index 4b2f4ccaf2..925d7b68c5 100644 --- a/source/java/org/alfresco/repo/version/common/counter/VersionCounterServiceTest.java +++ b/source/java/org/alfresco/repo/version/common/counter/VersionCounterServiceTest.java @@ -32,8 +32,7 @@ import javax.transaction.UserTransaction; import junit.framework.TestCase; import org.alfresco.repo.security.authentication.AuthenticationComponent; -import org.alfresco.repo.transaction.TransactionUtil; -import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; @@ -157,9 +156,9 @@ public class VersionCounterServiceTest extends TestCase @Override public void run() { - TransactionWork versionWork = new TransactionWork() + RetryingTransactionCallback versionWork = new RetryingTransactionCallback() { - public Object doWork() throws Exception + public Object execute() throws Exception { // wait for all other threads to enter into their transactions startSignal.countDown(); @@ -174,7 +173,7 @@ public class VersionCounterServiceTest extends TestCase }; try { - TransactionUtil.executeInNonPropagatingUserTransaction(transactionService, versionWork, false); + transactionService.getRetryingTransactionHelper().doInTransaction(versionWork, false); error = null; } catch (Throwable e) diff --git a/source/java/org/alfresco/repo/workflow/WorkflowInterpreter.java b/source/java/org/alfresco/repo/workflow/WorkflowInterpreter.java index 3fdb5f3656..73302c0aa2 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowInterpreter.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowInterpreter.java @@ -43,7 +43,7 @@ import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.security.authority.AuthorityDAO; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.avm.AVMNodeDescriptor; import org.alfresco.service.cmr.avm.AVMService; import org.alfresco.service.cmr.avmsync.AVMDifference; @@ -281,13 +281,14 @@ public class WorkflowInterpreter extends AbstractLifecycleBean { public String doWork() throws Exception { - return TransactionUtil.executeInUserTransaction(transactionService, new TransactionUtil.TransactionWork() + RetryingTransactionCallback txnWork = new RetryingTransactionCallback() { - public String doWork() throws Exception + public String execute() throws Exception { return executeCommand(line); } - }); + }; + return transactionService.getRetryingTransactionHelper().doInTransaction(txnWork); } }, username); } diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java index 0a680f7d6b..c31cf4aef8 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java @@ -24,7 +24,7 @@ */ package org.alfresco.repo.workflow.jbpm; -import org.alfresco.repo.transaction.TransactionUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.jbpm.JbpmConfiguration; import org.jbpm.job.Job; import org.jbpm.job.executor.JobExecutorThread; @@ -41,14 +41,6 @@ public class AlfrescoJobExecutorThread extends JobExecutorThread /** * Constructor - * - * @param name - * @param jobExecutor - * @param jbpmConfiguration - * @param idleInterval - * @param maxIdleInterval - * @param maxLockTime - * @param maxHistory */ public AlfrescoJobExecutorThread(String name, AlfrescoJobExecutor jobExecutor, JbpmConfiguration jbpmConfiguration, int idleInterval, int maxIdleInterval, long maxLockTime, int maxHistory) { @@ -56,13 +48,13 @@ public class AlfrescoJobExecutorThread extends JobExecutorThread this.alfrescoJobExecutor = jobExecutor; } - /* (non-Javadoc) - * @see org.jbpm.job.executor.JobExecutorThread#executeJob(org.jbpm.job.Job) + /** + * {@inheritDoc} */ @Override protected void executeJob(Job job) { - TransactionUtil.executeInUserTransaction(alfrescoJobExecutor.getTransactionService(), new TransactionJob(job)); + alfrescoJobExecutor.getTransactionService().getRetryingTransactionHelper().doInTransaction(new TransactionJob(job)); } /** @@ -70,24 +62,24 @@ public class AlfrescoJobExecutorThread extends JobExecutorThread * * @author davidc */ - private class TransactionJob implements TransactionUtil.TransactionWork + private class TransactionJob implements RetryingTransactionCallback { private Job job; /** * Constructor * - * @param job + * @param job the job to execute */ public TransactionJob(Job job) { this.job = job; } - /* (non-Javadoc) - * @see org.alfresco.repo.transaction.TransactionUtil.TransactionWork#doWork() + /** + * {@inheritDoc} */ - public Object doWork() throws Throwable + public Object execute() throws Throwable { AlfrescoJobExecutorThread.super.executeJob(job); return null;