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);
        }
Exemplo n.º 2
0
 protected XDocument GetODataDocument(Uri uri)
 {
     return(XDocumentManager.Get(uri));
 }
Exemplo n.º 3
0
 private XDocument LoadODataMetadataUri()
 {
     return(XDocumentManager.Get(ODataMetadataUri));
 }
Exemplo n.º 4
0
 private XDocument LoadODataSourceUri()
 {
     return(XDocumentManager.Get(ODataSourceUri));
 }