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;
}
/* (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.HashSet;
import java.util.List;
import java.util.TreeSet;
import org.alfresco.model.ContentModel;
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));
}
// Add any unlinked shared ACLs from defining nodes to index them now
ArrayList<Acl> answer = new ArrayList<Acl>(source);
HashSet<Long> acls = new HashSet<Long>();
for(Acl acl : answer)
TreeSet<Acl> sorted = new TreeSet<Acl>(source);
HashSet<Long> found = new HashSet<Long>();
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(!acls.contains(acl.getInheritedId()))
if(!found.contains(acl.getInheritedId()))
{
AclEntity shared = new AclEntity();
shared.setId(acl.getInheritedId());
shared.setAclChangeSetId(acl.getAclChangeSetId());
shared.setInheritedId(acl.getInheritedId());
sharedAndUnlinked.add(shared);
acls.add(shared.getId());
sorted.add(shared);
}
}
}
answer.addAll(sharedAndUnlinked);
ArrayList<Acl> answer = new ArrayList<Acl>();
answer.addAll(sorted);
return answer;
}

View File

@@ -24,7 +24,7 @@ package org.alfresco.repo.solr;
* @author Derek Hulley
* @since 4.0
*/
public interface Acl
public interface Acl extends Comparable<Acl>
{
Long getId();
Long getInheritedId();