Example #1
0
        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();
                }
            }
        }
Example #2
0
        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()
                                         };
 }