mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
ACE-1640: Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)
70016: Merged V4.2-BUG-FIX (4.2.3) to HEAD-BUG-FIX (4.3/Cloud) 70015: Merged V4.1-BUG-FIX (4.1.9) to V4.2-BUG-FIX (4.2.3) 70014: MNT-11437: Merged V4.1.5 (4.1.5.14) to V4.1-BUG-FIX (4.1.9) 70009: Revised fix for MNT-11107 Documents uploaded by another user are not filtered via tags in My Files Fix for MNT-11427 Impossible to start reindex process for bm-0010 and bm-0013 tests: api/solr/aclchangesets return status:502 - test fixes and maintain order git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@70017 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -69,4 +69,66 @@ public class AclEntity implements Acl
|
|||||||
{
|
{
|
||||||
this.inheritedId = inheritedId;
|
this.inheritedId = inheritedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.lang.Object#hashCode()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((aclChangeSetId == null) ? 0 : aclChangeSetId.hashCode());
|
||||||
|
result = prime * result + ((id == null) ? 0 : id.hashCode());
|
||||||
|
result = prime * result + ((inheritedId == null) ? 0 : inheritedId.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.lang.Object#equals(java.lang.Object)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
AclEntity other = (AclEntity) obj;
|
||||||
|
if (aclChangeSetId == null)
|
||||||
|
{
|
||||||
|
if (other.aclChangeSetId != null)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (!aclChangeSetId.equals(other.aclChangeSetId))
|
||||||
|
return false;
|
||||||
|
if (id == null)
|
||||||
|
{
|
||||||
|
if (other.id != null)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (!id.equals(other.id))
|
||||||
|
return false;
|
||||||
|
if (inheritedId == null)
|
||||||
|
{
|
||||||
|
if (other.inheritedId != null)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (!inheritedId.equals(other.inheritedId))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.lang.Comparable#compareTo(java.lang.Object)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int compareTo(Acl o)
|
||||||
|
{
|
||||||
|
return this.getId().compareTo(o.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -21,6 +21,7 @@ package org.alfresco.repo.domain.solr.ibatis;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.domain.node.Node;
|
import org.alfresco.repo.domain.node.Node;
|
||||||
@@ -133,29 +134,30 @@ public class SOLRDAOImpl implements SOLRDAO
|
|||||||
source = (List<Acl>) template.selectList(SELECT_ACLS_BY_CHANGESET_IDS, params, new RowBounds(0, maxResults));
|
source = (List<Acl>) template.selectList(SELECT_ACLS_BY_CHANGESET_IDS, params, new RowBounds(0, maxResults));
|
||||||
}
|
}
|
||||||
// Add any unlinked shared ACLs from defining nodes to index them now
|
// Add any unlinked shared ACLs from defining nodes to index them now
|
||||||
ArrayList<Acl> answer = new ArrayList<Acl>(source);
|
TreeSet<Acl> sorted = new TreeSet<Acl>(source);
|
||||||
HashSet<Long> acls = new HashSet<Long>();
|
HashSet<Long> found = new HashSet<Long>();
|
||||||
for(Acl acl : answer)
|
for(Acl acl : source)
|
||||||
{
|
{
|
||||||
acls.add(acl.getId());
|
found.add(acl.getId());
|
||||||
}
|
}
|
||||||
ArrayList<Acl> sharedAndUnlinked = new ArrayList<Acl>();
|
|
||||||
for(Acl acl : answer)
|
for(Acl acl : source)
|
||||||
{
|
{
|
||||||
if(acl.getInheritedId() != null)
|
if(acl.getInheritedId() != null)
|
||||||
{
|
{
|
||||||
if(!acls.contains(acl.getInheritedId()))
|
if(!found.contains(acl.getInheritedId()))
|
||||||
{
|
{
|
||||||
AclEntity shared = new AclEntity();
|
AclEntity shared = new AclEntity();
|
||||||
shared.setId(acl.getInheritedId());
|
shared.setId(acl.getInheritedId());
|
||||||
shared.setAclChangeSetId(acl.getAclChangeSetId());
|
shared.setAclChangeSetId(acl.getAclChangeSetId());
|
||||||
shared.setInheritedId(acl.getInheritedId());
|
shared.setInheritedId(acl.getInheritedId());
|
||||||
sharedAndUnlinked.add(shared);
|
sorted.add(shared);
|
||||||
acls.add(shared.getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
answer.addAll(sharedAndUnlinked);
|
|
||||||
|
ArrayList<Acl> answer = new ArrayList<Acl>();
|
||||||
|
answer.addAll(sorted);
|
||||||
return answer;
|
return answer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,7 +24,7 @@ package org.alfresco.repo.solr;
|
|||||||
* @author Derek Hulley
|
* @author Derek Hulley
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
public interface Acl
|
public interface Acl extends Comparable<Acl>
|
||||||
{
|
{
|
||||||
Long getId();
|
Long getId();
|
||||||
Long getInheritedId();
|
Long getInheritedId();
|
||||||
|
@@ -254,11 +254,24 @@ public class SOLRDAOTest extends TestCase
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
assertEquals("Expected exactly one result", 1, acls.size());
|
if(acls.size() == 1)
|
||||||
totalAclCount++;
|
{
|
||||||
|
// OK single acl
|
||||||
|
}
|
||||||
|
else if(acls.size() == 2)
|
||||||
|
{
|
||||||
|
// definning has unlinkfd shared acl
|
||||||
|
assertEquals("Not a defining and shared pair", acls.get(0).getInheritedId(), acls.get(1).getId());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fail("More then two acls");
|
||||||
|
}
|
||||||
|
totalAclCount++;;
|
||||||
minAclId = acls.get(0).getId() + 1;
|
minAclId = acls.get(0).getId() + 1;
|
||||||
}
|
}
|
||||||
assertEquals("Expected to page to exact number of results", aclCount, totalAclCount);
|
// This may not be true - it depands on lazy/eager shared acl creation.
|
||||||
|
//assertEquals("Expected to page to exact number of results", aclCount, totalAclCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Long> toIds(List<AclChangeSet> aclChangeSets)
|
private List<Long> toIds(List<AclChangeSet> aclChangeSets)
|
||||||
|
@@ -138,27 +138,30 @@ public class SOLRTrackingComponentTest extends TestCase
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetAcls_Simple()
|
// This test is no longer valid as we may or may include shared acls not linked to defining ones
|
||||||
{
|
// If they are not linked to a node they will be counted wring ...
|
||||||
List<AclChangeSet> cs = getAclChangeSets(null, null, null, null, 50);
|
|
||||||
assertTrue("Expected results to be limited in number", cs.size() <= 50);
|
// public void testGetAcls_Simple()
|
||||||
int totalAcls = 0;
|
// {
|
||||||
for (AclChangeSet aclChangeSet : cs)
|
// List<AclChangeSet> cs = getAclChangeSets(null, null, null, null, 50);
|
||||||
{
|
// assertTrue("Expected results to be limited in number", cs.size() <= 50);
|
||||||
totalAcls += aclChangeSet.getAclCount();
|
// int totalAcls = 0;
|
||||||
}
|
// for (AclChangeSet aclChangeSet : cs)
|
||||||
int totalAclsCheck = 0;
|
// {
|
||||||
|
// totalAcls += aclChangeSet.getAclCount();
|
||||||
for (AclChangeSet aclChangeSet : cs)
|
// }
|
||||||
{
|
// int totalAclsCheck = 0;
|
||||||
List<Acl> acls = getAcls(Arrays.asList(new Long[]{aclChangeSet.getId()}), null, 200);
|
//
|
||||||
assertEquals(aclChangeSet.getAclCount(), acls.size());
|
// for (AclChangeSet aclChangeSet : cs)
|
||||||
totalAclsCheck += acls.size();
|
// {
|
||||||
}
|
// List<Acl> acls = getAcls(Arrays.asList(new Long[]{aclChangeSet.getId()}), null, 200);
|
||||||
|
// assertEquals(aclChangeSet.getAclCount(), acls.size());
|
||||||
// Double check number of ACLs
|
// totalAclsCheck += acls.size();
|
||||||
assertEquals("ACL count should have matched", totalAcls, totalAclsCheck);
|
// }
|
||||||
}
|
//
|
||||||
|
// // Double check number of ACLs
|
||||||
|
// assertEquals("ACL count should have matched", totalAcls, totalAclsCheck);
|
||||||
|
// }
|
||||||
|
|
||||||
public void testGetNodeMetaData()
|
public void testGetNodeMetaData()
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user