Example #1
0
        internal static Message CreatePutMessage(IEnumerable <ResourceObject> resources)
        {
            int count = resources.Count();

            if (count == 0)
            {
                throw new ArgumentNullException("resources");
            }
            else if (count == 1)
            {
                return(MessageComposer.CreatePutMessage(resources.First(), null));
            }

            Put op = new Put();

            op.Dialect = Namespaces.RMIdentityAttributeType;
            List <PutFragmentType> fragments = new List <PutFragmentType>();

            foreach (ResourceObject resource in resources)
            {
                foreach (PutFragmentType fragment in resource.GetPutFragements())
                {
                    fragment.TargetIdentifier = resource.ObjectID.Value;
                    fragments.Add(fragment);
                }
            }

            if (fragments.Count == 0)
            {
                return(null);
            }

            op.Fragments = fragments.ToArray();
            Message message;

            message = Message.CreateMessage(MessageVersion.Default, Namespaces.Put, new SerializerBodyWriter(op));
            message.AddHeader(Namespaces.IdMDirectoryAccess, HeaderConstants.IdentityManagementOperation, null, true);
            message.AddHeader(Namespaces.ResourceManagement, HeaderConstants.CompositeTypeOperation, null);
            message.AddHeader(HeaderConstants.ResourceReferenceProperty, resources.Select(t => t.ObjectID.ToString()).ToCommaSeparatedString());

            return(message);
        }
        public void Put(IEnumerable <ResourceObject> resources)
        {
            if (resources == null)
            {
                throw new ArgumentNullException("resources");
            }

            using (Message message = MessageComposer.CreatePutMessage(resources))
            {
                if (message == null)
                {
                    return;
                }

                using (Message responseMessage = this.Invoke((c) => c.Put(message)))
                {
                    responseMessage.ThrowOnFault();
                }
            }
        }
        public void Put(ResourceObject resource, CultureInfo locale)
        {
            if (resource == null)
            {
                throw new ArgumentNullException("resource");
            }

            using (Message message = MessageComposer.CreatePutMessage(resource, locale))
            {
                if (message == null)
                {
                    return;
                }

                using (Message responseMessage = this.Invoke((c) => c.Put(message)))
                {
                    responseMessage.ThrowOnFault();
                }
            }
        }