src/POData/UriProcessor/QueryProcessor/SkipTokenParser/SkipTokenParser.php
/**
     * Parse the given skiptoken, validate it using the given InternalOrderByInfo 
     * and generates instance of InternalSkipTokenInfo.
     * 
     * @param ResourceType        &$resourceType        The resource type of the
     *                                                  resource targeted by the
     *                                                  resource path.
     * @param InternalOrderByInfo &$internalOrderByInfo The $orderby details.
     * @param string              $skipToken            The $skiptoken value.
     * 
     * @return InternalSkipTokenInfo
     * 
     * @throws ODataException
     */
Parse the given skiptoken, validate it using the given InternalOrderByInfo
and generates instance of InternalSkipTokenInfo.

@param ResourceType        &$resourceType        The resource type of the
resource targeted by the
resource path.




Parse the given skiptoken validate it using the given InternalOrderByInfo and generates instance of InternalSkipTokenInfo . @param ResourceType &$resourceType The resource type of the resource targeted by the resource path .
public static function parseSkipTokenClause(
        ResourceType &$resourceType, 
        InternalOrderByInfo &$internalOrderByInfo, 
        $skipToken
    ) {
        $tokenValueDescriptor = null;
        if (!KeyDescriptor::tryParseValuesFromSkipToken(
            $skipToken, 
            $tokenValueDescriptor
        )
        ) {
            throw ODataException::createSyntaxError(
                Messages::skipTokenParserSyntaxError($skipToken)
            );
        }
        $orderByPathSegments = null;
        $positionalValues = &$tokenValueDescriptor->getPositionalValuesByRef();
        $count = count($positionalValues);
        $orderByPathSegments = $internalOrderByInfo->getOrderByPathSegments();
        $orderByPathCount = count($orderByPathSegments);
        if ($count != ($orderByPathCount)) {
			    throw ODataException::createBadRequestError(
                    Messages::skipTokenParserSkipTokenNotMatchingOrdering(
                        $count, $skipToken, $orderByPathCount
                    )
                );
        }
        $i = 0;
        foreach ($orderByPathSegments as $orderByPathSegment) {
            $typeProvidedInSkipToken = $positionalValues[$i][1];
            if (!($typeProvidedInSkipToken instanceof Null1)) {
                $orderBySubPathSegments = $orderByPathSegment->getSubPathSegments();
                $j = count($orderBySubPathSegments) - 1;
                $expectedType = $orderBySubPathSegments[$j]->getInstanceType();
                if (!$expectedType->isCompatibleWith($typeProvidedInSkipToken)) {
                    throw ODataException::createSyntaxError(
                        Messages::skipTokenParserInCompatibleTypeAtPosition(
                            $skipToken, $expectedType->getFullTypeName(), $i,
                            $typeProvidedInSkipToken->getFullTypeName()
                        )
                    );
                }
            }
            $i++;
        }
        return  new InternalSkipTokenInfo(
            $internalOrderByInfo, 
            $positionalValues, 
            $resourceType
        );
    }
public static function parseSkipTokenClause ( ResourceType & $ resourceType , InternalOrderByInfo & $ internalOrderByInfo , $ skipToken ) { $ tokenValueDescriptor = null ; if ( ! KeyDescriptor :: tryParseValuesFromSkipToken ( $ skipToken , $ tokenValueDescriptor ) ) { throw ODataException :: createSyntaxError ( Messages :: skipTokenParserSyntaxError ( $ skipToken ) ) ; } $ orderByPathSegments = null ; $ positionalValues = & $ tokenValueDescriptor -> getPositionalValuesByRef ( ) ; $ count = count ( $ positionalValues ) ; $ orderByPathSegments = $ internalOrderByInfo -> getOrderByPathSegments ( ) ; $ orderByPathCount = count ( $ orderByPathSegments ) ; if ( $ count != ( $ orderByPathCount ) ) { throw ODataException :: createBadRequestError ( Messages :: skipTokenParserSkipTokenNotMatchingOrdering ( $ count , $ skipToken , $ orderByPathCount ) ) ; } $ i = 0 ; foreach ( $ orderByPathSegments as $ orderByPathSegment ) { $ typeProvidedInSkipToken = $ positionalValues [ $ i ] [ 1 ] ; if ( ! ( $ typeProvidedInSkipToken instanceof Null1 ) ) { $ orderBySubPathSegments = $ orderByPathSegment -> getSubPathSegments ( ) ; $ j = count ( $ orderBySubPathSegments ) - 1 ; $ expectedType = $ orderBySubPathSegments [ $ j ] -> getInstanceType ( ) ; if ( ! $ expectedType -> isCompatibleWith ( $ typeProvidedInSkipToken ) ) { throw ODataException :: createSyntaxError ( Messages :: skipTokenParserInCompatibleTypeAtPosition ( $ skipToken , $ expectedType -> getFullTypeName ( ) , $ i , $ typeProvidedInSkipToken -> getFullTypeName ( ) ) ) ; } } $ i ++ ; } return new InternalSkipTokenInfo ( $ internalOrderByInfo , $ positionalValues , $ resourceType ) ; }
Parse the given skiptoken, validate it using the given InternalOrderByInfo
 and generates instance of InternalSkipTokenInfo.
Parse the given skiptoken validate it using the given InternalOrderByInfo and generates instance of InternalSkipTokenInfo .
//$positionalValues are of type array(int, array(string, IType))