diff --git a/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java b/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java index 4206e56063..eb0f718e00 100644 --- a/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java +++ b/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java @@ -36,6 +36,8 @@ import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.tenant.TenantService; +import org.alfresco.repo.tenant.TenantUtil; +import org.alfresco.repo.tenant.TenantUtil.TenantRunAsWork; import org.alfresco.repo.transaction.AlfrescoTransactionSupport; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.repo.transaction.TransactionListenerAdapter; @@ -463,8 +465,7 @@ public class DictionaryModelType implements ContentServicePolicies.OnContentUpda for (NodeRef nodeRef : pendingModels) { String tenantDomain = tenantService.getDomain(nodeRef.getStoreRef().getIdentifier()); - String tenantSystemUserName = tenantService.getDomainUser(AuthenticationUtil.getSystemUserName(), tenantDomain); - systemTenants.add(tenantSystemUserName); + systemTenants.add(tenantDomain); } } @@ -476,40 +477,37 @@ public class DictionaryModelType implements ContentServicePolicies.OnContentUpda for (NodeRef nodeRef : pendingDeleteModels) { String tenantDomain = tenantService.getDomain(nodeRef.getStoreRef().getIdentifier()); - String tenantSystemUserName = tenantService.getDomainUser(AuthenticationUtil.getSystemUserName(), tenantDomain); - systemTenants.add(tenantSystemUserName); + systemTenants.add(tenantDomain); } } if (systemTenants.size() > 0) { - for (final String tenantSystemUserName : systemTenants) + for (final String tenantName : systemTenants) { RetryingTransactionCallback work = new RetryingTransactionCallback() { public Void execute() throws Throwable { - AuthenticationUtil.runAs(new RunAsWork() + return TenantUtil.runAsSystemTenant(new TenantRunAsWork() + { + public Void doWork() + { + // invalidate - to force lazy re-init + // note: since afterCommit - need to either clear shared cache or destroy in separate txn + dictionaryDAO.destroy(); + + if (logger.isTraceEnabled()) { - public Object doWork() - { - // invalidate - to force lazy re-init - // note: since afterCommit - need to either clear shared cache or destroy in separate txn - dictionaryDAO.destroy(); - - if (logger.isTraceEnabled()) - { - logger.trace("afterCommit: Dictionary destroyed ["+AlfrescoTransactionSupport.getTransactionId()+"]"); - } - - return null; - } - }, tenantSystemUserName); - - return null; + logger.trace("afterCommit: Dictionary destroyed ["+AlfrescoTransactionSupport.getTransactionId()+"]"); + } + + return null; + } + }, tenantName); } }; - + transactionService.getRetryingTransactionHelper().doInTransaction(work, true, true); } } diff --git a/source/java/org/alfresco/repo/dictionary/DynamicCreateRepositoryLocation.java b/source/java/org/alfresco/repo/dictionary/DynamicCreateRepositoryLocation.java index c66ec11812..f7ad94f4e2 100644 --- a/source/java/org/alfresco/repo/dictionary/DynamicCreateRepositoryLocation.java +++ b/source/java/org/alfresco/repo/dictionary/DynamicCreateRepositoryLocation.java @@ -66,25 +66,13 @@ public class DynamicCreateRepositoryLocation extends RepositoryLocation public void checkAndCreate(NodeRef rootNodeRef) { -// try -// { -// String[] pathElements = getPathElements(); - List nodes = searchService.selectNodes(rootNodeRef, getPath(), null, namespaceService, false); - if(nodes.size() == 0) - { - logger.info("Repository location " + getPath() + " does not exist for tenant " - + TenantUtil.getCurrentDomain() + ", creating"); - create(); - } - -// fileFolderService.resolveNamePath(rootNodeRef, Arrays.asList(pathElements)); -// } -// catch(FileNotFoundException e) -// { -// logger.info("Repository location " + getPath() + " does not exist for tenant " -// + TenantUtil.getCurrentDomain() + ", creating"); -// create(); -// } + List nodes = searchService.selectNodes(rootNodeRef, getPath(), null, namespaceService, false); + if(nodes.size() == 0) + { + logger.info("Repository location " + getPath() + " does not exist for tenant " + + TenantUtil.getCurrentDomain() + ", creating"); + create(); + } } protected String getParentPath()