diff --git a/features/doctrine/eager_loading.feature b/features/doctrine/eager_loading.feature
index 06ce1baf36f..27ab9804abe 100644
--- a/features/doctrine/eager_loading.feature
+++ b/features/doctrine/eager_loading.feature
@@ -11,11 +11,12 @@ Feature: Eager Loading
Then the response status code should be 200
And the DQL should be equal to:
"""
- SELECT o, thirdLevel_a1, relatedToDummyFriend_a2, dummyFriend_a3
+ SELECT o, thirdLevel_a1, fourthLevel_a2, relatedToDummyFriend_a3, dummyFriend_a4
FROM ApiPlatform\Tests\Fixtures\TestBundle\Entity\RelatedDummy o
LEFT JOIN o.thirdLevel thirdLevel_a1
- LEFT JOIN o.relatedToDummyFriend relatedToDummyFriend_a2
- LEFT JOIN relatedToDummyFriend_a2.dummyFriend dummyFriend_a3
+ LEFT JOIN thirdLevel_a1.fourthLevel fourthLevel_a2
+ LEFT JOIN o.relatedToDummyFriend relatedToDummyFriend_a3
+ LEFT JOIN relatedToDummyFriend_a3.dummyFriend dummyFriend_a4
WHERE o.id = :id_id
"""
@@ -45,11 +46,12 @@ Feature: Eager Loading
Then the response status code should be 200
And the DQL should be equal to:
"""
- SELECT o, thirdLevel_a4, relatedToDummyFriend_a1, dummyFriend_a5
+ SELECT o, thirdLevel_a4, fourthLevel_a5, relatedToDummyFriend_a1, dummyFriend_a6
FROM ApiPlatform\Tests\Fixtures\TestBundle\Entity\RelatedDummy o
INNER JOIN o.relatedToDummyFriend relatedToDummyFriend_a1
LEFT JOIN o.thirdLevel thirdLevel_a4
- INNER JOIN relatedToDummyFriend_a1.dummyFriend dummyFriend_a5
+ LEFT JOIN thirdLevel_a4.fourthLevel fourthLevel_a5
+ INNER JOIN relatedToDummyFriend_a1.dummyFriend dummyFriend_a6
WHERE o IN(
SELECT o_a2
FROM ApiPlatform\Tests\Fixtures\TestBundle\Entity\RelatedDummy o_a2
@@ -81,11 +83,12 @@ Feature: Eager Loading
Then the response status code should be 200
And the DQL should be equal to:
"""
- SELECT o, thirdLevel_a3, relatedToDummyFriend_a4, dummyFriend_a5
+ SELECT o, thirdLevel_a3, fourthLevel_a4, relatedToDummyFriend_a5, dummyFriend_a6
FROM ApiPlatform\Tests\Fixtures\TestBundle\Entity\RelatedDummy o
LEFT JOIN o.thirdLevel thirdLevel_a3
- LEFT JOIN o.relatedToDummyFriend relatedToDummyFriend_a4
- LEFT JOIN relatedToDummyFriend_a4.dummyFriend dummyFriend_a5
+ LEFT JOIN thirdLevel_a3.fourthLevel fourthLevel_a4
+ LEFT JOIN o.relatedToDummyFriend relatedToDummyFriend_a5
+ LEFT JOIN relatedToDummyFriend_a5.dummyFriend dummyFriend_a6
WHERE o.id IN (
SELECT related_dummy_a1.id
FROM ApiPlatform\Tests\Fixtures\TestBundle\Entity\RelatedDummy related_dummy_a1
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index ef2b974751d..d7be7ffe851 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Core/Bridge/Doctrine/Common/Filter/BooleanFilterTrait.php b/src/Bridge/Doctrine/Common/Filter/BooleanFilterTrait.php
similarity index 98%
rename from src/Core/Bridge/Doctrine/Common/Filter/BooleanFilterTrait.php
rename to src/Bridge/Doctrine/Common/Filter/BooleanFilterTrait.php
index 4b4e56998a9..c58ddd38ec0 100644
--- a/src/Core/Bridge/Doctrine/Common/Filter/BooleanFilterTrait.php
+++ b/src/Bridge/Doctrine/Common/Filter/BooleanFilterTrait.php
@@ -11,7 +11,7 @@
declare(strict_types=1);
-namespace ApiPlatform\Core\Bridge\Doctrine\Common\Filter;
+namespace ApiPlatform\Bridge\Doctrine\Common\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\PropertyHelperTrait;
use ApiPlatform\Exception\InvalidArgumentException;
diff --git a/src/Core/Bridge/Doctrine/Common/Filter/DateFilterTrait.php b/src/Bridge/Doctrine/Common/Filter/DateFilterTrait.php
similarity index 98%
rename from src/Core/Bridge/Doctrine/Common/Filter/DateFilterTrait.php
rename to src/Bridge/Doctrine/Common/Filter/DateFilterTrait.php
index 22e7fd73544..7a3122bc452 100644
--- a/src/Core/Bridge/Doctrine/Common/Filter/DateFilterTrait.php
+++ b/src/Bridge/Doctrine/Common/Filter/DateFilterTrait.php
@@ -11,7 +11,7 @@
declare(strict_types=1);
-namespace ApiPlatform\Core\Bridge\Doctrine\Common\Filter;
+namespace ApiPlatform\Bridge\Doctrine\Common\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\PropertyHelperTrait;
use ApiPlatform\Exception\InvalidArgumentException;
diff --git a/src/Core/Bridge/Doctrine/Common/Filter/ExistsFilterTrait.php b/src/Bridge/Doctrine/Common/Filter/ExistsFilterTrait.php
similarity index 98%
rename from src/Core/Bridge/Doctrine/Common/Filter/ExistsFilterTrait.php
rename to src/Bridge/Doctrine/Common/Filter/ExistsFilterTrait.php
index eac7b82c6b8..a3a925936ed 100644
--- a/src/Core/Bridge/Doctrine/Common/Filter/ExistsFilterTrait.php
+++ b/src/Bridge/Doctrine/Common/Filter/ExistsFilterTrait.php
@@ -11,7 +11,7 @@
declare(strict_types=1);
-namespace ApiPlatform\Core\Bridge\Doctrine\Common\Filter;
+namespace ApiPlatform\Bridge\Doctrine\Common\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\PropertyHelperTrait;
use ApiPlatform\Exception\InvalidArgumentException;
diff --git a/src/Core/Bridge/Doctrine/Common/Filter/NumericFilterTrait.php b/src/Bridge/Doctrine/Common/Filter/NumericFilterTrait.php
similarity index 98%
rename from src/Core/Bridge/Doctrine/Common/Filter/NumericFilterTrait.php
rename to src/Bridge/Doctrine/Common/Filter/NumericFilterTrait.php
index af64eb8b1c0..3caaac69cda 100644
--- a/src/Core/Bridge/Doctrine/Common/Filter/NumericFilterTrait.php
+++ b/src/Bridge/Doctrine/Common/Filter/NumericFilterTrait.php
@@ -11,7 +11,7 @@
declare(strict_types=1);
-namespace ApiPlatform\Core\Bridge\Doctrine\Common\Filter;
+namespace ApiPlatform\Bridge\Doctrine\Common\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\PropertyHelperTrait;
use ApiPlatform\Exception\InvalidArgumentException;
diff --git a/src/Core/Bridge/Doctrine/Common/Filter/OrderFilterTrait.php b/src/Bridge/Doctrine/Common/Filter/OrderFilterTrait.php
similarity index 97%
rename from src/Core/Bridge/Doctrine/Common/Filter/OrderFilterTrait.php
rename to src/Bridge/Doctrine/Common/Filter/OrderFilterTrait.php
index 207f36e5e1c..6b92570428d 100644
--- a/src/Core/Bridge/Doctrine/Common/Filter/OrderFilterTrait.php
+++ b/src/Bridge/Doctrine/Common/Filter/OrderFilterTrait.php
@@ -11,7 +11,7 @@
declare(strict_types=1);
-namespace ApiPlatform\Core\Bridge\Doctrine\Common\Filter;
+namespace ApiPlatform\Bridge\Doctrine\Common\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\PropertyHelperTrait;
diff --git a/src/Core/Bridge/Doctrine/Common/Filter/RangeFilterTrait.php b/src/Bridge/Doctrine/Common/Filter/RangeFilterTrait.php
similarity index 98%
rename from src/Core/Bridge/Doctrine/Common/Filter/RangeFilterTrait.php
rename to src/Bridge/Doctrine/Common/Filter/RangeFilterTrait.php
index d226cd21dbc..476691805fe 100644
--- a/src/Core/Bridge/Doctrine/Common/Filter/RangeFilterTrait.php
+++ b/src/Bridge/Doctrine/Common/Filter/RangeFilterTrait.php
@@ -11,7 +11,7 @@
declare(strict_types=1);
-namespace ApiPlatform\Core\Bridge\Doctrine\Common\Filter;
+namespace ApiPlatform\Bridge\Doctrine\Common\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\PropertyHelperTrait;
use ApiPlatform\Exception\InvalidArgumentException;
diff --git a/src/Core/Bridge/Doctrine/Common/Filter/SearchFilterTrait.php b/src/Bridge/Doctrine/Common/Filter/SearchFilterTrait.php
similarity index 99%
rename from src/Core/Bridge/Doctrine/Common/Filter/SearchFilterTrait.php
rename to src/Bridge/Doctrine/Common/Filter/SearchFilterTrait.php
index a2deec9a0fd..01b34bb2e3a 100644
--- a/src/Core/Bridge/Doctrine/Common/Filter/SearchFilterTrait.php
+++ b/src/Bridge/Doctrine/Common/Filter/SearchFilterTrait.php
@@ -11,7 +11,7 @@
declare(strict_types=1);
-namespace ApiPlatform\Core\Bridge\Doctrine\Common\Filter;
+namespace ApiPlatform\Bridge\Doctrine\Common\Filter;
use ApiPlatform\Api\IriConverterInterface;
use ApiPlatform\Core\Api\IriConverterInterface as LegacyIriConverterInterface;
diff --git a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/BooleanFilter.php b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/BooleanFilter.php
index 7b72bbfaec9..bdf0a66dd9d 100644
--- a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/BooleanFilter.php
+++ b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/BooleanFilter.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\MongoDbOdm\Filter;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\BooleanFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\BooleanFilterTrait;
use Doctrine\ODM\MongoDB\Aggregation\Builder;
use Doctrine\ODM\MongoDB\Types\Type as MongoDbType;
diff --git a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/DateFilter.php b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/DateFilter.php
index 96208a0fe7c..e79499112a2 100644
--- a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/DateFilter.php
+++ b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/DateFilter.php
@@ -14,7 +14,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\MongoDbOdm\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\DateFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\DateFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\DateFilterTrait;
use ApiPlatform\Exception\InvalidArgumentException;
use Doctrine\ODM\MongoDB\Aggregation\Builder;
use Doctrine\ODM\MongoDB\Types\Type as MongoDbType;
diff --git a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/ExistsFilter.php b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/ExistsFilter.php
index d3624f8dcfe..630a0b3d4e5 100644
--- a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/ExistsFilter.php
+++ b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/ExistsFilter.php
@@ -14,7 +14,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\MongoDbOdm\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\ExistsFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\ExistsFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\ExistsFilterTrait;
use Doctrine\ODM\MongoDB\Aggregation\Builder;
use Doctrine\ODM\MongoDB\Mapping\ClassMetadata;
use Doctrine\Persistence\ManagerRegistry;
diff --git a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/NumericFilter.php b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/NumericFilter.php
index a8effa1c7de..ad2dd067fc8 100644
--- a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/NumericFilter.php
+++ b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/NumericFilter.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\MongoDbOdm\Filter;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\NumericFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\NumericFilterTrait;
use Doctrine\ODM\MongoDB\Aggregation\Builder;
use Doctrine\ODM\MongoDB\Types\Type as MongoDbType;
diff --git a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/OrderFilter.php b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/OrderFilter.php
index 54b18a777f9..7fb2e65ee14 100644
--- a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/OrderFilter.php
+++ b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/OrderFilter.php
@@ -14,7 +14,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\MongoDbOdm\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\OrderFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\OrderFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\OrderFilterTrait;
use Doctrine\ODM\MongoDB\Aggregation\Builder;
use Doctrine\Persistence\ManagerRegistry;
use Psr\Log\LoggerInterface;
diff --git a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/RangeFilter.php b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/RangeFilter.php
index 394bd284f79..4ea58058627 100644
--- a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/RangeFilter.php
+++ b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/RangeFilter.php
@@ -14,7 +14,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\MongoDbOdm\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\RangeFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\RangeFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\RangeFilterTrait;
use Doctrine\ODM\MongoDB\Aggregation\Builder;
/**
diff --git a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/SearchFilter.php b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/SearchFilter.php
index 0c3d36f5f03..54b6c8e95dc 100644
--- a/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/SearchFilter.php
+++ b/src/Core/Bridge/Doctrine/MongoDbOdm/Filter/SearchFilter.php
@@ -17,7 +17,7 @@
use ApiPlatform\Core\Api\IdentifiersExtractorInterface;
use ApiPlatform\Core\Api\IriConverterInterface as LegacyIriConverterInterface;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\SearchFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\SearchFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\SearchFilterTrait;
use ApiPlatform\Exception\InvalidArgumentException;
use Doctrine\ODM\MongoDB\Aggregation\Builder;
use Doctrine\ODM\MongoDB\Mapping\ClassMetadata as MongoDBClassMetadata;
diff --git a/src/Core/Bridge/Doctrine/Orm/Extension/EagerLoadingExtension.php b/src/Core/Bridge/Doctrine/Orm/Extension/EagerLoadingExtension.php
index 256e6a48dc1..749997fd1e2 100644
--- a/src/Core/Bridge/Doctrine/Orm/Extension/EagerLoadingExtension.php
+++ b/src/Core/Bridge/Doctrine/Orm/Extension/EagerLoadingExtension.php
@@ -28,8 +28,10 @@
use ApiPlatform\Exception\RuntimeException;
use ApiPlatform\Metadata\ApiProperty;
use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface;
+use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\ClassMetadataInfo;
use Doctrine\ORM\Query\Expr\Join;
+use Doctrine\ORM\Query\Expr\Select;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface;
@@ -169,7 +171,7 @@ private function apply(bool $collection, QueryBuilder $queryBuilder, QueryNameGe
*
* @throws RuntimeException when the max number of joins has been reached
*/
- private function joinRelations(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, bool $forceEager, bool $fetchPartial, string $parentAlias, array $options = [], array $normalizationContext = [], bool $wasLeftJoin = false, int &$joinCount = 0, int $currentDepth = null)
+ private function joinRelations(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, bool $forceEager, bool $fetchPartial, string $parentAlias, array $options = [], array $normalizationContext = [], bool $wasLeftJoin = false, int &$joinCount = 0, int $currentDepth = null, string $parentAssociation = null)
{
if ($joinCount > $this->maxJoins) {
throw new RuntimeException('The total number of joined relations has exceeded the specified maximum. Raise the limit if necessary with the "api_platform.eager_loading.max_joins" configuration key (https://api-platform.com/docs/core/performance/#eager-loading), or limit the maximum serialization depth using the "enable_max_depth" option of the Symfony serializer (https://symfony.com/doc/current/components/serializer.html#handling-serialization-depth).');
@@ -229,8 +231,17 @@ private function joinRelations(QueryBuilder $queryBuilder, QueryNameGeneratorInt
continue;
}
- $isNotReadableLink = false === $propertyMetadata->isReadableLink();
- if (null === $fetchEager && (false === $propertyMetadata->isReadable() || ((null === $inAttributes && $isNotReadableLink) || (false === $inAttributes)))) {
+ if (true !== $fetchEager && (false === $propertyMetadata->isReadable() || false === $inAttributes)) {
+ continue;
+ }
+
+ // Avoid joining back to the parent that we just came from, but only on *ToOne relations
+ if (
+ null !== $parentAssociation &&
+ isset($mapping['inversedBy']) &&
+ $mapping['inversedBy'] === $parentAssociation &&
+ $mapping['type'] & ClassMetadata::TO_ONE
+ ) {
continue;
}
@@ -256,16 +267,16 @@ private function joinRelations(QueryBuilder $queryBuilder, QueryNameGeneratorInt
continue;
}
} else {
- $queryBuilder->addSelect($associationAlias);
+ $this->addSelectOnce($queryBuilder, $associationAlias);
}
- // Avoid recursive joins
+ // Avoid recursive joins for self-referencing relations
if ($mapping['targetEntity'] === $resourceClass) {
- // Avoid joining the same association twice (see #1959)
- if (!\in_array($associationAlias, $queryBuilder->getAllAliases(), true)) {
- $queryBuilder->addSelect($associationAlias);
- }
+ continue;
+ }
+ // Only join the relation's relations recursively if it's a readableLink
+ if (true !== $fetchEager && (true !== $propertyMetadata->isReadableLink())) {
continue;
}
@@ -278,7 +289,7 @@ private function joinRelations(QueryBuilder $queryBuilder, QueryNameGeneratorInt
}
}
- $this->joinRelations($queryBuilder, $queryNameGenerator, $mapping['targetEntity'], $forceEager, $fetchPartial, $associationAlias, $options, $childNormalizationContext, $isLeftJoin, $joinCount, $currentDepth);
+ $this->joinRelations($queryBuilder, $queryNameGenerator, $mapping['targetEntity'], $forceEager, $fetchPartial, $associationAlias, $options, $childNormalizationContext, $isLeftJoin, $joinCount, $currentDepth, $association);
}
}
@@ -288,7 +299,7 @@ private function addSelect(QueryBuilder $queryBuilder, string $entity, string $a
$entityManager = $queryBuilder->getEntityManager();
$targetClassMetadata = $entityManager->getClassMetadata($entity);
if (!empty($targetClassMetadata->subClasses)) {
- $queryBuilder->addSelect($associationAlias);
+ $this->addSelectOnce($queryBuilder, $associationAlias);
return;
}
@@ -327,6 +338,17 @@ private function addSelect(QueryBuilder $queryBuilder, string $entity, string $a
$queryBuilder->addSelect(sprintf('partial %s.{%s}', $associationAlias, implode(',', $select)));
}
+ private function addSelectOnce(QueryBuilder $queryBuilder, string $alias)
+ {
+ $existingSelects = array_reduce($queryBuilder->getDQLPart('select') ?? [], function ($existing, $dqlSelect) {
+ return ($dqlSelect instanceof Select) ? array_merge($existing, $dqlSelect->getParts()) : $existing;
+ }, []);
+
+ if (!\in_array($alias, $existingSelects, true)) {
+ $queryBuilder->addSelect($alias);
+ }
+ }
+
/**
* Gets the serializer context.
*
diff --git a/src/Core/Bridge/Doctrine/Orm/Filter/BooleanFilter.php b/src/Core/Bridge/Doctrine/Orm/Filter/BooleanFilter.php
index 5db1c4b63c6..037711807a9 100644
--- a/src/Core/Bridge/Doctrine/Orm/Filter/BooleanFilter.php
+++ b/src/Core/Bridge/Doctrine/Orm/Filter/BooleanFilter.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\Orm\Filter;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\BooleanFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\BooleanFilterTrait;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\QueryBuilder;
diff --git a/src/Core/Bridge/Doctrine/Orm/Filter/DateFilter.php b/src/Core/Bridge/Doctrine/Orm/Filter/DateFilter.php
index acd29b1f3bb..40591bc8536 100644
--- a/src/Core/Bridge/Doctrine/Orm/Filter/DateFilter.php
+++ b/src/Core/Bridge/Doctrine/Orm/Filter/DateFilter.php
@@ -14,7 +14,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\Orm\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\DateFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\DateFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\DateFilterTrait;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use ApiPlatform\Exception\InvalidArgumentException;
use Doctrine\DBAL\Types\Type as DBALType;
diff --git a/src/Core/Bridge/Doctrine/Orm/Filter/ExistsFilter.php b/src/Core/Bridge/Doctrine/Orm/Filter/ExistsFilter.php
index 24f86d31a35..119713f469c 100644
--- a/src/Core/Bridge/Doctrine/Orm/Filter/ExistsFilter.php
+++ b/src/Core/Bridge/Doctrine/Orm/Filter/ExistsFilter.php
@@ -14,7 +14,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\Orm\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\ExistsFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\ExistsFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\ExistsFilterTrait;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryBuilderHelper;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use Doctrine\ORM\Mapping\ClassMetadataInfo;
diff --git a/src/Core/Bridge/Doctrine/Orm/Filter/NumericFilter.php b/src/Core/Bridge/Doctrine/Orm/Filter/NumericFilter.php
index 41461cff7a0..145915daf09 100644
--- a/src/Core/Bridge/Doctrine/Orm/Filter/NumericFilter.php
+++ b/src/Core/Bridge/Doctrine/Orm/Filter/NumericFilter.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\Orm\Filter;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\NumericFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\NumericFilterTrait;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\QueryBuilder;
diff --git a/src/Core/Bridge/Doctrine/Orm/Filter/OrderFilter.php b/src/Core/Bridge/Doctrine/Orm/Filter/OrderFilter.php
index cde61b93368..560f2ab1bb6 100644
--- a/src/Core/Bridge/Doctrine/Orm/Filter/OrderFilter.php
+++ b/src/Core/Bridge/Doctrine/Orm/Filter/OrderFilter.php
@@ -14,7 +14,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\Orm\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\OrderFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\OrderFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\OrderFilterTrait;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use Doctrine\ORM\Query\Expr\Join;
use Doctrine\ORM\QueryBuilder;
diff --git a/src/Core/Bridge/Doctrine/Orm/Filter/RangeFilter.php b/src/Core/Bridge/Doctrine/Orm/Filter/RangeFilter.php
index ead733e20e2..db744cd6254 100644
--- a/src/Core/Bridge/Doctrine/Orm/Filter/RangeFilter.php
+++ b/src/Core/Bridge/Doctrine/Orm/Filter/RangeFilter.php
@@ -14,7 +14,7 @@
namespace ApiPlatform\Core\Bridge\Doctrine\Orm\Filter;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\RangeFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\RangeFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\RangeFilterTrait;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use Doctrine\ORM\QueryBuilder;
diff --git a/src/Core/Bridge/Doctrine/Orm/Filter/SearchFilter.php b/src/Core/Bridge/Doctrine/Orm/Filter/SearchFilter.php
index 8c1f9093ea0..d615fba789c 100644
--- a/src/Core/Bridge/Doctrine/Orm/Filter/SearchFilter.php
+++ b/src/Core/Bridge/Doctrine/Orm/Filter/SearchFilter.php
@@ -17,7 +17,7 @@
use ApiPlatform\Core\Api\IdentifiersExtractorInterface;
use ApiPlatform\Core\Api\IriConverterInterface as LegacyIriConverterInterface;
use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\SearchFilterInterface;
-use ApiPlatform\Core\Bridge\Doctrine\Common\Filter\SearchFilterTrait;
+use ApiPlatform\Bridge\Doctrine\Common\Filter\SearchFilterTrait;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryBuilderHelper;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use ApiPlatform\Exception\InvalidArgumentException;
diff --git a/src/Core/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php b/src/Core/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php
index 743d9d96fcd..0f7d4d22c5b 100644
--- a/src/Core/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php
+++ b/src/Core/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php
@@ -31,8 +31,8 @@
use ApiPlatform\Core\DataProvider\CollectionDataProviderInterface;
use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
use ApiPlatform\Core\DataProvider\SubresourceDataProviderInterface;
-use ApiPlatform\Core\DataTransformer\DataTransformerInitializerInterface;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInitializerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Core\Metadata\Extractor\XmlExtractor;
use ApiPlatform\Core\Metadata\Extractor\YamlExtractor;
use ApiPlatform\GraphQl\Error\ErrorHandlerInterface;
diff --git a/src/Core/Bridge/Symfony/Messenger/DataTransformer.php b/src/Core/Bridge/Symfony/Messenger/DataTransformer.php
index 5a63870d328..7cb75124648 100644
--- a/src/Core/Bridge/Symfony/Messenger/DataTransformer.php
+++ b/src/Core/Bridge/Symfony/Messenger/DataTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Core\Bridge\Symfony\Messenger;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface;
use ApiPlatform\Core\Util\ClassInfoTrait;
use ApiPlatform\Exception\OperationNotFoundException;
diff --git a/src/Core/Serializer/AbstractItemNormalizer.php b/src/Core/Serializer/AbstractItemNormalizer.php
index af2a6d54f03..ef598513e08 100644
--- a/src/Core/Serializer/AbstractItemNormalizer.php
+++ b/src/Core/Serializer/AbstractItemNormalizer.php
@@ -17,8 +17,8 @@
use ApiPlatform\Api\UrlGeneratorInterface;
use ApiPlatform\Core\Api\IriConverterInterface as LegacyIriConverterInterface;
use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
-use ApiPlatform\Core\DataTransformer\DataTransformerInitializerInterface;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInitializerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Core\Metadata\Property\Factory\PropertyMetadataFactoryInterface as LegacyPropertyMetadataFactoryInterface;
use ApiPlatform\Core\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface as LegacyPropertyNameCollectionFactoryInterface;
use ApiPlatform\Core\Metadata\Property\PropertyMetadata;
diff --git a/src/Core/DataTransformer/DataTransformerInitializerInterface.php b/src/DataTransformer/DataTransformerInitializerInterface.php
similarity index 93%
rename from src/Core/DataTransformer/DataTransformerInitializerInterface.php
rename to src/DataTransformer/DataTransformerInitializerInterface.php
index 85007c818e1..dde47366ce5 100644
--- a/src/Core/DataTransformer/DataTransformerInitializerInterface.php
+++ b/src/DataTransformer/DataTransformerInitializerInterface.php
@@ -11,7 +11,7 @@
declare(strict_types=1);
-namespace ApiPlatform\Core\DataTransformer;
+namespace ApiPlatform\DataTransformer;
interface DataTransformerInitializerInterface extends DataTransformerInterface
{
diff --git a/src/Core/DataTransformer/DataTransformerInterface.php b/src/DataTransformer/DataTransformerInterface.php
similarity index 95%
rename from src/Core/DataTransformer/DataTransformerInterface.php
rename to src/DataTransformer/DataTransformerInterface.php
index 156c0ffe437..56abe3fb5c5 100644
--- a/src/Core/DataTransformer/DataTransformerInterface.php
+++ b/src/DataTransformer/DataTransformerInterface.php
@@ -11,7 +11,7 @@
declare(strict_types=1);
-namespace ApiPlatform\Core\DataTransformer;
+namespace ApiPlatform\DataTransformer;
/**
* Transforms a DTO or an Anonymous class to a Resource object.
diff --git a/src/deprecated_interfaces.php b/src/deprecated_interfaces.php
new file mode 100644
index 00000000000..a97d5c264e8
--- /dev/null
+++ b/src/deprecated_interfaces.php
@@ -0,0 +1,17 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+declare(strict_types=1);
+
+return [
+ ApiPlatform\Core\DataTransformer\DataTransformerInitializerInterface::class => ApiPlatform\DataTransformer\DataTransformerInitializerInterface::class,
+ ApiPlatform\Core\DataTransformer\DataTransformerInterface::class => ApiPlatform\DataTransformer\DataTransformerInterface::class,
+];
diff --git a/src/deprecation.php b/src/deprecation.php
index a83c374a739..d2ebd166c46 100644
--- a/src/deprecation.php
+++ b/src/deprecation.php
@@ -106,8 +106,19 @@
ApiPlatform\Core\GraphQl\Type\Definition\UploadType::class => ApiPlatform\GraphQl\Type\Definition\UploadType::class,
ApiPlatform\Core\GraphQl\Type\Definition\IterableType::class => ApiPlatform\GraphQl\Type\Definition\IterableType::class,
ApiPlatform\Core\GraphQl\Type\TypesContainer::class => ApiPlatform\GraphQl\Type\TypesContainer::class,
+
+ // Bridge
+ ApiPlatform\Core\Bridge\Doctrine\Common\Filter\BooleanFilterTrait::class => ApiPlatform\Bridge\Doctrine\Common\Filter\BooleanFilterTrait::class,
+ ApiPlatform\Core\Bridge\Doctrine\Common\Filter\DateFilterTrait::class => ApiPlatform\Bridge\Doctrine\Common\Filter\DateFilterTrait::class,
+ ApiPlatform\Core\Bridge\Doctrine\Common\Filter\ExistsFilterTrait::class => ApiPlatform\Bridge\Doctrine\Common\Filter\ExistsFilterTrait::class,
+ ApiPlatform\Core\Bridge\Doctrine\Common\Filter\NumericFilterTrait::class => ApiPlatform\Bridge\Doctrine\Common\Filter\NumericFilterTrait::class,
+ ApiPlatform\Core\Bridge\Doctrine\Common\Filter\OrderFilterTrait::class => ApiPlatform\Bridge\Doctrine\Common\Filter\OrderFilterTrait::class,
+ ApiPlatform\Core\Bridge\Doctrine\Common\Filter\RangeFilterTrait::class => ApiPlatform\Bridge\Doctrine\Common\Filter\RangeFilterTrait::class,
+ ApiPlatform\Core\Bridge\Doctrine\Common\Filter\SearchFilterTrait::class => ApiPlatform\Bridge\Doctrine\Common\Filter\SearchFilterTrait::class,
];
+ $deprecatedInterfaces = include 'deprecated_interfaces.php';
+
if (ApiPlatform\Core\Metadata\Property\PropertyMetadata::class === $className) {
trigger_deprecation('api-platform/core', '2.7', sprintf('The class %s is deprecated, use %s instead.', $className, ApiPlatform\Metadata\ApiProperty::class));
}
@@ -126,4 +137,11 @@ class_alias($deprecatedClasses[$className], $className);
return;
}
+
+ if (isset($deprecatedInterfaces[$className])) {
+ class_alias($deprecatedInterfaces[$className], $className);
+ trigger_deprecation('api-platform/core', '2.7', sprintf('The interface %s is deprecated, use %s instead.', $className, $deprecatedClasses[$className]));
+
+ return;
+ }
});
diff --git a/tests/Core/Bridge/Doctrine/Orm/Extension/EagerLoadingExtensionTest.php b/tests/Core/Bridge/Doctrine/Orm/Extension/EagerLoadingExtensionTest.php
index d6d9dfa152f..4326c63ab34 100644
--- a/tests/Core/Bridge/Doctrine/Orm/Extension/EagerLoadingExtensionTest.php
+++ b/tests/Core/Bridge/Doctrine/Orm/Extension/EagerLoadingExtensionTest.php
@@ -236,6 +236,7 @@ public function testApplyToItem()
$queryBuilderProphecy->addSelect('partial relatedDummy4_a5.{id}')->shouldBeCalledTimes(1);
$queryBuilderProphecy->addSelect('singleInheritanceRelation_a6')->shouldBeCalledTimes(1);
$queryBuilderProphecy->getDQLPart('join')->willReturn([]);
+ $queryBuilderProphecy->getDQLPart('select')->willReturn([]);
$queryBuilder = $queryBuilderProphecy->reveal();
$orderExtensionTest = new EagerLoadingExtension($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), $resourceMetadataFactoryProphecy->reveal(), 30, false, null, null, true);
@@ -895,6 +896,7 @@ public function testApplyToCollectionNoPartial()
$queryBuilderProphecy->addSelect('relatedDummy_a1')->shouldBeCalledTimes(1);
$queryBuilderProphecy->addSelect('relatedDummy2_a2')->shouldBeCalledTimes(1);
$queryBuilderProphecy->getDQLPart('join')->willReturn([]);
+ $queryBuilderProphecy->getDQLPart('select')->willReturn([]);
$queryBuilder = $queryBuilderProphecy->reveal();
$eagerExtensionTest = new EagerLoadingExtension($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), $resourceMetadataFactoryProphecy->reveal(), 30);
@@ -960,6 +962,7 @@ private function doTestApplyToCollectionWithANonReadableButFetchEagerProperty(bo
$queryBuilderProphecy->addSelect('relatedDummy_a1')->shouldBeCalledTimes(1);
$queryBuilderProphecy->addSelect('relatedDummy2_a2')->shouldBeCalledTimes(1);
$queryBuilderProphecy->getDQLPart('join')->willReturn([]);
+ $queryBuilderProphecy->getDQLPart('select')->willReturn([]);
$queryBuilder = $queryBuilderProphecy->reveal();
$eagerExtensionTest = new EagerLoadingExtension($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), $resourceMetadataFactoryProphecy->reveal(), 30);
@@ -1004,6 +1007,7 @@ public function testApplyToCollectionWithExistingJoin(string $joinType): void
new Join($joinType, 'o.relatedDummy', 'existing_join_alias'),
],
]);
+ $queryBuilderProphecy->getDQLPart('select')->willReturn([]);
$queryBuilderProphecy->addSelect('existing_join_alias')->shouldBeCalledTimes(1);
$queryBuilder = $queryBuilderProphecy->reveal();
diff --git a/tests/Core/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Core/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php
index bd5cf4ac1e7..b9aa7825ca3 100644
--- a/tests/Core/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php
+++ b/tests/Core/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php
@@ -65,8 +65,8 @@
use ApiPlatform\Core\DataProvider\Pagination;
use ApiPlatform\Core\DataProvider\PaginationOptions;
use ApiPlatform\Core\DataProvider\SubresourceDataProviderInterface;
-use ApiPlatform\Core\DataTransformer\DataTransformerInitializerInterface;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInitializerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Core\JsonSchema\SchemaFactoryInterface;
use ApiPlatform\Core\JsonSchema\TypeFactoryInterface;
use ApiPlatform\Core\Metadata\Property\Factory\PropertyMetadataFactoryInterface as LegacyPropertyMetadataFactoryInterface;
diff --git a/tests/Core/Serializer/AbstractItemNormalizerTest.php b/tests/Core/Serializer/AbstractItemNormalizerTest.php
index 2db10e51cc0..0a7c5c00095 100644
--- a/tests/Core/Serializer/AbstractItemNormalizerTest.php
+++ b/tests/Core/Serializer/AbstractItemNormalizerTest.php
@@ -16,8 +16,8 @@
use ApiPlatform\Core\Api\IriConverterInterface;
use ApiPlatform\Core\Api\ResourceClassResolverInterface;
use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
-use ApiPlatform\Core\DataTransformer\DataTransformerInitializerInterface;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInitializerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Core\Metadata\Property\Factory\PropertyMetadataFactoryInterface;
use ApiPlatform\Core\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface;
use ApiPlatform\Core\Metadata\Property\PropertyMetadata;
diff --git a/tests/Core/Serializer/ItemNormalizerTest.php b/tests/Core/Serializer/ItemNormalizerTest.php
index ede88e6cb16..8235a8da104 100644
--- a/tests/Core/Serializer/ItemNormalizerTest.php
+++ b/tests/Core/Serializer/ItemNormalizerTest.php
@@ -15,7 +15,7 @@
use ApiPlatform\Core\Api\IriConverterInterface;
use ApiPlatform\Core\Api\ResourceClassResolverInterface;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Core\Metadata\Property\Factory\PropertyMetadataFactoryInterface;
use ApiPlatform\Core\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface;
use ApiPlatform\Core\Metadata\Property\PropertyNameCollection;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/CustomInputDtoDataTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/CustomInputDtoDataTransformer.php
index a7a5db0212a..8b4c5b0da5b 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/CustomInputDtoDataTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/CustomInputDtoDataTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Core\Serializer\AbstractItemNormalizer;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\DummyDtoCustom as DummyDtoCustomDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\CustomInputDto;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/CustomOutputDtoDataTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/CustomOutputDtoDataTransformer.php
index 0e3586e10bf..a7b5e5847aa 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/CustomOutputDtoDataTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/CustomOutputDtoDataTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\DummyDtoCustom as DummyDtoCustomDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\CustomOutputDto;
use ApiPlatform\Tests\Fixtures\TestBundle\Entity\DummyDtoCustom;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/DummyDtoNoInputToOutputDtoDataTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/DummyDtoNoInputToOutputDtoDataTransformer.php
index e9eb4cb7d2e..73a7b67114f 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/DummyDtoNoInputToOutputDtoDataTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/DummyDtoNoInputToOutputDtoDataTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\DummyDtoNoInput as DummyDtoNoInputDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\Document\OutputDto as OutputDtoDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\OutputDto;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/InitializeInputDataTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/InitializeInputDataTransformer.php
index 95e2c2d19a7..71cdd2d54cc 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/InitializeInputDataTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/InitializeInputDataTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
-use ApiPlatform\Core\DataTransformer\DataTransformerInitializerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInitializerInterface;
use ApiPlatform\Core\Serializer\AbstractItemNormalizer;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\InitializeInput as InitializeInputDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\InitializeInputDto;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/InputDtoDataTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/InputDtoDataTransformer.php
index 282e9199a8e..060a27b6a1b 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/InputDtoDataTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/InputDtoDataTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Core\Serializer\AbstractItemNormalizer;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\DummyDtoInputOutput as DummyDtoInputOutputDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\Document\InputDto as InputDtoDocument;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/OutputDtoDataTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/OutputDtoDataTransformer.php
index 7c297434024..7630c211bb6 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/OutputDtoDataTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/OutputDtoDataTransformer.php
@@ -14,7 +14,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
use ApiPlatform\Core\DataProvider\ArrayPaginator;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\DummyDtoInputOutput as DummyDtoInputOutputDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\Document\OutputDto as OutputDtoDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\OutputDto;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/OutputDtoSameClassTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/OutputDtoSameClassTransformer.php
index f8a776016c1..0a3e11596d1 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/OutputDtoSameClassTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/OutputDtoSameClassTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\DummyDtoOutputFallbackToSameClass as DummyDtoOutputFallbackToSameClassDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\DummyDtoOutputSameClass as DummyDtoOutputSameClassDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\OutputDtoDummy;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/RPCOutputDataTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/RPCOutputDataTransformer.php
index 24d6bc442c0..e5f5a80808c 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/RPCOutputDataTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/RPCOutputDataTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\RPC as RPCDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\RPCOutput;
use ApiPlatform\Tests\Fixtures\TestBundle\Entity\RPC;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/RecoverPasswordInputDataTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/RecoverPasswordInputDataTransformer.php
index d9c0581d18f..c53c99c4234 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/RecoverPasswordInputDataTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/RecoverPasswordInputDataTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Core\Serializer\AbstractItemNormalizer;
use ApiPlatform\Tests\Fixtures\TestBundle\Document\User as UserDocument;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\RecoverPasswordInput;
diff --git a/tests/Fixtures/TestBundle/DataTransformer/RecoverPasswordOutputDataTransformer.php b/tests/Fixtures/TestBundle/DataTransformer/RecoverPasswordOutputDataTransformer.php
index 5a19c76b525..e62154d8f3f 100644
--- a/tests/Fixtures/TestBundle/DataTransformer/RecoverPasswordOutputDataTransformer.php
+++ b/tests/Fixtures/TestBundle/DataTransformer/RecoverPasswordOutputDataTransformer.php
@@ -13,7 +13,7 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\DataTransformer;
-use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
+use ApiPlatform\DataTransformer\DataTransformerInterface;
use ApiPlatform\Tests\Fixtures\TestBundle\Dto\RecoverPasswordOutput;
use ApiPlatform\Tests\Fixtures\TestBundle\Entity\Dummy;
use ApiPlatform\Tests\Fixtures\TestBundle\Entity\User;