Merged V3.4-BUG-FIX to HEAD

29414: Fix for ALF-7437: CMIS query doesn't return any result when documents are created with a different lang
   and fixes duplicate ALF-8598 : Web QS - Dynamic asset collection failing for non en_US locale
   29445: ALF-9023: Cannot search/retrieve special characters of "???".
   - avoid requirement to escape unicode characters from classification "number, other" and others e.g. name:??? will generate a query (even ff it does not work due to tokenisation)
   29470: ALF-9632 "CMIS query fails if model name contains numbers" fix
      - Ensure CMIS query types are ISO9075 encoded
   29474: ALF-9668 / ALF-6434: Fix LDAP sync regression
   - On an incremental sync when there were no group->group association changes, new groups were getting ignored!


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29475 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Dave Ward
2011-08-01 14:55:28 +00:00
parent 440883a670
commit e93b7a3aa5
3 changed files with 25 additions and 17 deletions

View File

@@ -788,9 +788,6 @@ public class ChainingUserRegistrySynchronizer extends AbstractLifecycleBean impl
groupDisplayName = ChainingUserRegistrySynchronizer.this.authorityService.getShortName(groupName);
}
// Add an entry for the parent itself, in case it is a root group
recordParentAssociationDeletion(groupName, null);
// Divide the child associations into person and group associations, dealing with case sensitivity
Set<String> newChildPersons = newPersonSet();
Set<String> newChildGroups = new TreeSet<String>();
@@ -821,7 +818,7 @@ public class ChainingUserRegistrySynchronizer extends AbstractLifecycleBean impl
{
if (!newChildPersons.remove(child))
{
// Make sure each child features as a key in the creation map
// Make sure each person with association changes features as a key in the creation map
recordParentAssociationCreation(child, null);
recordParentAssociationDeletion(child, groupName);
}
@@ -838,6 +835,8 @@ public class ChainingUserRegistrySynchronizer extends AbstractLifecycleBean impl
// Mark as created if new
else
{
// Make sure each group to be created features in the association deletion map (as these are handled in the same phase)
recordParentAssociationDeletion(groupName, null);
this.groupsToCreate.put(groupName, groupDisplayName);
}
@@ -1092,7 +1091,7 @@ public class ChainingUserRegistrySynchronizer extends AbstractLifecycleBean impl
public void processGroups(UserRegistry userRegistry, boolean allowDeletions, boolean splitTxns)
{
// If we got back some groups, we have to cross reference them with the set of known authorities
if (allowDeletions || !this.groupParentAssocsToCreate.isEmpty())
if (allowDeletions || !this.groupParentAssocsToDelete.isEmpty())
{
final Set<String> allZonePersons = newPersonSet();
final Set<String> allZoneGroups = new TreeSet<String>();
@@ -1141,8 +1140,9 @@ public class ChainingUserRegistrySynchronizer extends AbstractLifecycleBean impl
}
// Prune the group associations now that we have complete information
logRetainParentAssociations(this.groupParentAssocsToCreate, allZoneGroups);
this.groupParentAssocsToDelete.keySet().retainAll(allZoneGroups);
this.groupParentAssocsToCreate.keySet().retainAll(allZoneGroups);
logRetainParentAssociations(this.groupParentAssocsToDelete, allZoneGroups);
this.finalGroupChildAssocs.keySet().retainAll(allZoneGroups);
// Pruning person associations will have to wait until we have passed over all persons and built up
// this set