示例#1
0
        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);
        }
示例#2
0
 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;
 }
示例#3
0
 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)
 {
 }
示例#6
0
 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)
 {
 }
示例#8
0
 internal ParameterDeserializer(bool update, IDataService dataService, UpdateTracker tracker, RequestDescription requestDescription) : base(update, dataService, tracker, requestDescription, false)
 {
 }
示例#9
0
 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;
 }
示例#10
0
 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;
 }