+ principal.getType() + " ] is unavailable");
continue;
}
// Handle Permissions
GssSharepointPermission permissions = ace.getPermission();
if (null == permissions) {
LOGGER.log(Level.WARNING, "No permissions found for Principal [ "
+ principal.getName() + " ] ");
continue;
}
// Check to determine whether the object-type of the document is list
// list-item or site.
ObjectType objectType = ObjectType.ITEM;
if (document.getObjType().equals(SPConstants.SITE)) {
objectType = ObjectType.SITE_LANDING_PAGE;
} else if (null != document.getParentList()) {
if (document.getParentList().getPrimaryKey().equals(
Util.getOriginalDocId(document.getDocId(),
document.getFeedType()))) {
objectType = ObjectType.LIST;
}
}
final String principalName = getPrincipalName(principal);
String siteCollUrl = wsResult.getSiteCollectionUrl();
String[] deniedPermissions = permissions.getDeniedPermission();
if (null != deniedPermissions) {
Set<RoleType> deniedRoleTypes =
getRoleTypesFor(deniedPermissions, objectType);
if (deniedRoleTypes.size() > 0) {
LOGGER.fine("Denied Permission list "
+ Arrays.asList(permissions.getDeniedPermission())
+ " for the User " + principalName);
LOGGER.fine("Principal [" + principalName
+ "] Denied Role Types [ " + deniedRoleTypes + " ]");
// Pass denied permissions only if Peeker or Reader role is denied.
if (deniedRoleTypes.contains(RoleType.PEEKER)
|| deniedRoleTypes.contains(RoleType.READER)) {
if (supportsDenyAcls) {
LOGGER.fine("Processing Deny permissions"
+ " for Principal ["+ principalName + "]");
processPrincipal(principal, aclDenyUsers, aclDenyGroups,
principalName, siteCollUrl, memberships, webState);
} else {
// Skipping ACL as denied ACLs are not supported as per
// Traversal Context.
LOGGER.warning("Skipping ACL as Deny permissions are detected"
+ "for Document [" + entityUrl + "] for Principal ["
+ principalName + " ] when Supports Deny ACL ["
+ supportsDenyAcls + "].");
continue ACL;
}
}
}
}
LOGGER.fine("Permission list "
+ Arrays.asList(permissions.getAllowedPermissions())
+ " for the User " + principalName);
Set<RoleType> allowedRoleTypes =
getRoleTypesFor(permissions.getAllowedPermissions(), objectType);
if (!allowedRoleTypes.isEmpty()) {
LOGGER.fine("Principal [ "+ principalName
+ " ] Allowed Role Types [ "+ allowedRoleTypes + " ]");
// Pass allowed permissions only if role other than Peeker is allowed.
if (allowedRoleTypes.contains(RoleType.READER)