private bool ValidateTopRequestItems(TopRequestItems topItems) { // If there is a default query, it should be single one, and there should be no other ops in the request, only fragments; // and opName should not be specified if (topItems.AnonymousQueries.Count > 1) { var aq1 = topItems.AnonymousQueries[1]; AddError("The request may not contain more than one default (anonymous) query", aq1); return(false); } if (topItems.AnonymousQueries.Count > 0) { topItems.DefaultQuery = topItems.AnonymousQueries[0]; if (topItems.Operations.Count > 0) { var op0 = topItems.Operations[0]; AddError("If the request contains a default (anonymous) query, it cannot contain any other operations.", op0); return(false); } } if (topItems.DefaultQuery == null) { if (topItems.Operations.Count == 0) { AddError("The query contains no default query or operations.", null); return(false); } } return(true); }
private TopRequestItems GetTopRequestItems(ParseTreeNode requestDoc) { var topItems = new TopRequestItems(); // query contains operation(s), anonymous ops, and fragment definitions var elemListNode = requestDoc.FindChild(TermNames.RequestElemList); if (elemListNode == null) { return(topItems); } foreach (var node in elemListNode.ChildNodes) { switch (node.Term.Name) { case TermNames.FragmDef: topItems.Fragments.Add(node); break; case TermNames.RequestOp: topItems.Operations.Add(node); break; case TermNames.DefaultQuery: topItems.AnonymousQueries.Add(node); break; } } return(topItems); }