internal static Deserializer CreateDeserializer(System.Data.Services.RequestDescription description, IDataService dataService, bool update, UpdateTracker tracker) { string str; Encoding encoding; HttpProcessUtility.ReadContentType(dataService.OperationContext.Host.RequestContentType, out str, out encoding); if (DataServiceActionProviderWrapper.IsServiceActionRequest(description)) { return new ParameterDeserializer(update, dataService, tracker, description); } if ((description.TargetKind == RequestTargetKind.OpenPropertyValue) || (description.TargetKind == RequestTargetKind.PrimitiveValue)) { return new RawValueDeserializer(update, dataService, tracker, description); } if (description.TargetKind == RequestTargetKind.MediaResource) { return new MediaResourceDeserializer(update, dataService, tracker, description); } if (((description.TargetKind == RequestTargetKind.Primitive) || (description.TargetKind == RequestTargetKind.ComplexObject)) || ((description.TargetKind == RequestTargetKind.Collection) || (description.TargetKind == RequestTargetKind.OpenProperty))) { return new PropertyDeserializer(update, dataService, tracker, description); } if (description.LinkUri) { return new EntityReferenceLinkDeserializer(update, dataService, tracker, description); } if (description.TargetKind != RequestTargetKind.Resource) { throw new DataServiceException(0x19f, System.Data.Services.Strings.RequestUriProcessor_MethodNotAllowed); } return new EntityDeserializer(update, dataService, tracker, description); }
internal Deserializer(bool update, IDataService dataService, UpdateTracker tracker, System.Data.Services.RequestDescription requestDescription) { this.service = dataService; this.tracker = tracker; this.update = update; this.description = requestDescription; }
internal Deserializer(Deserializer parent) { this.recursionDepth = parent.recursionDepth; this.service = parent.service; this.tracker = parent.tracker; this.update = parent.update; this.description = parent.description; }
internal ODataMessageReaderDeserializer(bool update, IDataService dataService, UpdateTracker tracker, RequestDescription requestDescription, bool enableWcfDataServicesServerBehavior) : base(update, dataService, tracker, requestDescription) { System.Data.Services.ODataRequestMessage requestMessage = new System.Data.Services.ODataRequestMessage(dataService.OperationContext.Host); if (WebUtil.CompareMimeType(requestMessage.ContentType, "*/*")) { requestMessage.ContentType = "application/atom+xml"; } this.messageReader = new ODataMessageReader(requestMessage, WebUtil.CreateMessageReaderSettings(dataService, enableWcfDataServicesServerBehavior), dataService.Provider.GetMetadataModel(base.Service.OperationContext)); this.contentFormat = System.Data.Services.ContentFormat.Unknown; }
internal MediaResourceDeserializer(bool update, IDataService dataService, UpdateTracker tracker, RequestDescription requestDescription) : base(update, dataService, tracker, requestDescription) { }
internal RawValueDeserializer(bool update, IDataService dataService, UpdateTracker tracker, RequestDescription requestDescription) : base(update, dataService, tracker, requestDescription, true) { }
internal EntityReferenceLinkDeserializer(bool update, IDataService dataService, UpdateTracker tracker, RequestDescription requestDescription) : base(update, dataService, tracker, requestDescription, true) { }
internal ParameterDeserializer(bool update, IDataService dataService, UpdateTracker tracker, RequestDescription requestDescription) : base(update, dataService, tracker, requestDescription, false) { }
internal static object CreateMediaLinkEntry(string fullTypeName, Stream requestStream, IDataService service, System.Data.Services.RequestDescription description, UpdateTracker tracker) { object target = service.Updatable.CreateResource(description.LastSegmentInfo.TargetContainer.Name, fullTypeName); tracker.TrackAction(target, description.LastSegmentInfo.TargetContainer, UpdateOperations.Add); SetStreamPropertyValue(target, requestStream, service, description); return target; }
internal static object HandleBindOperation(System.Data.Services.RequestDescription description, object linkResource, IDataService service, UpdateTracker tracker) { ResourceSetWrapper wrapper; object target = GetEntityResourceToModify(description, service, true, out wrapper); description.UpdateAndCheckEpmFeatureVersion(wrapper, service); tracker.TrackAction(target, wrapper, UpdateOperations.Change); if (description.IsSingleResult) { service.Updatable.SetReference(target, description.Property.Name, linkResource); return target; } service.Updatable.AddReferenceToCollection(target, description.Property.Name, linkResource); return target; }