Beispiel #1
0
 /**
  * Process the resource path and query options of client's request uri.
  * 
  * @param IService $service Reference to the data service instance.
  * 
  * @return URIProcessor
  * 
  * @throws ODataException
  */
 public static function process(IService $service)
 {
     $absoluteRequestUri = $service->getHost()->getAbsoluteRequestUri();
     $absoluteServiceUri = $service->getHost()->getAbsoluteServiceUri();
     if (!$absoluteServiceUri->isBaseOf($absoluteRequestUri)) {
         throw ODataException::createInternalServerError(Messages::uriProcessorRequestUriDoesNotHaveTheRightBaseUri($absoluteRequestUri->getUrlAsString(), $absoluteServiceUri->getUrlAsString()));
     }
     $uriProcessor = new UriProcessor($service);
     //Parse the resource path part of the request Uri.
     $uriProcessor->request = ResourcePathProcessor::process($service);
     $uriProcessor->request->setUriProcessor($uriProcessor);
     //Parse the query string options of the request Uri.
     QueryProcessor::process($uriProcessor->request, $service);
     return $uriProcessor;
 }
Beispiel #2
0
 /**
  * Process the OData query options and update RequestDescription accordingly.
  *
  * @param RequestDescription $request Description of the request submitted by client.
  * @param IService        $service        Reference to the data service.
  * 
  * @return void
  * 
  * @throws ODataException
  */
 public static function process(RequestDescription $request, IService $service)
 {
     $queryProcessor = new QueryProcessor($request, $service);
     if ($request->getTargetSource() == TargetSource::NONE) {
         //A service directory, metadata or batch request
         $queryProcessor->_checkForEmptyQueryArguments();
     } else {
         $queryProcessor->_processQuery();
     }
     unset($queryProcessor);
 }