/// <summary> /// Constructs a create request based on the provided object. /// </summary> /// <param name="newResource">The RmResource object for which to construct a create request.</param> /// <returns></returns> public virtual CreateRequest CreateCreateRequest(RmResource newResource) { if (newResource == null) { throw new ArgumentNullException("newResource"); } lock (newResource) { CreateRequest createRequest = new CreateRequest(); createRequest.AddRequest = new AddRequest(); createRequest.AddRequest.AttributeTypeAndValues = new List <DirectoryAccessChange>(); foreach (KeyValuePair <RmAttributeName, RmAttributeValue> attribute in newResource.Attributes) { if (this.ProhibitedAttributes.ContainsKey(attribute.Key.Name)) { continue; } foreach (IComparable value in attribute.Value.Values) { DirectoryAccessChange createReqChange = BuildDirectoryAccessChange(attribute.Key, value); // cannot specify the operation on create createReqChange.Operation = null; createRequest.AddRequest.AttributeTypeAndValues.Add(createReqChange); } } return(createRequest); } }
private DirectoryAccessChange BuildDirectoryAccessChange(RmAttributeName name, IComparable value) { DirectoryAccessChange retReqChange = new DirectoryAccessChange(); retReqChange.AttributeType = name.Name; XmlElement attributeValueElem = base.RmDoc.CreateElement(retReqChange.AttributeType, RmNamespace); attributeValueElem.InnerText = value.ToString(); retReqChange.AttributeValue.Values.Add(attributeValueElem); return(retReqChange); }
DirectoryAccessChange BuildDirectoryAccessChange(RmAttributeChange attribute) { DirectoryAccessChange retReqChange = new DirectoryAccessChange(); retReqChange.AttributeType = attribute.Name.Name; XmlElement attributeValueElem = base.RmDoc.CreateElement(retReqChange.AttributeType, RmNamespace); if (attribute.Value != null) { attributeValueElem.InnerText = attribute.Value.ToString(); } retReqChange.AttributeValue.Values.Add(attributeValueElem); return(retReqChange); }
DirectoryAccessChange BuildDirectoryAccessChange(RmAttributeName name, IComparable value) { if (value == null) { throw new ArgumentNullException("name", string.Format("Attribute '{0}' is null.", name)); } DirectoryAccessChange retReqChange = new DirectoryAccessChange(); retReqChange.AttributeType = name.Name; XmlElement attributeValueElem = base.RmDoc.CreateElement(retReqChange.AttributeType, RmNamespace); attributeValueElem.InnerText = value.ToString(); retReqChange.AttributeValue.Values.Add(attributeValueElem); return(retReqChange); }
public Message CreateCreateRequest(RmGeneric newResource) { if (newResource == null) { throw new ArgumentNullException("newResource"); } lock (newResource) { CreateRequest createRequest = new CreateRequest(); createRequest.AddRequest = new AddRequest(); createRequest.AddRequest.AttributeTypeAndValues = new List <DirectoryAccessChange>(); foreach (KeyValuePair <RmAttributeName, RmAttributeValue> attribute in newResource.Attributes) { if (!string.IsNullOrEmpty(ProhibitedAttributes.Find(p => p.Equals(attribute.Key.Name, StringComparison.OrdinalIgnoreCase)))) { continue; } foreach (IComparable value in attribute.Value.Values) { DirectoryAccessChange createReqChange = BuildDirectoryAccessChange(attribute.Key, value); // cannot specify the operation on create createReqChange.Operation = null; createRequest.AddRequest.AttributeTypeAndValues.Add(createReqChange); } } Message msgCreateRequest = null; lock (createRequest) { msgCreateRequest = Message.CreateMessage(MessageVersion.Default, Constants.WsTransfer.CreateAction, createRequest.AddRequest, new ClientSerializer(typeof(AddRequest))); ClientHelper.AddImdaHeaders(createRequest, msgCreateRequest); return(msgCreateRequest); } } }
public Message CreatePutRequest(RmResourceChanges transaction) { if (transaction == null) { throw new ArgumentException("transaction"); } RmResource rmObject = transaction.RmObject; if (rmObject == null) { throw new InvalidOperationException("transaction does not have rmObject"); } lock (rmObject) { RequestPut putRequest = new RequestPut(); putRequest.ResourceReferenceProperty = rmObject.ObjectID.ToString(); if (String.IsNullOrEmpty(rmObject.Locale) == false) { putRequest.ResourceLocaleProperty = CultureInfo.GetCultureInfo(rmObject.Locale).ToString(); //System.Globalization.CultureInfo(rmObject.Locale) } putRequest.ModifyRequest = new ModifyRequest(); IList <RmAttributeChange> changes = transaction.GetChanges(); foreach (RmAttributeChange attributeChange in changes) { if (!string.IsNullOrEmpty(ProhibitedAttributes.Find(p => p.Equals(attributeChange.Name.Name, StringComparison.OrdinalIgnoreCase)))) { continue; } DirectoryAccessChange putReqChange = BuildDirectoryAccessChange(attributeChange); if (base.IsMultiValued(attributeChange.Name)) { putReqChange.Operation = attributeChange.Operation.ToString(); } else { if (attributeChange.Operation == RmAttributeChangeOperation.Add) { putReqChange.Operation = RmAttributeChangeOperation.Replace.ToString(); } else if (attributeChange.Operation == RmAttributeChangeOperation.Delete) { putReqChange.Operation = RmAttributeChangeOperation.Replace.ToString(); putReqChange.AttributeValue = null; } } putRequest.ModifyRequest.Changes.Add(putReqChange); } Message msgRequest = null; lock (putRequest) { msgRequest = Message.CreateMessage(MessageVersion.Default, Constants.WsTransfer.PutAction, putRequest.ModifyRequest, new ClientSerializer(typeof(ModifyRequest))); ClientHelper.AddImdaHeaders(putRequest, msgRequest); ClientHelper.AddRmHeaders(putRequest, msgRequest); } return(msgRequest); } }
/// <summary> /// Constructs a put request based on the changes tracked in the transaction. /// </summary> /// <param name="transaction">The transaction object which tracked the changes made to an object.</param> /// <returns></returns> public virtual PutRequest CreatePutRequest(RmResourceChanges transaction) { if (transaction == null) { throw new ArgumentNullException("transaction"); } RmResource rmObject = transaction.RmObject; if (rmObject == null) { throw new InvalidOperationException("transaction does not have rmObject"); } if (rmObject.ObjectID == null) { throw new InvalidOperationException("The rmObject does not have an ObjectID."); } lock (rmObject) { PutRequest putRequest = new PutRequest(); putRequest.ResourceReferenceProperty = new ResourceReferenceProperty(rmObject.ObjectID.ToString()); if (string.IsNullOrEmpty(rmObject.Locale) == false) { putRequest.ResourceLocaleProperty = new ResourceLocaleProperty(new System.Globalization.CultureInfo(rmObject.Locale)); } putRequest.ModifyRequest = new ModifyRequest(); IList <RmAttributeChange> changes = transaction.GetChanges(); foreach (RmAttributeChange attributeChange in changes) { if (this.ProhibitedAttributes.ContainsKey(attributeChange.Name.Name)) { continue; } DirectoryAccessChange putReqChange = BuildDirectoryAccessChange(attributeChange); if (base.IsMultiValued(attributeChange.Name)) { putReqChange.Operation = attributeChange.Operation.ToString(); } else { if (attributeChange.Operation == RmAttributeChangeOperation.Add) { putReqChange.Operation = RmAttributeChangeOperation.Replace.ToString(); } else if (attributeChange.Operation == RmAttributeChangeOperation.Delete) { putReqChange.Operation = RmAttributeChangeOperation.Replace.ToString(); putReqChange.AttributeValue = null; } else { putReqChange.Operation = attributeChange.Operation.ToString(); } } putRequest.ModifyRequest.Changes.Add(putReqChange); } return(putRequest); } }