update drupal
This commit is contained in:
@@ -63,7 +63,7 @@ use Drupal\Core\Access\AccessResult;
|
||||
*
|
||||
* @see https://github.com/json-api/json-api/pull/1268
|
||||
* @see https://github.com/json-api/json-api/pull/1311
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2955020
|
||||
* @see https://www.drupal.org/project/drupal/issues/2955020
|
||||
*
|
||||
* By implementing revision support as a profile, the JSON:API module should be
|
||||
* maximally compatible with other systems.
|
||||
@@ -117,7 +117,7 @@ use Drupal\Core\Access\AccessResult;
|
||||
* It is not yet possible to request a collection of revisions. This is still
|
||||
* under development in issue [#3009588].
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3009588.
|
||||
* @see https://www.drupal.org/project/drupal/issues/3009588.
|
||||
* @see https://tools.ietf.org/html/rfc5829
|
||||
* @see https://www.drupal.org/docs/8/modules/jsonapi/revisions
|
||||
*
|
||||
|
||||
@@ -31,7 +31,7 @@ use Symfony\Component\Routing\RouterInterface;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class EntityAccessChecker {
|
||||
@@ -238,7 +238,7 @@ class EntityAccessChecker {
|
||||
*
|
||||
* @todo: remove when a generic revision access API exists in Drupal core, and
|
||||
* also remove the injected "node" and "media" services.
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2992833#comment-12818386
|
||||
* @see https://www.drupal.org/project/drupal/issues/2992833#comment-12818386
|
||||
*/
|
||||
protected function checkRevisionViewAccess(EntityInterface $entity, AccountInterface $account) {
|
||||
assert($entity instanceof RevisionableInterface);
|
||||
@@ -257,7 +257,7 @@ class EntityAccessChecker {
|
||||
|
||||
default:
|
||||
$reason = 'Only node and media revisions are supported by JSON:API.';
|
||||
$reason .= ' For context, see https://www.drupal.org/project/jsonapi/issues/2992833#comment-12818258.';
|
||||
$reason .= ' For context, see https://www.drupal.org/project/drupal/issues/2992833#comment-12818258.';
|
||||
$reason .= ' To contribute, see https://www.drupal.org/project/drupal/issues/2350939 and https://www.drupal.org/project/drupal/issues/2809177.';
|
||||
$access = AccessResult::neutral($reason);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ use Symfony\Component\Routing\Route;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class RelationshipFieldAccess implements AccessInterface {
|
||||
|
||||
@@ -32,7 +32,7 @@ use Drupal\jsonapi\Query\Filter;
|
||||
* @see https://www.drupal.org/project/drupal/issues/2809177
|
||||
* @see https://www.drupal.org/project/drupal/issues/777578
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class TemporaryQueryGuard {
|
||||
|
||||
@@ -67,7 +67,7 @@ use Drupal\Core\Http\Exception\CacheableBadRequestHttpException;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class FieldResolver {
|
||||
@@ -256,18 +256,21 @@ class FieldResolver {
|
||||
* The JSON:API resource type from which to resolve the field name.
|
||||
* @param string $external_field_name
|
||||
* The public field name to map to a Drupal field name.
|
||||
* @param string $operator
|
||||
* (optional) The operator of the condition for which the path should be
|
||||
* resolved.
|
||||
*
|
||||
* @return string
|
||||
* The mapped field name.
|
||||
*
|
||||
* @throws \Drupal\Core\Http\Exception\CacheableBadRequestHttpException
|
||||
*/
|
||||
public function resolveInternalEntityQueryPath($resource_type, $external_field_name) {
|
||||
public function resolveInternalEntityQueryPath($resource_type, $external_field_name, $operator = NULL) {
|
||||
$function_args = func_get_args();
|
||||
// @todo Remove this conditional block in drupal:9.0.0 and add a type hint
|
||||
// to the first argument of this method.
|
||||
// @see https://www.drupal.org/project/drupal/issues/3078045
|
||||
if (count($function_args) === 3) {
|
||||
if (count($function_args) === 3 && is_string($resource_type)) {
|
||||
@trigger_error('Passing the entity type ID and bundle to ' . __METHOD__ . ' is deprecated in drupal:8.8.0 and will throw a fatal error in drupal:9.0.0. Pass a JSON:API resource type instead. See https://www.drupal.org/node/3078036', E_USER_DEPRECATED);
|
||||
list($entity_type_id, $bundle, $external_field_name) = $function_args;
|
||||
$resource_type = $this->resourceTypeRepository->get($entity_type_id, $bundle);
|
||||
@@ -368,7 +371,10 @@ class FieldResolver {
|
||||
// If there are no remaining path parts, the process is finished unless
|
||||
// the field has multiple properties, in which case one must be specified.
|
||||
if (empty($parts)) {
|
||||
if ($property_specifier_needed) {
|
||||
// If the operator is asserting the presence or absence of a
|
||||
// relationship entirely, it does not make sense to require a property
|
||||
// specifier.
|
||||
if ($property_specifier_needed && (!$at_least_one_entity_reference_field || !in_array($operator, ['IS NULL', 'IS NOT NULL'], TRUE))) {
|
||||
$possible_specifiers = array_map(function ($specifier) use ($at_least_one_entity_reference_field) {
|
||||
return $at_least_one_entity_reference_field && $specifier !== 'id' ? "meta.$specifier" : $specifier;
|
||||
}, $candidate_property_names);
|
||||
@@ -538,7 +544,7 @@ class FieldResolver {
|
||||
*/
|
||||
protected function isMemberFilterable($external_name, array $resource_types) {
|
||||
return array_reduce($resource_types, function ($carry, ResourceType $resource_type) use ($external_name) {
|
||||
// @todo: remove the next line and uncomment the following one in https://www.drupal.org/project/jsonapi/issues/3017047.
|
||||
// @todo: remove the next line and uncomment the following one in https://www.drupal.org/project/drupal/issues/3017047.
|
||||
return $carry ?: $external_name === 'id' || $resource_type->isFieldEnabled($resource_type->getInternalName($external_name));
|
||||
/*return $carry ?: in_array($external_name, ['id', 'type']) || $resource_type->isFieldEnabled($resource_type->getInternalName($external_name));*/
|
||||
}, FALSE);
|
||||
@@ -640,7 +646,7 @@ class FieldResolver {
|
||||
$prior_parts = array_slice($unresolved_path_parts, 0, count($unresolved_path_parts) - count($remaining_parts));
|
||||
return implode('.', array_merge($prior_parts, [$reference_name], $remaining_parts));
|
||||
}, $unique_reference_names);
|
||||
// @todo Add test coverage for this in https://www.drupal.org/project/jsonapi/issues/2971281
|
||||
// @todo Add test coverage for this in https://www.drupal.org/project/drupal/issues/2971281
|
||||
$message = sprintf('Ambiguous path. Try one of the following: %s, in place of the given path: %s', implode(', ', $choices), implode('.', $unresolved_path_parts));
|
||||
$cacheability = (new CacheableMetadata())->addCacheContexts(['url.query_args:filter', 'url.query_args:sort']);
|
||||
throw new CacheableBadRequestHttpException($cacheability, $message);
|
||||
|
||||
@@ -65,7 +65,7 @@ use Symfony\Component\Serializer\SerializerInterface;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class EntityResource {
|
||||
@@ -307,7 +307,7 @@ class EntityResource {
|
||||
*/
|
||||
public function patchIndividual(ResourceType $resource_type, EntityInterface $entity, Request $request) {
|
||||
if ($entity instanceof RevisionableInterface && !($entity->isLatestRevision() && $entity->isDefaultRevision())) {
|
||||
throw new BadRequestHttpException('Updating a resource object that has a working copy is not yet supported. See https://www.drupal.org/project/jsonapi/issues/2795279.');
|
||||
throw new BadRequestHttpException('Updating a resource object that has a working copy is not yet supported. See https://www.drupal.org/project/drupal/issues/2795279.');
|
||||
}
|
||||
|
||||
$parsed_entity = $this->deserialize($resource_type, $request, JsonApiDocumentTopLevel::class);
|
||||
@@ -408,7 +408,7 @@ class EntityResource {
|
||||
catch (\LogicException $e) {
|
||||
// Ensure good DX when an entity query involves a config entity type.
|
||||
// For example: getting users with a particular role, which is a config
|
||||
// entity type: https://www.drupal.org/project/jsonapi/issues/2959445.
|
||||
// entity type: https://www.drupal.org/project/drupal/issues/2959445.
|
||||
// @todo Remove the message parsing in https://www.drupal.org/project/drupal/issues/3028967.
|
||||
if (strpos($e->getMessage(), 'Getting the base fields is not supported for entity type') === 0) {
|
||||
preg_match('/entity type (.*)\./', $e->getMessage(), $matches);
|
||||
|
||||
@@ -23,7 +23,7 @@ use Symfony\Component\Routing\Exception\RouteNotFoundException;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class EntryPoint extends ControllerBase {
|
||||
|
||||
@@ -34,7 +34,7 @@ use Symfony\Component\Validator\ConstraintViolationInterface;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class FileUpload {
|
||||
@@ -179,7 +179,7 @@ class FileUpload {
|
||||
throw new UnprocessableEntityHttpException($message);
|
||||
}
|
||||
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$self_link = new Link(new CacheableMetadata(), Url::fromRoute('jsonapi.file--file.individual', ['entity' => $file->uuid()]), 'self');
|
||||
/* $self_link = new Link(new CacheableMetadata(), $this->entity->toUrl('jsonapi'), ['self']); */
|
||||
$links = new LinkCollection(['self' => $self_link]);
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ use Symfony\Component\DependencyInjection\Reference;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class RegisterSerializationClassesCompilerPass extends DrupalRegisterSerializationClassesCompilerPass {
|
||||
|
||||
@@ -10,7 +10,7 @@ use Drupal\serialization\Encoder\JsonEncoder as SerializationJsonEncoder;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class JsonEncoder extends SerializationJsonEncoder {
|
||||
|
||||
@@ -12,7 +12,7 @@ use Drupal\jsonapi\Exception\UnprocessableHttpEntityException;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
trait EntityValidationTrait {
|
||||
|
||||
@@ -18,7 +18,7 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class DefaultExceptionSubscriber extends SerializationDefaultExceptionSubscriber {
|
||||
|
||||
@@ -16,7 +16,7 @@ use Symfony\Component\HttpKernel\KernelEvents;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class JsonApiRequestValidator implements EventSubscriberInterface {
|
||||
|
||||
@@ -19,7 +19,7 @@ use Symfony\Component\Serializer\SerializerInterface;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* This is 99% identical to:
|
||||
|
||||
@@ -20,7 +20,7 @@ use Symfony\Component\HttpKernel\KernelEvents;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\rest\EventSubscriber\ResourceResponseSubscriber
|
||||
|
||||
@@ -18,7 +18,7 @@ use Drupal\jsonapi\JsonApiResource\ResourceIdentifierTrait;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class EntityAccessDeniedHttpException extends CacheableAccessDeniedHttpException implements ResourceIdentifierInterface {
|
||||
@@ -71,7 +71,7 @@ class EntityAccessDeniedHttpException extends CacheableAccessDeniedHttpException
|
||||
$error['reason'] = $entity_access->getReason();
|
||||
}
|
||||
$this->error = $error;
|
||||
// @todo: remove this ternary operation in https://www.drupal.org/project/jsonapi/issues/2997594.
|
||||
// @todo: remove this ternary operation in https://www.drupal.org/project/drupal/issues/2997594.
|
||||
$this->resourceIdentifier = $entity ? ResourceIdentifier::fromEntity($entity) : NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class UnprocessableHttpEntityException extends HttpException {
|
||||
|
||||
@@ -24,7 +24,7 @@ use Drupal\jsonapi\ResourceType\ResourceType;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class IncludeResolver {
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\jsonapi\Exception\EntityAccessDeniedHttpException;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
abstract class Data implements \IteratorAggregate, \Countable {
|
||||
|
||||
@@ -11,7 +11,7 @@ use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* (The spec says the top-level `data` and `errors` members MUST NOT coexist.)
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\jsonapi\Exception\EntityAccessDeniedHttpException;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class IncludedData extends ResourceObjectData {
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\JsonApiResource;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see http://jsonapi.org/format/#document-top-level
|
||||
|
||||
@@ -12,7 +12,7 @@ use Drupal\jsonapi\ResourceType\ResourceType;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
final class LabelOnlyResourceObject extends ResourceObject {
|
||||
|
||||
@@ -15,7 +15,7 @@ use Drupal\Core\Url;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see https://tools.ietf.org/html/rfc8288
|
||||
|
||||
@@ -10,7 +10,7 @@ use Drupal\Component\Assertion\Inspector;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
final class LinkCollection implements \IteratorAggregate {
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\JsonApiResource;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class NullIncludedData extends IncludedData {
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\jsonapi\Exception\EntityAccessDeniedHttpException;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class OmittedData extends ResourceObjectData {
|
||||
|
||||
@@ -16,7 +16,7 @@ use Drupal\jsonapi\Routing\Routes;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class Relationship implements TopLevelDataInterface {
|
||||
|
||||
@@ -10,7 +10,7 @@ use Drupal\Component\Assertion\Inspector;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class RelationshipData extends Data {
|
||||
|
||||
@@ -28,12 +28,12 @@ use Drupal\jsonapi\ResourceType\ResourceType;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see http://jsonapi.org/format/#document-resource-object-relationships
|
||||
* @see https://github.com/json-api/json-api/pull/1156#issuecomment-325377995
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2864680
|
||||
* @see https://www.drupal.org/project/drupal/issues/2864680
|
||||
*/
|
||||
class ResourceIdentifier implements ResourceIdentifierInterface {
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Drupal\jsonapi\JsonApiResource;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
interface ResourceIdentifierInterface {
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\JsonApiResource;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\jsonapi\JsonApiResource\ResourceIdentifierInterface
|
||||
|
||||
@@ -27,7 +27,7 @@ use Drupal\user\UserInterface;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class ResourceObject implements CacheableDependencyInterface, ResourceIdentifierInterface {
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\jsonapi\Exception\EntityAccessDeniedHttpException;
|
||||
* @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.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class ResourceObjectData extends Data implements TopLevelDataInterface {
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\JsonApiResource;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
interface TopLevelDataInterface {
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see http://jsonapi.org/format
|
||||
|
||||
@@ -14,7 +14,7 @@ use Drupal\jsonapi\DependencyInjection\Compiler\RegisterSerializationClassesComp
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class JsonapiServiceProvider implements ServiceModifierInterface, ServiceProviderInterface {
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\jsonapi\ResourceType\ResourceType;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
final class ConfigEntityDenormalizer extends EntityDenormalizerBase {
|
||||
|
||||
@@ -12,7 +12,7 @@ use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
final class ContentEntityDenormalizer extends EntityDenormalizerBase {
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see http://jsonapi.org/format/#error-objects
|
||||
|
||||
@@ -15,7 +15,7 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
abstract class EntityDenormalizerBase extends NormalizerBase implements DenormalizerInterface {
|
||||
|
||||
@@ -19,7 +19,7 @@ use Drupal\jsonapi\Routing\Routes;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class EntityReferenceFieldNormalizer extends FieldNormalizer {
|
||||
|
||||
@@ -20,7 +20,7 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class FieldItemNormalizer extends NormalizerBase implements DenormalizerInterface {
|
||||
|
||||
@@ -15,7 +15,7 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class FieldNormalizer extends NormalizerBase implements DenormalizerInterface {
|
||||
|
||||
@@ -14,7 +14,7 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see http://jsonapi.org/format/#error-objects
|
||||
@@ -112,7 +112,7 @@ class HttpExceptionNormalizer extends NormalizerBase {
|
||||
* URL pointing to the specific RFC-2616 section. Or NULL if it is an HTTP
|
||||
* status code that is defined in another RFC.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2832211#comment-11826234
|
||||
* @see https://www.drupal.org/project/drupal/issues/2832211#comment-11826234
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
|
||||
@@ -28,7 +28,7 @@ use Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\jsonapi\JsonApiResource\JsonApiDocumentTopLevel
|
||||
@@ -217,7 +217,7 @@ class JsonApiDocumentTopLevelNormalizer extends NormalizerBase implements Denorm
|
||||
* @return \Drupal\jsonapi\Normalizer\Value\CacheableNormalization
|
||||
* The normalized document.
|
||||
*
|
||||
* @todo: refactor this to use CacheableNormalization::aggregate in https://www.drupal.org/project/jsonapi/issues/3036284.
|
||||
* @todo: refactor this to use CacheableNormalization::aggregate in https://www.drupal.org/project/drupal/issues/3036284.
|
||||
*/
|
||||
protected function normalizeErrorDocument(JsonApiDocumentTopLevel $document, $format, array $context = []) {
|
||||
$normalized_values = array_map(function (HttpExceptionInterface $exception) use ($format, $context) {
|
||||
@@ -245,7 +245,7 @@ class JsonApiDocumentTopLevelNormalizer extends NormalizerBase implements Denorm
|
||||
* @return \Drupal\jsonapi\Normalizer\Value\CacheableNormalization|\Drupal\jsonapi\Normalizer\Value\CacheableOmission
|
||||
* The normalized omissions.
|
||||
*
|
||||
* @todo: refactor this to use link collections in https://www.drupal.org/project/jsonapi/issues/3036279.
|
||||
* @todo: refactor this to use link collections in https://www.drupal.org/project/drupal/issues/3036279.
|
||||
*/
|
||||
protected function normalizeOmissionsLinks(OmittedData $omissions, $format, array $context = []) {
|
||||
$normalized_omissions = array_map(function (HttpExceptionInterface $exception) use ($format, $context) {
|
||||
|
||||
@@ -24,7 +24,7 @@ use Drupal\jsonapi\Normalizer\Value\CacheableNormalization;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class LinkCollectionNormalizer extends NormalizerBase {
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\serialization\Normalizer\NormalizerBase as SerializationNormalizerBas
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
abstract class NormalizerBase extends SerializationNormalizerBase {
|
||||
|
||||
@@ -18,7 +18,7 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class ResourceIdentifierNormalizer extends NormalizerBase implements DenormalizerInterface {
|
||||
|
||||
@@ -17,7 +17,7 @@ use Drupal\jsonapi\Normalizer\Value\CacheableOmission;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class ResourceObjectNormalizer extends NormalizerBase {
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see http://jsonapi.org/format/#error-objects
|
||||
|
||||
@@ -13,7 +13,7 @@ use Drupal\Core\Cache\CacheableMetadata;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class CacheableNormalization implements CacheableDependencyInterface {
|
||||
|
||||
@@ -10,7 +10,7 @@ use Drupal\Core\Cache\CacheableDependencyInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
final class CacheableOmission extends CacheableNormalization {
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\Normalizer\Value;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class HttpExceptionNormalizerValue extends CacheableNormalization {}
|
||||
|
||||
@@ -17,7 +17,7 @@ use Symfony\Component\Routing\Route;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\Core\ParamConverter\EntityConverter
|
||||
|
||||
@@ -12,7 +12,7 @@ use Symfony\Component\Routing\Route;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class ResourceTypeConverter implements ParamConverterInterface {
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\Core\Http\Exception\CacheableBadRequestHttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class EntityCondition {
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\Query;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class EntityConditionGroup {
|
||||
|
||||
@@ -12,7 +12,7 @@ use Drupal\jsonapi\ResourceType\ResourceType;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class Filter {
|
||||
@@ -157,7 +157,8 @@ class Filter {
|
||||
foreach ($expanded as &$filter_item) {
|
||||
if (isset($filter_item[static::CONDITION_KEY][EntityCondition::PATH_KEY])) {
|
||||
$unresolved = $filter_item[static::CONDITION_KEY][EntityCondition::PATH_KEY];
|
||||
$filter_item[static::CONDITION_KEY][EntityCondition::PATH_KEY] = $field_resolver->resolveInternalEntityQueryPath($resource_type, $unresolved);
|
||||
$operator = $filter_item[static::CONDITION_KEY][EntityCondition::OPERATOR_KEY];
|
||||
$filter_item[static::CONDITION_KEY][EntityCondition::PATH_KEY] = $field_resolver->resolveInternalEntityQueryPath($resource_type, $unresolved, $operator);
|
||||
}
|
||||
}
|
||||
return new static(static::buildEntityConditionGroup($expanded));
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\Core\Http\Exception\CacheableBadRequestHttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class OffsetPage {
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\Core\Http\Exception\CacheableBadRequestHttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class Sort {
|
||||
|
||||
@@ -17,7 +17,7 @@ use Symfony\Component\HttpFoundation\Response;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\rest\ModifiedResourceResponse
|
||||
|
||||
@@ -15,7 +15,7 @@ use Drupal\Core\TypedData\DataReferenceTargetDefinition;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\jsonapi\ResourceType\ResourceTypeRepository
|
||||
@@ -279,7 +279,7 @@ class ResourceType {
|
||||
* the HTTP API. For example, read-only data from an internal resource might
|
||||
* be embedded in a public resource using computed fields. Therefore,
|
||||
* including the internal resource as a relationship with distinct routes
|
||||
* might uneccesarilly expose internal implementation details.
|
||||
* might unnecessarily expose internal implementation details.
|
||||
*
|
||||
* @return bool
|
||||
* TRUE if the resource type is internal. FALSE otherwise.
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\ResourceType;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\jsonapi\ResourceType\ResourceTypeRepository
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\ResourceType;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\jsonapi\ResourceType\ResourceTypeRepository
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\ResourceType;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\jsonapi\ResourceType\ResourceTypeRepository
|
||||
|
||||
@@ -33,7 +33,7 @@ use Symfony\Component\HttpKernel\Exception\PreconditionFailedHttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\jsonapi\ResourceType\ResourceType
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\ResourceType;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
interface ResourceTypeRepositoryInterface {
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\Revisions;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class InvalidVersionIdentifierException extends \InvalidArgumentException {}
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
abstract class NegotiatorBase implements VersionNegotiatorInterface {
|
||||
|
||||
@@ -18,7 +18,7 @@ use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
final class ResourceVersionRouteEnhancer implements EnhancerInterface {
|
||||
@@ -103,7 +103,7 @@ final class ResourceVersionRouteEnhancer implements EnhancerInterface {
|
||||
/* Uncomment the next line and remove the following one when https://www.drupal.org/project/drupal/issues/3002352 lands in core. */
|
||||
/* throw new CacheableHttpException($cacheability, 501, 'Resource versioning is not yet supported for this resource type.'); */
|
||||
$message = 'JSON:API does not yet support resource versioning for this resource type.';
|
||||
$message .= ' For context, see https://www.drupal.org/project/jsonapi/issues/2992833#comment-12818258.';
|
||||
$message .= ' For context, see https://www.drupal.org/project/drupal/issues/2992833#comment-12818258.';
|
||||
$message .= ' To contribute, see https://www.drupal.org/project/drupal/issues/2350939 and https://www.drupal.org/project/drupal/issues/2809177.';
|
||||
throw new CacheableHttpException($cacheability, 501, $message, NULL, []);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ use Drupal\Core\Entity\EntityInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class VersionById extends NegotiatorBase implements VersionNegotiatorInterface {
|
||||
|
||||
@@ -11,7 +11,7 @@ use Drupal\Core\Entity\RevisionableInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class VersionByRel extends NegotiatorBase {
|
||||
|
||||
@@ -13,7 +13,7 @@ use Drupal\Core\Http\Exception\CacheableNotFoundHttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\jsonapi\Revisions\VersionNegotiatorInterface
|
||||
|
||||
@@ -10,7 +10,7 @@ use Drupal\Core\Entity\EntityInterface;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*
|
||||
* @see \Drupal\jsonapi\Revisions\VersionNegotiator
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Drupal\jsonapi\Revisions;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class VersionNotFoundException extends \InvalidArgumentException {
|
||||
|
||||
@@ -12,7 +12,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class RouteEnhancer implements EnhancerInterface {
|
||||
|
||||
@@ -19,7 +19,7 @@ use Symfony\Component\Routing\RouteCollection;
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
class Routes implements ContainerInjectionInterface {
|
||||
|
||||
@@ -12,12 +12,12 @@ use Symfony\Component\Serializer\Serializer as SymfonySerializer;
|
||||
* Backwards compatibility is in no way guaranteed and will almost certainly be
|
||||
* broken in the future.
|
||||
*
|
||||
* @link https://www.drupal.org/project/jsonapi/issues/2923779#comment-12407443
|
||||
* @link https://www.drupal.org/project/drupal/issues/2923779#comment-12407443
|
||||
*
|
||||
* @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
||||
* class may change at any time and this will break any dependencies on it.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3032787
|
||||
* @see https://www.drupal.org/project/drupal/issues/3032787
|
||||
* @see jsonapi.api.php
|
||||
*/
|
||||
final class Serializer extends SymfonySerializer {
|
||||
|
||||
@@ -200,7 +200,7 @@ class BlockContentTest extends ResourceTestBase {
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function testRelated() {
|
||||
$this->markTestSkipped('Remove this in https://www.drupal.org/project/jsonapi/issues/2940339');
|
||||
$this->markTestSkipped('Remove this in https://www.drupal.org/project/drupal/issues/2940339');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -392,7 +392,7 @@ class CommentTest extends ResourceTestBase {
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function testRelated() {
|
||||
$this->markTestSkipped('Remove this in https://www.drupal.org/project/jsonapi/issues/2940339');
|
||||
$this->markTestSkipped('Remove this in https://www.drupal.org/project/drupal/issues/2940339');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -117,10 +117,10 @@ class ConfigurableLanguageTest extends ResourceTestBase {
|
||||
/**
|
||||
* Test a GET request for a default config entity, which has a _core key.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2915539
|
||||
* @see https://www.drupal.org/project/drupal/issues/2915539
|
||||
*/
|
||||
public function testGetIndividualDefaultConfig() {
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute('jsonapi.configurable_language--configurable_language.individual', ['entity' => ConfigurableLanguage::load('en')->uuid()]);
|
||||
/* $url = ConfigurableLanguage::load('en')->toUrl('jsonapi'); */
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@ class ExternalNormalizersTest extends BrowserTestBase {
|
||||
$this->assertSame(static::VALUE_ORIGINAL, $denormalized_entity->field_test->value);
|
||||
|
||||
// Asserts the expected JSON:API normalization.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute('jsonapi.entity_test--entity_test.individual', ['entity' => $this->entity->uuid()]);
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
$client = $this->getSession()->getDriver()->getClient()->getClient();
|
||||
|
||||
@@ -51,7 +51,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensure filtering on relationships works with bundle-specific target types.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2953207
|
||||
* @see https://www.drupal.org/project/drupal/issues/2953207
|
||||
*/
|
||||
public function testBundleSpecificTargetEntityTypeFromIssue2953207() {
|
||||
// Set up data model.
|
||||
@@ -87,7 +87,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensure deep nested include works on multi target entity type field.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2973681
|
||||
* @see https://www.drupal.org/project/drupal/issues/2973681
|
||||
*/
|
||||
public function testDeepNestedIncludeMultiTargetEntityTypeFieldFromIssue2973681() {
|
||||
// Set up data model.
|
||||
@@ -151,7 +151,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensure POST and PATCH works for bundle-less relationship routes.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2976371
|
||||
* @see https://www.drupal.org/project/drupal/issues/2976371
|
||||
*/
|
||||
public function testBundlelessRelationshipMutationFromIssue2973681() {
|
||||
$this->config('jsonapi.settings')->set('read_only', FALSE)->save(TRUE);
|
||||
@@ -202,7 +202,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensures GETting terms works when multiple vocabularies exist.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2977879
|
||||
* @see https://www.drupal.org/project/drupal/issues/2977879
|
||||
*/
|
||||
public function testGetTermWhenMultipleVocabulariesExistFromIssue2977879() {
|
||||
// Set up data model.
|
||||
@@ -238,7 +238,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Cannot PATCH an entity with dangling references in an ER field.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2968972
|
||||
* @see https://www.drupal.org/project/drupal/issues/2968972
|
||||
*/
|
||||
public function testDanglingReferencesInAnEntityReferenceFieldFromIssue2968972() {
|
||||
$this->config('jsonapi.settings')->set('read_only', FALSE)->save(TRUE);
|
||||
@@ -309,7 +309,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensures GETting node collection + hook_node_grants() implementations works.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2984964
|
||||
* @see https://www.drupal.org/project/drupal/issues/2984964
|
||||
*/
|
||||
public function testGetNodeCollectionWithHookNodeGrantsImplementationsFromIssue2984964() {
|
||||
// Set up data model.
|
||||
@@ -340,7 +340,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Cannot GET an entity with dangling references in an ER field.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2984647
|
||||
* @see https://www.drupal.org/project/drupal/issues/2984647
|
||||
*/
|
||||
public function testDanglingReferencesInAnEntityReferenceFieldFromIssue2984647() {
|
||||
// Set up data model.
|
||||
@@ -470,7 +470,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
* Adding a new relationship field should cause new routes to be immediately
|
||||
* regenerated. The site builder should not need to manually rebuild caches.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2984886
|
||||
* @see https://www.drupal.org/project/drupal/issues/2984886
|
||||
*/
|
||||
public function testThatRoutesAreRebuiltAfterDataModelChangesFromIssue2984886() {
|
||||
$user = $this->drupalCreateUser(['access content']);
|
||||
@@ -526,7 +526,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensures denormalizing relationships with aliased field names works.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3007113
|
||||
* @see https://www.drupal.org/project/drupal/issues/3007113
|
||||
* @see https://www.drupal.org/project/jsonapi_extras/issues/3004582#comment-12817261
|
||||
*/
|
||||
public function testDenormalizeAliasedRelationshipFromIssue2953207() {
|
||||
@@ -584,7 +584,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensures that Drupal's page cache is effective.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3009596
|
||||
* @see https://www.drupal.org/project/drupal/issues/3009596
|
||||
*/
|
||||
public function testPageCacheFromIssue3009596() {
|
||||
$anonymous_role = Role::load(RoleInterface::ANONYMOUS_ID);
|
||||
@@ -619,7 +619,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensures that filtering by a sequential internal ID named 'id' is possible.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3015759
|
||||
* @see https://www.drupal.org/project/drupal/issues/3015759
|
||||
*/
|
||||
public function testFilterByIdFromIssue3015759() {
|
||||
// Set up data model.
|
||||
@@ -659,7 +659,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensures datetime fields are normalized using the correct timezone.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/2999438
|
||||
* @see https://www.drupal.org/project/drupal/issues/2999438
|
||||
*/
|
||||
public function testPatchingDateTimeNormalizedWrongTimeZoneIssue3021194() {
|
||||
// Set up data model.
|
||||
@@ -708,7 +708,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensures PATCHing datetime (both date-only & date+time) fields is possible.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3021194
|
||||
* @see https://www.drupal.org/project/drupal/issues/3021194
|
||||
*/
|
||||
public function testPatchingDateTimeFieldsFromIssue3021194() {
|
||||
$this->config('jsonapi.settings')->set('read_only', FALSE)->save(TRUE);
|
||||
@@ -791,7 +791,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensure includes are respected even when POSTing.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3026030
|
||||
* @see https://www.drupal.org/project/drupal/issues/3026030
|
||||
*/
|
||||
public function testPostToIncludeUrlDoesNotReturnIncludeFromIssue3026030() {
|
||||
$this->config('jsonapi.settings')->set('read_only', FALSE)->save(TRUE);
|
||||
@@ -828,7 +828,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensure includes are respected even when PATCHing.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3026030
|
||||
* @see https://www.drupal.org/project/drupal/issues/3026030
|
||||
*/
|
||||
public function testPatchToIncludeUrlDoesNotReturnIncludeFromIssue3026030() {
|
||||
$this->config('jsonapi.settings')->set('read_only', FALSE)->save(TRUE);
|
||||
@@ -874,7 +874,7 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Ensure `@FieldType=map` fields are normalized correctly.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3040590
|
||||
* @see https://www.drupal.org/project/drupal/issues/3040590
|
||||
*/
|
||||
public function testMapFieldTypeNormalizationFromIssue3040590() {
|
||||
$this->assertTrue($this->container->get('module_installer')->install(['entity_test'], TRUE), 'Installed modules.');
|
||||
@@ -918,6 +918,62 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
$this->assertSame(['foo' => 'bar'], $data['data'][0]['attributes']['data']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure filtering for entities with empty entity reference fields works.
|
||||
*
|
||||
* @see https://www.drupal.org/project/drupal/issues/3025372
|
||||
*/
|
||||
public function testEmptyRelationshipFilteringFromIssue3025372() {
|
||||
// Set up data model.
|
||||
$this->drupalCreateContentType(['type' => 'folder']);
|
||||
$this->createEntityReferenceField(
|
||||
'node',
|
||||
'folder',
|
||||
'field_parent_folder',
|
||||
NULL,
|
||||
'node',
|
||||
'default',
|
||||
[
|
||||
'target_bundles' => ['folder'],
|
||||
],
|
||||
FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED
|
||||
);
|
||||
$this->rebuildAll();
|
||||
|
||||
// Create data.
|
||||
$node = Node::create([
|
||||
'title' => 'root folder',
|
||||
'type' => 'folder',
|
||||
]);
|
||||
$node->save();
|
||||
|
||||
// Test.
|
||||
$user = $this->drupalCreateUser(['access content']);
|
||||
$url = Url::fromRoute('jsonapi.node--folder.collection');
|
||||
$request_options = [
|
||||
RequestOptions::HEADERS => [
|
||||
'Content-Type' => 'application/vnd.api+json',
|
||||
'Accept' => 'application/vnd.api+json',
|
||||
],
|
||||
RequestOptions::AUTH => [$user->getAccountName(), $user->pass_raw],
|
||||
];
|
||||
$response = $this->request('GET', $url, $request_options);
|
||||
$this->assertSame(200, $response->getStatusCode(), (string) $response->getBody());
|
||||
$this->assertSame($node->uuid(), Json::decode((string) $response->getBody())['data'][0]['id']);
|
||||
$response = $this->request('GET', $url->setOption('query', [
|
||||
'filter[test][condition][path]' => 'field_parent_folder',
|
||||
'filter[test][condition][operator]' => 'IS NULL',
|
||||
]), $request_options);
|
||||
$this->assertSame(200, $response->getStatusCode(), (string) $response->getBody());
|
||||
$this->assertSame($node->uuid(), Json::decode((string) $response->getBody())['data'][0]['id']);
|
||||
$response = $this->request('GET', $url->setOption('query', [
|
||||
'filter[test][condition][path]' => 'field_parent_folder',
|
||||
'filter[test][condition][operator]' => 'IS NOT NULL',
|
||||
]), $request_options);
|
||||
$this->assertSame(200, $response->getStatusCode(), (string) $response->getBody());
|
||||
$this->assertEmpty(Json::decode((string) $response->getBody())['data']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the response still has meaningful error messages.
|
||||
*/
|
||||
@@ -1198,8 +1254,8 @@ class JsonApiRegressionTest extends JsonApiFunctionalTestBase {
|
||||
/**
|
||||
* Tests that "virtual/missing" resources can exist for renamed fields.
|
||||
*
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3034786
|
||||
* @see https://www.drupal.org/project/jsonapi_extras/issues/3035544
|
||||
* @see https://www.drupal.org/project/drupal/issues/3034786
|
||||
* @see https://www.drupal.org/project/drupal/issues/3035544
|
||||
*/
|
||||
public function testAliasedFieldsWithVirtualRelationships() {
|
||||
// Set up the data model.
|
||||
|
||||
@@ -348,7 +348,7 @@ class MediaTest extends ResourceTestBase {
|
||||
*/
|
||||
public function testPostIndividual() {
|
||||
// @todo Mimic \Drupal\Tests\rest\Functional\EntityResource\Media\MediaResourceTestBase::testPost()
|
||||
// @todo Later, use https://www.drupal.org/project/jsonapi/issues/2958554 to upload files rather than the REST module.
|
||||
// @todo Later, use https://www.drupal.org/project/drupal/issues/2958554 to upload files rather than the REST module.
|
||||
parent::testPostIndividual();
|
||||
}
|
||||
// @codingStandardsIgnoreEnd
|
||||
|
||||
@@ -176,7 +176,7 @@ class MenuLinkContentTest extends ResourceTestBase {
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function testRelated() {
|
||||
$this->markTestSkipped('Remove this in https://www.drupal.org/project/jsonapi/issues/2940339');
|
||||
$this->markTestSkipped('Remove this in https://www.drupal.org/project/drupal/issues/2940339');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -271,7 +271,7 @@ class NodeTest extends ResourceTestBase {
|
||||
$this->setUpAuthorization('PATCH');
|
||||
$this->config('jsonapi.settings')->set('read_only', FALSE)->save(TRUE);
|
||||
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $this->entity->uuid()]);
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
|
||||
@@ -311,14 +311,14 @@ class NodeTest extends ResourceTestBase {
|
||||
// Unpublish node.
|
||||
$this->entity->setUnpublished()->save();
|
||||
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $this->entity->uuid()]);
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
$request_options = $this->getAuthenticationRequestOptions();
|
||||
|
||||
// 403 when accessing own unpublished node.
|
||||
$response = $this->request('GET', $url, $request_options);
|
||||
// @todo Remove $expected + assertResourceResponse() in favor of the commented line below once https://www.drupal.org/project/jsonapi/issues/2943176 lands.
|
||||
// @todo Remove $expected + assertResourceResponse() in favor of the commented line below once https://www.drupal.org/project/drupal/issues/2943176 lands.
|
||||
$expected_document = [
|
||||
'jsonapi' => static::$jsonApiMember,
|
||||
'errors' => [
|
||||
@@ -374,7 +374,7 @@ class NodeTest extends ResourceTestBase {
|
||||
]);
|
||||
// After saving the entity the normalization should not be cached.
|
||||
$this->assertFalse($cache);
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $uuid]);
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
$request_options = $this->getAuthenticationRequestOptions();
|
||||
|
||||
@@ -906,7 +906,7 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
||||
// - to first test all mistakes a developer might make, and assert that the
|
||||
// error responses provide a good DX
|
||||
// - to eventually result in a well-formed request that succeeds.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $this->entity->uuid()]);
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
$request_options = [];
|
||||
@@ -975,9 +975,10 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
||||
// contain a flattened response. Otherwise performance suffers.
|
||||
// @see \Drupal\jsonapi\EventSubscriber\ResourceResponseSubscriber::flattenResponse()
|
||||
$cache_items = $this->container->get('database')
|
||||
->query("SELECT cid, data FROM {cache_dynamic_page_cache} WHERE cid LIKE :pattern", [
|
||||
':pattern' => '%[route]=jsonapi.%',
|
||||
])
|
||||
->select('cache_dynamic_page_cache', 'cdp')
|
||||
->fields('cdp', ['cid', 'data'])
|
||||
->condition('cid', '%[route]=jsonapi.%', 'LIKE')
|
||||
->execute()
|
||||
->fetchAllAssoc('cid');
|
||||
$this->assertTrue(count($cache_items) >= 2);
|
||||
$found_cache_redirect = FALSE;
|
||||
@@ -1985,7 +1986,7 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
||||
if (get_class($this->entityStorage) !== ContentEntityNullStorage::class) {
|
||||
$created_entity = $this->entityLoadUnchanged(static::$firstCreatedEntityId);
|
||||
$uuid = $created_entity->uuid();
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$location = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $uuid]);
|
||||
if (static::$resourceTypeIsVersionable) {
|
||||
assert($created_entity instanceof RevisionableInterface);
|
||||
@@ -2037,7 +2038,7 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
||||
if ($this->entity->getEntityType()->getStorageClass() !== ContentEntityNullStorage::class && $this->entity->getEntityType()->hasKey('uuid')) {
|
||||
$second_created_entity = $this->entityStorage->load(static::$secondCreatedEntityId);
|
||||
$uuid = $second_created_entity->uuid();
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$location = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $uuid]);
|
||||
/* $location = $this->entityStorage->load(static::$secondCreatedEntityId)->toUrl('jsonapi')->setAbsolute(TRUE)->toString(); */
|
||||
if (static::$resourceTypeIsVersionable) {
|
||||
@@ -2117,7 +2118,7 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
||||
// - to first test all mistakes a developer might make, and assert that the
|
||||
// error responses provide a good DX
|
||||
// - to eventually result in a well-formed request that succeeds.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $this->entity->uuid()]);
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
$request_options = [];
|
||||
@@ -2370,7 +2371,7 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
||||
$updated_entity->setNewRevision();
|
||||
$updated_entity->save();
|
||||
$actual_response = $this->request('PATCH', $url, $request_options);
|
||||
$this->assertResourceErrorResponse(400, 'Updating a resource object that has a working copy is not yet supported. See https://www.drupal.org/project/jsonapi/issues/2795279.', $url, $actual_response);
|
||||
$this->assertResourceErrorResponse(400, 'Updating a resource object that has a working copy is not yet supported. See https://www.drupal.org/project/drupal/issues/2795279.', $url, $actual_response);
|
||||
|
||||
// Allow PATCHing an unpublished default revision.
|
||||
$updated_entity->set('moderation_state', 'archived');
|
||||
@@ -2411,7 +2412,7 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
||||
// - to first test all mistakes a developer might make, and assert that the
|
||||
// error responses provide a good DX
|
||||
// - to eventually result in a well-formed request that succeeds.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $this->entity->uuid()]);
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
$request_options = [];
|
||||
@@ -2694,7 +2695,7 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
||||
$request_options = NestedArray::mergeDeep($request_options, $this->getAuthenticationRequestOptions());
|
||||
$response = $this->request('GET', $url, $request_options);
|
||||
$detail = 'JSON:API does not yet support resource versioning for this resource type.';
|
||||
$detail .= ' For context, see https://www.drupal.org/project/jsonapi/issues/2992833#comment-12818258.';
|
||||
$detail .= ' For context, see https://www.drupal.org/project/drupal/issues/2992833#comment-12818258.';
|
||||
$detail .= ' To contribute, see https://www.drupal.org/project/drupal/issues/2350939 and https://www.drupal.org/project/drupal/issues/2809177.';
|
||||
$expected_cache_contexts = [
|
||||
'url.path',
|
||||
@@ -2731,7 +2732,7 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
||||
$entity->save();
|
||||
$latest_revision_id = (int) $entity->getRevisionId();
|
||||
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $this->entity->uuid()])->setAbsolute();
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
$collection_url = Url::fromRoute(sprintf('jsonapi.%s.collection', static::$resourceTypeName))->setAbsolute();
|
||||
|
||||
@@ -372,7 +372,7 @@ class TermTest extends ResourceTestBase {
|
||||
$this->setUpAuthorization('PATCH');
|
||||
$this->config('jsonapi.settings')->set('read_only', FALSE)->save(TRUE);
|
||||
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $this->entity->uuid()]);
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
$request_options = [];
|
||||
@@ -438,7 +438,7 @@ class TermTest extends ResourceTestBase {
|
||||
// Modify the entity under test to use the provided parent terms.
|
||||
$this->entity->set('parent', $parent_term_ids)->save();
|
||||
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $this->entity->uuid()]);
|
||||
// $url = $this->entity->toUrl('jsonapi');
|
||||
$request_options = [];
|
||||
@@ -473,7 +473,7 @@ class TermTest extends ResourceTestBase {
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function testRelated() {
|
||||
$this->markTestSkipped('Remove this in https://www.drupal.org/project/jsonapi/issues/2940339');
|
||||
$this->markTestSkipped('Remove this in https://www.drupal.org/project/drupal/issues/2940339');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,7 +8,7 @@ use Drupal\FunctionalTests\Update\UpdatePathTestBase;
|
||||
* Tests that existing sites have the new read-only mode to "off".
|
||||
*
|
||||
* @see jsonapi_update_8701()
|
||||
* @see https://www.drupal.org/project/jsonapi/issues/3039568
|
||||
* @see https://www.drupal.org/project/drupal/issues/3039568
|
||||
*
|
||||
* @group jsonapi
|
||||
* @group Update
|
||||
|
||||
@@ -203,7 +203,7 @@ class UserTest extends ResourceTestBase {
|
||||
* Tests PATCHing security-sensitive base fields of the logged in account.
|
||||
*/
|
||||
public function testPatchDxForSecuritySensitiveBaseFields() {
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.user--user.individual'), ['entity' => $this->account->uuid()]);
|
||||
/* $url = $this->account->toUrl('jsonapi'); */
|
||||
|
||||
@@ -321,7 +321,7 @@ class UserTest extends ResourceTestBase {
|
||||
* Tests PATCHing security-sensitive base fields to change other users.
|
||||
*/
|
||||
public function testPatchSecurityOtherUser() {
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$url = Url::fromRoute(sprintf('jsonapi.user--user.individual'), ['entity' => $this->account->uuid()]);
|
||||
/* $url = $this->account->toUrl('jsonapi'); */
|
||||
|
||||
@@ -379,7 +379,7 @@ class UserTest extends ResourceTestBase {
|
||||
$this->grantPermissionsToTestedRole(['access user profiles']);
|
||||
|
||||
$collection_url = Url::fromRoute('jsonapi.user--user.collection', [], ['query' => ['sort' => 'drupal_internal__uid']]);
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
||||
// @todo Remove line below in favor of commented line in https://www.drupal.org/project/drupal/issues/2878463.
|
||||
$user_a_url = Url::fromRoute(sprintf('jsonapi.user--user.individual'), ['entity' => $user_a->uuid()]);
|
||||
/* $user_a_url = $user_a->toUrl('jsonapi'); */
|
||||
$request_options = [];
|
||||
|
||||
@@ -52,7 +52,7 @@ class WorkflowTest extends ResourceTestBase {
|
||||
protected function createEntity() {
|
||||
$workflow = Workflow::create([
|
||||
'id' => 'rest_workflow',
|
||||
'label' => 'REST Worklow',
|
||||
'label' => 'REST Workflow',
|
||||
'type' => 'workflow_type_complex_test',
|
||||
]);
|
||||
$workflow
|
||||
@@ -96,7 +96,7 @@ class WorkflowTest extends ResourceTestBase {
|
||||
'workflow_type_test',
|
||||
],
|
||||
],
|
||||
'label' => 'REST Worklow',
|
||||
'label' => 'REST Workflow',
|
||||
'langcode' => 'en',
|
||||
'status' => TRUE,
|
||||
'workflow_type' => 'workflow_type_complex_test',
|
||||
|
||||
+1
-1
@@ -302,7 +302,7 @@ class JsonApiDocumentTopLevelNormalizerTest extends JsonapiKernelTestBase {
|
||||
* @covers ::normalize
|
||||
*/
|
||||
public function testNormalizeRelated() {
|
||||
$this->markTestIncomplete('This fails and should be fixed by https://www.drupal.org/project/jsonapi/issues/2922121');
|
||||
$this->markTestIncomplete('This fails and should be fixed by https://www.drupal.org/project/drupal/issues/2922121');
|
||||
|
||||
list($request, $resource_type) = $this->generateProphecies('node', 'article', 'uid');
|
||||
$request->query = new ParameterBag([
|
||||
|
||||
@@ -67,10 +67,10 @@ class FilterTest extends JsonapiKernelTestBase {
|
||||
$this->savePaintings([
|
||||
['colors' => ['red'], 'shapes' => ['triangle'], 'title' => 'FIND'],
|
||||
['colors' => ['orange'], 'shapes' => ['circle'], 'title' => 'FIND'],
|
||||
['colors' => ['orange'], 'shapes' => ['triangle'], 'title' => 'DONT_FIND'],
|
||||
['colors' => ['orange'], 'shapes' => ['triangle'], 'title' => 'DO_NOT_FIND'],
|
||||
['colors' => ['yellow'], 'shapes' => ['square'], 'title' => 'FIND'],
|
||||
['colors' => ['yellow'], 'shapes' => ['triangle'], 'title' => 'DONT_FIND'],
|
||||
['colors' => ['orange'], 'shapes' => ['square'], 'title' => 'DONT_FIND'],
|
||||
['colors' => ['yellow'], 'shapes' => ['triangle'], 'title' => 'DO_NOT_FIND'],
|
||||
['colors' => ['orange'], 'shapes' => ['square'], 'title' => 'DO_NOT_FIND'],
|
||||
]);
|
||||
|
||||
$this->nodeStorage = $this->container->get('entity_type.manager')->getStorage('node');
|
||||
@@ -413,7 +413,7 @@ class FilterTest extends JsonapiKernelTestBase {
|
||||
*/
|
||||
protected function getFieldResolverMock(ResourceType $resource_type) {
|
||||
$field_resolver = $this->prophesize(FieldResolver::class);
|
||||
$field_resolver->resolveInternalEntityQueryPath($resource_type, Argument::any())->willReturnArgument(1);
|
||||
$field_resolver->resolveInternalEntityQueryPath($resource_type, Argument::any(), Argument::any())->willReturnArgument(1);
|
||||
return $field_resolver->reveal();
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -63,7 +63,7 @@ trait CommonCollectionFilterAccessTestPatternsTrait {
|
||||
|
||||
// Test.
|
||||
$collection_url = Url::fromRoute('jsonapi.entity_test--bar.collection');
|
||||
// Specifying a delta exercises TemporaryQueryGaurd more thoroughly.
|
||||
// Specifying a delta exercises TemporaryQueryGuard more thoroughly.
|
||||
$filter_path = "spotlight.0.$label_field_name";
|
||||
$collection_filter_url = $collection_url->setOption('query', ["filter[$filter_path]" => $this->entity->label()]);
|
||||
$request_options = [];
|
||||
|
||||
Reference in New Issue
Block a user