From 9c1373266115b0ffb970723f7338a22c705b5507 Mon Sep 17 00:00:00 2001 From: Andrew Hind Date: Mon, 27 Oct 2014 13:27:00 +0000 Subject: [PATCH] Fix for ACE-3284 CMIS: NPE when performing concurrent search and delete operations git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@89211 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/search/impl/querymodel/impl/db/DBResultSet.java | 7 ++++--- .../impl/acegi/ACLEntryAfterInvocationProvider.java | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBResultSet.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBResultSet.java index 3b16a1b5c9..0599987fee 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBResultSet.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBResultSet.java @@ -194,11 +194,11 @@ public class DBResultSet extends AbstractResultSet int bulkFetchSize = getBulkFetchSize(); if(bulkFetchSize < 1) { - nodeRefs[n] = tenantService.getBaseName(nodeDao.getNodePair(dbids.get(n)).getSecond()); + NodeRef nodeRef = nodeDao.getNodePair(dbids.get(n)).getSecond(); + nodeRefs[n] = nodeRef == null ? null : tenantService.getBaseName(nodeRef); return; } - List fetchList = new ArrayList(bulkFetchSize); BitSet done = new BitSet(bulkFetchSize); int totalHits = dbids.size(); @@ -227,7 +227,8 @@ public class DBResultSet extends AbstractResultSet nodeDao.cacheNodesById(fetchList); for (int i = done.nextSetBit(0); i >= 0; i = done.nextSetBit(i+1)) { - nodeRefs[n+i] = tenantService.getBaseName(nodeDao.getNodePair(fetchList.get(i)).getSecond()); + NodeRef nodeRef = nodeDao.getNodePair(fetchList.get(i)).getSecond(); + nodeRefs[n+1] = nodeRef == null ? null : tenantService.getBaseName(nodeRef); } } } diff --git a/source/java/org/alfresco/repo/security/permissions/impl/acegi/ACLEntryAfterInvocationProvider.java b/source/java/org/alfresco/repo/security/permissions/impl/acegi/ACLEntryAfterInvocationProvider.java index bc925e420b..6e855196a0 100644 --- a/source/java/org/alfresco/repo/security/permissions/impl/acegi/ACLEntryAfterInvocationProvider.java +++ b/source/java/org/alfresco/repo/security/permissions/impl/acegi/ACLEntryAfterInvocationProvider.java @@ -645,6 +645,11 @@ public class ACLEntryAfterInvocationProvider implements AfterInvocationProvider, filteringResultSet.setIncluded(i, true); NodeRef nodeRef = returnedObject.getNodeRef(i); + + if(filteringResultSet.getIncluded(i) && (nodeRef == null)) + { + filteringResultSet.setIncluded(i, false); + } if (filteringResultSet.getIncluded(i) && permissionService.hasReadPermission(nodeRef) == AccessStatus.DENIED) {