Merged V3.0 to HEAD

12349: Tweaked the Hibernate session helper to prevent initially-large sessions from drowning the flush code
  12452: MT - fix ETHREEOH-1056
  12453: MT - fix ETHREEOH-886
  12460: MT - fix ETHREEOH-1013


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@12536 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka
2008-12-22 16:42:39 +00:00
parent 38ba58dede
commit c4e9d6f97b
8 changed files with 118 additions and 42 deletions

View File

@@ -38,6 +38,7 @@ import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.importer.view.NodeContext;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
import org.alfresco.service.cmr.dictionary.ChildAssociationDefinition;
@@ -966,6 +967,27 @@ public class ImporterComponent
return boundProperties;
}
/**
* Bind permissions - binds authorities
*
* @param properties
* @return
*/
private List<AccessPermission> bindPermissions(List<AccessPermission> permissions)
{
List<AccessPermission> boundPermissions = new ArrayList<AccessPermission>(permissions.size());
for (AccessPermission permission : permissions)
{
AccessPermission ace = new NodeContext.ACE(permission.getAccessStatus(),
bindPlaceHolder(permission.getAuthority(), binding),
permission.getPermission());
boundPermissions.add(ace);
}
return boundPermissions;
}
/**
* Bind property value
@@ -1249,7 +1271,8 @@ public class ImporterComponent
AccessStatus writePermission = permissionService.hasPermission(nodeRef, PermissionService.CHANGE_PERMISSIONS);
if (authenticationService.isCurrentUserTheSystemUser() || writePermission.equals(AccessStatus.ALLOWED))
{
permissions = node.getAccessControlEntries();
permissions = bindPermissions(node.getAccessControlEntries());
for (AccessPermission permission : permissions)
{
permissionService.setPermission(nodeRef, permission.getAuthority(), permission.getPermission(), permission.getAccessStatus().equals(AccessStatus.ALLOWED));
@@ -1433,7 +1456,9 @@ public class ImporterComponent
{
permissionService.setInheritParentPermissions(existingNodeRef, false);
}
permissions = node.getAccessControlEntries();
permissions = bindPermissions(node.getAccessControlEntries());
for (AccessPermission permission : permissions)
{
permissionService.setPermission(existingNodeRef, permission.getAuthority(), permission.getPermission(), permission.getAccessStatus().equals(AccessStatus.ALLOWED));
@@ -1584,5 +1609,4 @@ public class ImporterComponent
{
}
}
}

View File

@@ -375,10 +375,7 @@ public class NodeContext extends ElementContext
permission = PermissionService.CONSUMER;
}
ACE ace = new ACE();
ace.accessStatus = accessStatus;
ace.authority = authority;
ace.permission = permission;
ACE ace = new ACE(accessStatus, authority, permission);
accessControlEntries.add(ace);
}
@@ -502,12 +499,18 @@ public class NodeContext extends ElementContext
/**
* Access Control Entry
*/
private class ACE implements AccessPermission
public static class ACE implements AccessPermission
{
private AccessStatus accessStatus;
private String authority;
private String permission;
private int position;
public ACE(AccessStatus accessStatus, String authority, String permission)
{
this.accessStatus = accessStatus;
this.authority = authority;
this.permission = permission;
}
/*
* (non-Javadoc)