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(); } } }