/**
  * @param ResourceCollectionInterface $resources
  * @param $relationshipName
  * @param LinkedResourcesSerialization $resourcesSerialization
  * @param array &$linkedResources
  */
 private function processToManyRelationship(ResourceCollectionInterface $resources, $relationshipName, array &$linkedResources, LinkedResourcesSerialization $resourcesSerialization)
 {
     foreach ($resources as $resource) {
         if ($resource->isRelationshipBlacklisted($relationshipName)) {
             $message = sprintf(self::ERROR_UNKOWN_RELATIONSHIP, $relationshipName);
             throw new InvalidRelationshipException($message);
         }
         $relationship = $resource->getMetadata()->relationships->toMany[$relationshipName];
         // @todo Refactorizar; la siguiente lĂ­nea es un hack.
         $collection = $resource->callGetter($relationshipName);
         $collection = EntityResource::normalizeToManyRelation($collection, $relationshipName);
         // @todo Mover.
         foreach ($collection as $entity) {
             $this->addLinkedResource($relationship, $entity, $resourcesSerialization);
             $linkedResource = $resourcesSerialization->getLinkedResource($relationship->type, EntityResource::getStringId($entity));
             if (!empty($linkedResource)) {
                 $linkedResources[] = $linkedResource;
             } else {
                 throw new SerializationException(sprintf(self::ERROR_INHERITANCE_MAPPING, $relationship->type));
             }
         }
     }
 }
 private function getResourceLinks(EntityResource $resource)
 {
     $links = [];
     foreach ($this->resource->getMetadata()->relationships->toOne as $relationship => $relation) {
         $entity = $this->resource->callGetter($relationship);
         EntityResource::validateToOneRelation($entity, $relationship);
         $links[$relationship] = $this->securityContext->isGranted(static::ACCESS_VIEW, $entity) ? EntityResource::getStringId($entity) : NULL;
     }
     foreach ($this->resource->getMetadata()->relationships->toMany as $relationship => $relation) {
         $collection = $this->resource->callGetter($relationship);
         $collection = EntityResource::normalizeToManyRelation($collection, $relationship);
         $links[$relationship] = [];
         foreach ($collection as $entity) {
             if (!$this->securityContext->isGranted(static::ACCESS_VIEW, $entity)) {
                 continue;
             }
             $links[$relationship][] = EntityResource::getStringId($entity);
         }
     }
     return $links;
 }