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:
Alan Davis
2014-05-11 22:08:45 +00:00
parent 873db6ba7c
commit bc7fb95b83
5 changed files with 115 additions and 35 deletions

View File

@@ -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());
}
} }

View File

@@ -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;
} }

View File

@@ -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();

View File

@@ -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)

View File

@@ -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()
{ {