From 5a833ba4ac5e7ce42b689dbd9536f0547f18bc92 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Wed, 2 Apr 2014 19:51:16 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud) 64782: Merged V4.2-BUG-FIX (4.2.2) to HEAD-BUG-FIX (4.3/Cloud) 64028: Merged DEV to V4.2-BUG-FIX (4.2.2) 61306: MNT-10537: BPM Models are filtered for CMIS getTypeDefinition Destroy the dictionary in WorkflowDeployer to clear dictionary registry caches. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@66186 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/workflow/WorkflowDeployer.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java b/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java index a76fbf3a6a..03e35e1cdc 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java @@ -251,6 +251,8 @@ public class WorkflowDeployer extends AbstractLifecycleBean try { userTransaction.begin(); + + boolean destroyDictionary = false; // bootstrap the workflow models and static labels (from classpath) if (models != null && resourceBundles != null && ((models.size() > 0) || (resourceBundles.size() > 0))) @@ -261,6 +263,7 @@ public class WorkflowDeployer extends AbstractLifecycleBean dictionaryBootstrap.setModels(models); dictionaryBootstrap.setLabels(resourceBundles); dictionaryBootstrap.bootstrap(); // also registers with dictionary + destroyDictionary = true; } // bootstrap the workflow definitions (from classpath) @@ -300,6 +303,7 @@ public class WorkflowDeployer extends AbstractLifecycleBean WorkflowDeployment deployment = workflowService.deployDefinition(engineId, workflowResource.getInputStream(), mimetype, workflowResource.getFilename()); logDeployment(location, deployment); + destroyDictionary = true; } } else @@ -324,8 +328,32 @@ public class WorkflowDeployer extends AbstractLifecycleBean deploy(nodeRef, false); } } + + destroyDictionary = true; } - + + if(destroyDictionary) + { + RetryingTransactionCallback work = new RetryingTransactionCallback() + { + public Void execute() throws Throwable + { + AuthenticationUtil.runAs(new RunAsWork() + { + public Object doWork() + { + dictionaryDAO.destroy(); + return null; + } + }, authenticationContext.getSystemUserName()); + + return null; + } + }; + + transactionService.getRetryingTransactionHelper().doInTransaction(work, true, true); + } + userTransaction.commit(); } catch(Throwable e)