You are here

class ResourceObjectData in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/jsonapi/src/JsonApiResource/ResourceObjectData.php \Drupal\jsonapi\JsonApiResource\ResourceObjectData
  2. 9 core/modules/jsonapi/src/JsonApiResource/ResourceObjectData.php \Drupal\jsonapi\JsonApiResource\ResourceObjectData

Represents the primary data for individual and collection documents.

@internal JSON:API maintains no PHP API. The API is the HTTP API. This class may change at any time and could break any dependencies on it.

Hierarchy

  • class \Drupal\jsonapi\JsonApiResource\ResourceObjectData extends \Drupal\jsonapi\JsonApiResource\Data implements \Drupal\jsonapi\JsonApiResource\TopLevelDataInterface

Expanded class hierarchy of ResourceObjectData

See also

https://www.drupal.org/project/drupal/issues/3032787

jsonapi.api.php

5 files declare their use of ResourceObjectData
EntityResource.php in core/modules/jsonapi/src/Controller/EntityResource.php
EntryPoint.php in core/modules/jsonapi/src/Controller/EntryPoint.php
FileUpload.php in core/modules/jsonapi/src/Controller/FileUpload.php
IncludeResolver.php in core/modules/jsonapi/src/IncludeResolver.php
ResourceTestBase.php in core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php

File

core/modules/jsonapi/src/JsonApiResource/ResourceObjectData.php, line 17

Namespace

Drupal\jsonapi\JsonApiResource
View source
class ResourceObjectData extends Data implements TopLevelDataInterface {

  /**
   * ResourceObjectData constructor.
   *
   * @param \Drupal\jsonapi\JsonApiResource\ResourceObject[]|\Drupal\jsonapi\Exception\EntityAccessDeniedHttpException[] $data
   *   Resource objects that are the primary data for the response.
   * @param int $cardinality
   *   The number of resources that this collection may contain.
   *
   * @see \Drupal\jsonapi\JsonApiResource\Data::__construct
   */
  public function __construct($data, $cardinality = -1) {
    assert(Inspector::assertAllObjects($data, ResourceObject::class, EntityAccessDeniedHttpException::class));
    parent::__construct($data, $cardinality);
  }

  /**
   * {@inheritdoc}
   */
  public function getData() {
    return $this
      ->getAccessible();
  }

  /**
   * Gets only data to be exposed.
   *
   * @return static
   */
  public function getAccessible() {
    $accessible_data = [];
    foreach ($this->data as $resource_object) {
      if (!$resource_object instanceof EntityAccessDeniedHttpException) {
        $accessible_data[] = $resource_object;
      }
    }
    return new static($accessible_data, $this->cardinality);
  }

  /**
   * Gets only data to be omitted.
   *
   * @return static
   */
  public function getOmissions() {
    $omitted_data = [];
    foreach ($this->data as $resource_object) {
      if ($resource_object instanceof EntityAccessDeniedHttpException) {
        $omitted_data[] = $resource_object;
      }
    }
    return new OmittedData($omitted_data);
  }

  /**
   * {@inheritdoc}
   */
  public function getMergedLinks(LinkCollection $top_level_links) {
    return $top_level_links;
  }

  /**
   * {@inheritdoc}
   */
  public function getMergedMeta(array $top_level_meta) {
    return $top_level_meta;
  }

}

Members