/** * Parse the given expand and select clause, validate them * and build 'Projection Tree' * * @param ResourceSetWrapper $resourceSetWrapper The resource set identified by the resource path uri. * @param ResourceType $resourceType The resource type of entities identified by the resource path uri. * @param InternalOrderByInfo $internalOrderInfo The top level sort information, this will be set if the $skip, $top is * specified in the * request uri or Server * side paging is * enabled for top level * resource * @param int $skipCount The value of $skip option applied to the top level resource * set identified by the * resource path uri * null means $skip * option is not present. * @param int $takeCount The minimum among the value of $top option applied to and * page size configured * for the top level * resource * set identified * by the resource * path uri. * null means $top option * is not present and/or * page size is not * configured for top * level resource set. * @param string $expand The value of $expand clause * @param string $select The value of $select clause * @param ProvidersWrapper $providerWrapper Reference to metadata and query provider wrapper * * @return RootProjectionNode Returns root of the 'Projection Tree' * * @throws ODataException If any error occur while parsing expand and/or select clause * */ public static function parseExpandAndSelectClause(ResourceSetWrapper $resourceSetWrapper, ResourceType $resourceType, $internalOrderInfo, $skipCount, $takeCount, $expand, $select, ProvidersWrapper $providerWrapper) { $parser = new ExpandProjectionParser($providerWrapper); $parser->_rootProjectionNode = new RootProjectionNode($resourceSetWrapper, $internalOrderInfo, $skipCount, $takeCount, null, $resourceType); $parser->_parseExpand($expand); $parser->_parseSelect($select); return $parser->_rootProjectionNode; }