/** * Parse and generate expression from the the given odata expression. * * * @param string $text The text expression to parse * @param ResourceType $resourceType The resource type in which * @param IExpressionProvider $expressionProvider Implementation of IExpressionProvider * * @return FilterInfo * * @throws ODataException If any error occurs while parsing the odata expression or building the php/custom expression. * */ public static function parseExpression2($text, ResourceType $resourceType, \POData\Providers\Expression\IExpressionProvider $expressionProvider) { $expressionParser2 = new ExpressionParser2($text, $resourceType, $expressionProvider instanceof PHPExpressionProvider); $expressionTree = $expressionParser2->parseFilter(); $expressionAsString = null; $expressionProvider->setResourceType($resourceType); $expressionProcessor = new ExpressionProcessor($expressionProvider); try { $expressionAsString = $expressionProcessor->processExpression($expressionTree); } catch (\InvalidArgumentException $invalidArgumentException) { throw ODataException::createInternalServerError($invalidArgumentException->getMessage()); } return new FilterInfo($expressionParser2->_navigationPropertiesUsedInTheExpression, $expressionAsString); }
public function testProcessUnknownAbstractExpressionType() { //Currently the expression parser just ignores expression types it doesn't know //TODO: maybe this should throw instead?? $unknownExpression = \Phockito::mock('POData\\UriProcessor\\QueryProcessor\\ExpressionParser\\Expressions\\AbstractExpression'); $expressionProcessor = new ExpressionProcessor(new PHPExpressionProvider('$lt')); $actual = $expressionProcessor->processExpression($unknownExpression); $this->assertNull($actual); }