bool TryReadPayloadAsObject(IHttpEntity requestEntity, IMediaTypeReader reader, IOperation operation)
        {
            Log.CodecSupportsFullObjectResolution();
            foreach (var member in from m in operation.Inputs
                     where m.Binder.IsEmpty
                     select m)
            {
                Log.ProcessingMember(member);
                try
                {
                    var entityInstance = reader.ReadFrom(requestEntity,
                                                         member.Member.Type,
                                                         member.Member.Name);
                    Log.Result(entityInstance);

                    if (entityInstance != Missing.Value)
                    {
                        if (!member.Binder.SetInstance(entityInstance))
                        {
                            Log.BinderInstanceAssignmentFailed();
                            return(false);
                        }
                        Log.BinderInstanceAssignmentSucceeded();
                    }
                }
                catch (Exception e)
                {
                    ErrorCollector.AddServerError(CreateErrorForException(e));
                    return(false);
                }
            }
            return(true);
        }
Exemple #2
0
        public T Decode <T>() where T : class
        {
            if (WebResponse.ContentLength == 0 || ContentType == null || WebResponse.StatusCode == HttpStatusCode.NoContent)
            {
                return(null);
            }

            IMediaTypeReader reader  = Session.Service.CodecManager.GetReader(typeof(T), ContentType).Codec;
            ReaderContext    context = new ReaderContext(WebResponse.GetResponseStream(), typeof(T), WebResponse, Session);
            T result = (T)reader.ReadFrom(context);

            ContextRegistrator.RegisterContext(Session, BaseUri, result);
            return(result);
        }
        private bool TryReadPayloadAsObject(IHttpEntity requestEntity, IMediaTypeReader reader, IOperation operation)
        {
            this.Log.CodecSupportsFullObjectResolution();

            foreach (var member in from m in operation.Inputs
                                   where m.Binder.IsEmpty
                                   select m)
            {
                this.Log.ProcessingMember(member);

                try
                {
                    var entityInstance = reader.ReadFrom(requestEntity, member.Member.Type, member.Member.Name);
                    
                    this.Log.Result(entityInstance);

                    if (entityInstance != Missing.Value)
                    {
                        if (!member.Binder.SetInstance(entityInstance))
                        {
                            this.Log.BinderInstanceAssignmentFailed();
                            
                            return false;
                        }

                        this.Log.BinderInstanceAssignmentSucceeded();
                    }
                }
                catch (Exception e)
                {
                    this.ErrorCollector.AddServerError(CreateErrorForException(e));
                    
                    return false;
                }
            }

            return true;
        }