public void PutCompositeTestMultipleUpdates() { ResourceManagementClient client = new ResourceManagementClient(); ResourceObject resource1 = null; ResourceObject resource2 = null; try { // Create the empty object resource1 = client.CreateResource(UnitTestHelper.ObjectTypeUnitTestObjectName); UnitTestHelper.PopulateTestUserData(resource1); client.SaveResource(resource1); resource2 = client.CreateResource(UnitTestHelper.ObjectTypeUnitTestObjectName); UnitTestHelper.PopulateTestUserData(resource2); client.SaveResource(resource2); resource1.Refresh(); resource2.Refresh(); // Make the changes resource1.Attributes[UnitTestHelper.AttributeStringSV].SetValue(UnitTestHelper.TestDataString2); resource2.Attributes[UnitTestHelper.AttributeStringSV].SetValue(UnitTestHelper.TestDataString3); client.SaveResources(new List <ResourceObject>() { resource1, resource2 }); // Ensure there are no pending changes Assert.AreEqual(0, resource1.PendingChanges.Count); Assert.AreEqual(0, resource2.PendingChanges.Count); resource1 = client.GetResource(resource1.ObjectID); resource2 = client.GetResource(resource2.ObjectID); Assert.AreEqual(UnitTestHelper.TestDataString2, resource1.Attributes[UnitTestHelper.AttributeStringSV].StringValue); Assert.AreEqual(UnitTestHelper.TestDataString3, resource2.Attributes[UnitTestHelper.AttributeStringSV].StringValue); } finally { if (resource1 != null && !resource1.IsPlaceHolder) { client.DeleteResource(resource1); } if (resource2 != null && !resource2.IsPlaceHolder) { client.DeleteResource(resource2); } } }
public Stream CreateResource(ResourceUpdateRequest request) { try { AttributeValueUpdate objectTypeUpdate = request.Attributes.FirstOrDefault(t => t.Name == AttributeNames.ObjectType); if (objectTypeUpdate == null) { throw new ArgumentException("An object type must be specified"); } string objectType = objectTypeUpdate.Value?[0] as string; if (objectType == null) { throw new ArgumentException("An object type must be specified"); } ResourceObject resource = Global.Client.CreateResource(objectType); foreach (AttributeValueUpdate kvp in request.Attributes) { if (kvp.Value.Length > 1) { resource.Attributes[kvp.Name].SetValue(kvp.Value); } else if (kvp.Value.Length == 1) { resource.Attributes[kvp.Name].SetValue(kvp.Value[0]); } else { resource.Attributes[kvp.Name].RemoveValues(); } } Global.Client.SaveResource(resource); string bareID = resource.ObjectID.ToString().Replace("urn:uuid:", string.Empty); Uri url = new Uri(WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri, bareID); WebOperationContext.Current.OutgoingResponse.Headers.Add(HttpResponseHeader.Location, url.ToString()); WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Created; if (WebResponseHelper.RequestNoBody()) { return(null); } else { resource.Refresh(); return(WebResponseHelper.GetResponse(resource, false)); } } catch (WebFaultException) { throw; } catch (WebFaultException <Error> ) { throw; } catch (Exception ex) { ResourceManagementWebServicev2.HandleException(ex); throw; } }