private void ValidateRelation(dynamic relation) { if (_relations.ContainsKey(relation.Id)) { throw new InvalidRelationIdException(relation.Id); } if (relation.RelationServiceName != _ownName) { throw new InvalidRelationServiceException(relation.RelationServiceName); } string relationType = relation.RelationTypeName; if (relationType == null || !_relationTypes.ContainsKey(relationType)) { throw new RelationTypeNotFoundException(relationType); } RoleResult roles = relation.RetrieveAllRoles(); IRelationType type = _relationTypes[relationType]; foreach (Role r in roles.Roles) { RoleInfo info = type[r.Name]; if (!Role.ValidateRole(r.Value, type[r.Name], _server)) { throw new InvalidRoleValueException(); } } }
public RoleResult SetRoles(string relationId, IEnumerable <Role> roles) { AssertRegistered(); RelationWrapper wrapper = GetRelationWrapper(relationId); string typeName = wrapper.Relation.RelationTypeName; Dictionary <string, IList <ObjectName> > oldValues = new Dictionary <string, IList <ObjectName> >(); foreach (Role r in roles) { try { oldValues[r.Name] = wrapper.Relation[r.Name]; } catch (RoleNotFoundException) { oldValues[r.Name] = null; } } RoleResult result = wrapper.Relation.SetRoles(roles); foreach (Role r in roles) { UpdateRoleMap(relationId, r, oldValues[r.Name]); } foreach (Role r in roles) { SendNotification(RelationNotification.CreateForUpdate(this, -1, relationId, typeName, r.Name, wrapper.Name, r.Value, oldValues[r.Name])); } return(result); }
public ManagedResourceRoleResult(RoleResult roleResult) { ManagedResourceRoleList = new ManagedResourceRoleList { ManagedResourceRole = roleResult.Roles.Select(x => new ManagedResourceRole(x)).ToArray() }; ManagedResourceRoleUnresolvedList = new ManagedResourceRoleUnresolvedList { ManagedResourceRoleUnresolved = roleResult.UnresolvedRoles.Select( x => new ManagedResourceRoleUnresolved(x)).ToArray() }; }