internal static IEnumerable<TElement> EndExecute<TElement>(object source, DataServiceContext context, IAsyncResult asyncResult) { QueryResult result = null; try { result = QueryResult.EndExecute<TElement>(source, asyncResult); return result.ProcessResult<TElement>(context, result.ServiceRequest.Plan); } catch (DataServiceQueryException ex) { Exception inEx = ex; while (inEx.InnerException != null) { inEx = inEx.InnerException; } DataServiceClientException serviceEx = inEx as DataServiceClientException; if (context.IgnoreResourceNotFoundException && serviceEx != null && serviceEx.StatusCode == (int)HttpStatusCode.NotFound) { QueryOperationResponse qor = new QueryOperationResponse<TElement>(new Dictionary<string, string>(ex.Response.Headers), ex.Response.Query, MaterializeAtom.EmptyResults); qor.StatusCode = (int)HttpStatusCode.NotFound; return (IEnumerable<TElement>)qor; } throw; } }
internal QueryOperationResponse<TElement> Execute<TElement>(DataServiceContext context, QueryComponents queryComponents) { QueryResult result = null; try { DataServiceRequest<TElement> serviceRequest = new DataServiceRequest<TElement>(queryComponents, this.Plan); result = serviceRequest.CreateResult(this, context, null, null); result.Execute(); return result.ProcessResult<TElement>(context, this.Plan); } catch (InvalidOperationException ex) { QueryOperationResponse operationResponse = result.GetResponse<TElement>(MaterializeAtom.EmptyResults); if (null != operationResponse) { if (context.IgnoreResourceNotFoundException) { DataServiceClientException cex = ex as DataServiceClientException; if (cex != null && cex.StatusCode == (int)HttpStatusCode.NotFound) { return (QueryOperationResponse<TElement>)operationResponse; } } operationResponse.Error = ex; throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, operationResponse); } throw; } }
internal static IEnumerable <TElement> EndExecute <TElement>(object source, DataServiceContext context, string method, IAsyncResult asyncResult) { QueryResult result = null; try { result = QueryResult.EndExecuteQuery <TElement>(source, method, asyncResult); return(result.ProcessResult <TElement>(result.ServiceRequest.Plan)); } catch (DataServiceQueryException exception) { Exception innerException = exception; while (innerException.InnerException != null) { innerException = innerException.InnerException; } DataServiceClientException exception3 = innerException as DataServiceClientException; if ((!context.IgnoreResourceNotFoundException || (exception3 == null)) || (exception3.StatusCode != 0x194)) { throw; } QueryOperationResponse response = new QueryOperationResponse <TElement>(new Dictionary <string, string>(exception.Response.Headers), exception.Response.Query, MaterializeAtom.EmptyResults) { StatusCode = 0x194 }; return((IEnumerable <TElement>)response); } }
/// <summary> /// execute uri and materialize result /// </summary> /// <typeparam name="TElement">element type</typeparam> /// <param name="context">context</param> /// <param name="queryComponents">query components for request to execute</param> /// <returns>enumerable of results</returns> internal QueryOperationResponse <TElement> Execute <TElement>(DataServiceContext context, QueryComponents queryComponents) { QueryResult result = null; try { Uri requestUri = queryComponents.Uri; DataServiceRequest <TElement> serviceRequest = new DataServiceRequest <TElement>(requestUri, queryComponents, this.Plan); result = serviceRequest.CreateExecuteResult(this, context, null, null, Util.ExecuteMethodName); result.AllowDirectNetworkStreamReading = context.AllowDirectNetworkStreamReading; result.ExecuteQuery(); return(result.ProcessResult <TElement>(this.Plan)); } catch (InvalidOperationException ex) { if (result != null) { QueryOperationResponse operationResponse = result.GetResponse <TElement>(MaterializeAtom.EmptyResults); if (null != operationResponse) { if (context.IgnoreResourceNotFoundException) { DataServiceClientException cex = ex as DataServiceClientException; if (cex != null && cex.StatusCode == (int)HttpStatusCode.NotFound) { // don't throw return((QueryOperationResponse <TElement>)operationResponse); } } operationResponse.Error = ex; throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, operationResponse); } } throw; } }