protected IPrivilege CreatePrivilegeFromServiceResult(IObjRef objRef, IPrivilegeOfService privilegeOfService) { IPropertyPrivilegeOfService[] propertyPrivilegesOfService = privilegeOfService.PropertyPrivileges; if (propertyPrivilegesOfService == null || propertyPrivilegesOfService.Length == 0) { return(SimplePrivilegeImpl.CreateFrom(privilegeOfService)); } String[] propertyPrivilegeNames = privilegeOfService.PropertyPrivilegeNames; IEntityMetaData metaData = EntityMetaDataProvider.GetMetaData(objRef.RealType); IPropertyPrivilege[] primitivePropertyPrivileges = new IPropertyPrivilege[metaData.PrimitiveMembers.Length]; IPropertyPrivilege[] relationPropertyPrivileges = new IPropertyPrivilege[metaData.RelationMembers.Length]; IPropertyPrivilege defaultPropertyPrivilege = PropertyPrivilegeImpl.CreateFrom(privilegeOfService); Arrays.Fill(primitivePropertyPrivileges, defaultPropertyPrivilege); Arrays.Fill(relationPropertyPrivileges, defaultPropertyPrivilege); for (int b = propertyPrivilegesOfService.Length; b-- > 0;) { IPropertyPrivilegeOfService propertyPrivilegeOfService = propertyPrivilegesOfService[b]; String propertyName = InterningFeature.Intern(propertyPrivilegeNames[b]); IPropertyPrivilege propertyPrivilege = PropertyPrivilegeImpl.Create(propertyPrivilegeOfService.CreateAllowed, propertyPrivilegeOfService.ReadAllowed, propertyPrivilegeOfService.UpdateAllowed, propertyPrivilegeOfService.DeleteAllowed); if (metaData.IsRelationMember(propertyName)) { relationPropertyPrivileges[metaData.GetIndexByRelationName(propertyName)] = propertyPrivilege; } if (metaData.IsPrimitiveMember(propertyName)) { primitivePropertyPrivileges[metaData.GetIndexByPrimitiveName(propertyName)] = propertyPrivilege; } } return(EntityPrivilegeFactoryProvider.GetEntityPrivilegeFactory(metaData.EntityType, privilegeOfService.CreateAllowed, privilegeOfService.ReadAllowed, privilegeOfService.UpdateAllowed, privilegeOfService.DeleteAllowed, privilegeOfService.ExecuteAllowed).CreatePrivilege(privilegeOfService.CreateAllowed, privilegeOfService.ReadAllowed, privilegeOfService.UpdateAllowed, privilegeOfService.DeleteAllowed, privilegeOfService.ExecuteAllowed, primitivePropertyPrivileges, relationPropertyPrivileges)); }
public override int GetHashCode() { return(PropertyPrivilegeImpl.CalcIndex(create, read, update, delete)); }