From 694396d5ed6d223376da51566d295b5e4aeb5be8 Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Thu, 31 Jan 2008 16:23:09 +0000 Subject: [PATCH] MT - fix delete node (to ensure tenant-specific re-index) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8143 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/node/db/DbNodeServiceImpl.java | 17 +++--------- .../repo/tenant/MultiTServiceImpl.java | 27 +++++++++++++++++++ .../repo/tenant/SingleTServiceImpl.java | 11 ++++++++ .../alfresco/repo/tenant/TenantService.java | 5 ++++ 4 files changed, 46 insertions(+), 14 deletions(-) diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java index 058ded80ef..b1af1ed44f 100644 --- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java +++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java @@ -759,7 +759,7 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl invokeBeforeDeleteNode(nodeRef); // get the primary parent-child relationship before it is gone - ChildAssociationRef childAssocRef = getPrimaryParent(nodeRef); + ChildAssociationRef childAssocRef = tenantService.getName(getPrimaryParent(nodeRef)); //note: tenant-specific for re-indexing // get type and aspect QNames as they will be unavailable after the delete QName nodeTypeQName = node.getTypeQName(); Set nodeAspectQNames = node.getAspects(); @@ -1255,13 +1255,7 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl // no match - ignore continue; } - ChildAssociationRef childAssocRef = new ChildAssociationRef( - assoc.getChildAssocRef().getTypeQName(), - tenantService.getBaseName(assoc.getChildAssocRef().getParentRef()), - assoc.getChildAssocRef().getQName(), - tenantService.getBaseName(assoc.getChildAssocRef().getChildRef()), - assoc.getChildAssocRef().isPrimary(), - assoc.getChildAssocRef().getNthSibling()); + ChildAssociationRef childAssocRef = tenantService.getBaseName(assoc.getChildAssocRef()); results.add(childAssocRef); } // done @@ -1357,12 +1351,7 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl } else { - assocRef = new ChildAssociationRef(assoc.getChildAssocRef().getTypeQName(), - tenantService.getBaseName(assoc.getChildAssocRef().getParentRef()), - assoc.getChildAssocRef().getQName(), - tenantService.getBaseName(assoc.getChildAssocRef().getChildRef()), - assoc.getChildAssocRef().isPrimary(), - assoc.getChildAssocRef().getNthSibling()); + assocRef = tenantService.getBaseName(assoc.getChildAssocRef()); } return assocRef; } diff --git a/source/java/org/alfresco/repo/tenant/MultiTServiceImpl.java b/source/java/org/alfresco/repo/tenant/MultiTServiceImpl.java index 2c5652b292..a85db42e91 100755 --- a/source/java/org/alfresco/repo/tenant/MultiTServiceImpl.java +++ b/source/java/org/alfresco/repo/tenant/MultiTServiceImpl.java @@ -29,6 +29,7 @@ import java.util.List; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.repo.cache.SimpleCache; import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; @@ -91,6 +92,19 @@ public class MultiTServiceImpl implements TenantService return new StoreRef(storeRef.getProtocol(), getName(storeRef.getIdentifier())); } + public ChildAssociationRef getName(ChildAssociationRef childAssocRef) + { + // Check that all the passed values are not null + ParameterCheck.mandatory("ChildAssocRef", childAssocRef); + + return new ChildAssociationRef(childAssocRef.getTypeQName(), + getName(childAssocRef.getParentRef()), + childAssocRef.getQName(), + getName(childAssocRef.getChildRef()), + childAssocRef.isPrimary(), + childAssocRef.getNthSibling()); + } + public StoreRef getName(String username, StoreRef storeRef) { // Check that all the passed values are not null @@ -227,6 +241,19 @@ public class MultiTServiceImpl implements TenantService return new StoreRef(storeRef.getProtocol(), getBaseName(storeRef.getIdentifier())); } + public ChildAssociationRef getBaseName(ChildAssociationRef childAssocRef) + { + // Check that all the passed values are not null + ParameterCheck.mandatory("ChildAssocRef", childAssocRef); + + return new ChildAssociationRef(childAssocRef.getTypeQName(), + getBaseName(childAssocRef.getParentRef()), + childAssocRef.getQName(), + getBaseName(childAssocRef.getChildRef()), + childAssocRef.isPrimary(), + childAssocRef.getNthSibling()); + } + public String getBaseName(String name) { // get base name, but don't force for non-tenant user (e.g. super admin) diff --git a/source/java/org/alfresco/repo/tenant/SingleTServiceImpl.java b/source/java/org/alfresco/repo/tenant/SingleTServiceImpl.java index 3f1ff2db46..44da6d64df 100644 --- a/source/java/org/alfresco/repo/tenant/SingleTServiceImpl.java +++ b/source/java/org/alfresco/repo/tenant/SingleTServiceImpl.java @@ -24,6 +24,7 @@ */ package org.alfresco.repo.tenant; +import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; @@ -52,6 +53,11 @@ public class SingleTServiceImpl implements TenantService return storeRef; } + public ChildAssociationRef getName(ChildAssociationRef childAssocRef) + { + return childAssocRef; + } + public StoreRef getName(String username, StoreRef storeRef) { return storeRef; @@ -82,6 +88,11 @@ public class SingleTServiceImpl implements TenantService return storeRef; } + public ChildAssociationRef getBaseName(ChildAssociationRef childAssocRef) + { + return childAssocRef; + } + public String getBaseName(String name) { return name; diff --git a/source/java/org/alfresco/repo/tenant/TenantService.java b/source/java/org/alfresco/repo/tenant/TenantService.java index aaf32ca747..00d1996100 100644 --- a/source/java/org/alfresco/repo/tenant/TenantService.java +++ b/source/java/org/alfresco/repo/tenant/TenantService.java @@ -24,6 +24,7 @@ */ package org.alfresco.repo.tenant; +import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; @@ -52,6 +53,8 @@ public interface TenantService public StoreRef getName(StoreRef storeRef); + public ChildAssociationRef getName(ChildAssociationRef childAssocRef); + public StoreRef getName(String username, StoreRef storeRef); public QName getName(NodeRef inNodeRef, QName name); @@ -64,6 +67,8 @@ public interface TenantService public StoreRef getBaseName(StoreRef storeRef); + public ChildAssociationRef getBaseName(ChildAssociationRef childAssocRef); + public String getBaseName(String name); public String getBaseName(String name, boolean forceIfNonTenant);