public override IEnumerable <INodeFactory> GetNodeChildren(IContext context) { XDocument document = GetODataDocument(context); var entries = GetEntries(document); var entryFactories = new List <INodeFactory>(); foreach (var entry in entries) { var id = entry.Descendants(Names.Id).First().Value; entryFactories.Add(new ODataEntryNodeFactory(new Uri(id), _metadata, entry)); } var next = GetNextResultSetURI(document); if (null != next && !context.Force) { context.WriteWarning( String.Format( @"The OData collection at URI [{0}] has returned a partial result set. Specify the -force parameter to retrieve the complete result set, or narrow your query using the -filter parameter. For more information on filtering, type: get-help about_OData_Query", BaseUri ) ); } // resolve all <link rel="next" /> when -force is supplied if (context.Force) { while (null != next) { var xdoc = XDocumentManager.Get(next); entries = GetEntries(xdoc); foreach (var entry in entries) { var id = entry.Descendants(Names.Id).First().Value; entryFactories.Add(new ODataEntryNodeFactory(new Uri(id), _metadata, entry)); } next = GetNextResultSetURI(xdoc); } } return(entryFactories); }
protected XDocument GetODataDocument(Uri uri) { return(XDocumentManager.Get(uri)); }
private XDocument LoadODataMetadataUri() { return(XDocumentManager.Get(ODataMetadataUri)); }
private XDocument LoadODataSourceUri() { return(XDocumentManager.Get(ODataSourceUri)); }