protected function EntityNormalizer::getTypedDataIds

Gets the typed data IDs for a type URI.

Parameters

array $types: The type array(s) (value of the 'type' attribute of the incoming data).

Return value

array The typed data IDs.

Throws

\Symfony\Component\Serializer\Exception\UnexpectedValueException

1 call to EntityNormalizer::getTypedDataIds()

File

drupal/core/modules/hal/lib/Drupal/hal/Normalizer/EntityNormalizer.php, line 158
Contains \Drupal\hal\Normalizer\EntityNormalizer.

Class

EntityNormalizer
Converts the Drupal entity object structure to a HAL array structure.

Namespace

Drupal\hal\Normalizer

Code

protected function getTypedDataIds($types) {

  // The 'type' can potentially contain an array of type objects. By default,
  // Drupal only uses a single type in serializing, but allows for multiple
  // types when deserializing.
  if (isset($types['href'])) {
    $types = array(
      $types,
    );
  }
  foreach ($types as $type) {
    if (!isset($type['href'])) {
      throw new UnexpectedValueException('Type must contain an \'href\' attribute.');
    }
    $type_uri = $type['href'];

    // Check whether the URI corresponds to a known type on this site. Break
    // once one does.
    if ($typed_data_ids = $this->linkManager
      ->getTypeInternalIds($type['href'])) {
      break;
    }
  }

  // If none of the URIs correspond to an entity type on this site, no entity
  // can be created. Throw an exception.
  if (empty($typed_data_ids)) {
    throw new UnexpectedValueException(sprintf('Type %s does not correspond to an entity on this site.', $type_uri));
  }
  return $typed_data_ids;
}