Example #1
0
 /**
  * Query for a related resource set or resource set reference pointed by the 
  * given segment descriptor and update the descriptor with the result.
  * 
  * @param SegmentDescriptor &$segmentDescriptor Describes the related resource
  *                                              to query.
  * 
  * @return void
  */
 private function _handleSegmentTargetsToRelatedResource(SegmentDescriptor &$segmentDescriptor)
 {
     $projectedProperty = $segmentDescriptor->getProjectedProperty();
     $projectedPropertyKind = $projectedProperty->getKind();
     if ($projectedPropertyKind == ResourcePropertyKind::RESOURCESET_REFERENCE) {
         if ($segmentDescriptor->isSingleResult()) {
             $entityInstance = $this->_provider->getResourceFromRelatedResourceSet($segmentDescriptor->getPrevious()->getTargetResourceSetWrapper()->getResourceSet(), $segmentDescriptor->getPrevious()->getResult(), $segmentDescriptor->getTargetResourceSetWrapper()->getResourceSet(), $projectedProperty, $segmentDescriptor->getKeyDescriptor());
             $segmentDescriptor->setResult($entityInstance);
         } else {
             $entityInstances = $this->_provider->getRelatedResourceSet($segmentDescriptor->getPrevious()->getTargetResourceSetWrapper()->getResourceSet(), $segmentDescriptor->getPrevious()->getResult(), $segmentDescriptor->getTargetResourceSetWrapper()->getResourceSet(), $segmentDescriptor->getProjectedProperty(), $this->_requestDescription->getInternalFilterInfo(), null, null, null, null);
             $segmentDescriptor->setResult($entityInstances);
         }
     } else {
         if ($projectedPropertyKind == ResourcePropertyKind::RESOURCE_REFERENCE) {
             $entityInstance = $this->_provider->getRelatedResourceReference($segmentDescriptor->getPrevious()->getTargetResourceSetWrapper()->getResourceSet(), $segmentDescriptor->getPrevious()->getResult(), $segmentDescriptor->getTargetResourceSetWrapper()->getResourceSet(), $segmentDescriptor->getProjectedProperty());
             $segmentDescriptor->setResult($entityInstance);
         } else {
             //Unexpected state
         }
     }
 }