Skip to content

Commit

Permalink
Merge pull request #784 from kbond
Browse files Browse the repository at this point in the history
- Add support Symfony 7
- Remove compatibility before Symfony 6.4
  • Loading branch information
GromNaN authored Dec 13, 2023
2 parents cfeb317 + 628b820 commit f190d18
Show file tree
Hide file tree
Showing 9 changed files with 35 additions and 45 deletions.
7 changes: 5 additions & 2 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ jobs:
stability:
- "stable"
symfony-version:
- "5.4.*"
- "6.4.*"
- "7.0.*"
driver-version:
- "stable"
dependencies:
Expand All @@ -40,7 +40,10 @@ jobs:
php-version: "8.1"
driver-version: "1.5.0"
stability: "stable"
symfony-version: "5.4.*"
symfony-version: "6.4.*"
exclude:
- php-version: "8.1"
symfony-version: "7.0.*"

services:
mongodb:
Expand Down
2 changes: 0 additions & 2 deletions DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@
* Class for Symfony bundles to configure mappings for model classes not in the
* automapped folder.
*
* NOTE: alias is only supported by Symfony 2.6+ and will be ignored with older versions.
*
* @internal since version 4.7.0
*/
final class DoctrineMongoDBMappingsPass extends RegisterMappingsPass
Expand Down
6 changes: 0 additions & 6 deletions DependencyInjection/DoctrineMongoDBExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
use Doctrine\Common\EventSubscriber;
use Doctrine\ODM\MongoDB\DocumentManager;
use InvalidArgumentException;
use Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver;
use Symfony\Bridge\Doctrine\DependencyInjection\AbstractDoctrineExtension;
use Symfony\Bridge\Doctrine\Messenger\DoctrineClearEntityManagerWorkerSubscriber;
use Symfony\Component\Cache\Adapter\ApcuAdapter;
Expand Down Expand Up @@ -400,11 +399,6 @@ private function loadMessengerServices(ContainerBuilder $container): void
/** @param array<string, mixed> $config */
private function loadEntityValueResolverServices(ContainerBuilder $container, FileLoader $loader, array $config): void
{
// available in Symfony 6.2 and higher
if (! class_exists(EntityValueResolver::class)) {
return;
}

$loader->load('value_resolver.xml');

if (! class_exists(ExpressionLanguage::class)) {
Expand Down
5 changes: 2 additions & 3 deletions Form/DoctrineMongoDBExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,14 @@ public function __construct(ManagerRegistry $registry)
}

/** @return FormTypeInterface[] */
protected function loadTypes()
protected function loadTypes(): array
{
return [
new Type\DocumentType($this->registry),
];
}

/** @return FormTypeGuesserInterface|null */
protected function loadTypeGuesser()
protected function loadTypeGuesser(): ?FormTypeGuesserInterface
{
return new DoctrineMongoDBTypeGuesser($this->registry);
}
Expand Down
14 changes: 6 additions & 8 deletions Form/DoctrineMongoDBTypeGuesser.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ public function __construct(ManagerRegistry $registry)
$this->registry = $registry;
}

/** @return TypeGuess|null */
public function guessType(string $class, string $property)
public function guessType(string $class, string $property): ?TypeGuess
{
$ret = $this->getMetadata($class);
if (! $ret) {
Expand Down Expand Up @@ -114,10 +113,11 @@ public function guessType(string $class, string $property)
Guess::MEDIUM_CONFIDENCE,
);
}

return null;
}

/** @return ValueGuess|null */
public function guessRequired(string $class, string $property)
public function guessRequired(string $class, string $property): ?ValueGuess
{
$ret = $this->getMetadata($class);
if ($ret && $ret[0]->hasField($property)) {
Expand All @@ -137,8 +137,7 @@ public function guessRequired(string $class, string $property)
return null;
}

/** @return ValueGuess|null */
public function guessMaxLength(string $class, string $property)
public function guessMaxLength(string $class, string $property): ?ValueGuess
{
return null;
}
Expand All @@ -150,8 +149,7 @@ public function guessMinLength($class, $property): void
{
}

/** @return ValueGuess|null */
public function guessPattern(string $class, string $property)
public function guessPattern(string $class, string $property): ?ValueGuess
{
$ret = $this->getMetadata($class);
if (! $ret || ! $ret[0]->hasField($property) || $ret[0]->hasAssociation($property)) {
Expand Down
6 changes: 3 additions & 3 deletions README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ Compatibility
The current version of this bundle has the following requirements:
* PHP 8.1 or newer is required
* `ext-mongodb` 1.5 or newer
* Symfony 5.4 or newer is required
* Symfony 6.4 or newer is required

Support for older Symfony, PHP and MongoDB versions is provided via the `3.0.x`
releases (tracked in the `3.0` branch). This version sees bug and security fixes
Support for older Symfony, PHP and MongoDB versions is provided via the `4.7.x`
releases (tracked in the `4.7.x` branch). This version sees bug and security fixes
only.
9 changes: 3 additions & 6 deletions Tests/Validator/Constraints/UniqueTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,25 @@
use Doctrine\Bundle\MongoDBBundle\Validator\Constraints\Unique;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Mapping\Loader\AnnotationLoader;

use function assert;
use Symfony\Component\Validator\Mapping\Loader\AttributeLoader;

final class UniqueTest extends TestCase
{
public function testWithDefaultProperty(): void
{
$metadata = new ClassMetadata(UniqueDocumentDummyOne::class);

$loader = new AnnotationLoader();
$loader = new AttributeLoader();

self::assertTrue($loader->loadClassMetadata($metadata));

[$constraint] = $metadata->getConstraints();
assert($constraint instanceof Unique);
self::assertInstanceOf(Unique::class, $constraint);
self::assertSame(['email'], $constraint->fields);
self::assertSame('doctrine_odm.mongodb.unique', $constraint->validatedBy());
}
}

/** @Unique(fields={"email"}) */
#[Unique(['email'])]
class UniqueDocumentDummyOne
{
Expand Down
1 change: 1 addition & 0 deletions UPGRADE-5.0.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
UPGRADE FROM 4.x to 5.0
=======================

* Add support for Symfony 7.0 and require at least Symfony 6.4
* The `doctrine:mongodb:tail-cursor` command and
`Doctrine\Bundle\MongoDBBundle\Cursor\TailableCursorProcessorInterface`
interface have been dropped. You should use
Expand Down
30 changes: 15 additions & 15 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,27 +30,27 @@
"doctrine/mongodb-odm": "^2.3",
"doctrine/persistence": "^2.2 || ^3.0",
"psr/log": "^1.0 || ^2.0 || ^3.0",
"symfony/config": "^5.4 || ^6.2",
"symfony/console": "^5.4 || ^6.2",
"symfony/dependency-injection": "^5.4 || ^6.2",
"symfony/config": "^6.4 || ^7.0",
"symfony/console": "^6.4 || ^7.0",
"symfony/dependency-injection": "^6.4 || ^7.0",
"symfony/deprecation-contracts": "^2.1 || ^3.0",
"symfony/doctrine-bridge": "^5.4.19 || ^6.2",
"symfony/framework-bundle": "^5.4 || ^6.2",
"symfony/http-kernel": "^5.4 || ^6.2",
"symfony/options-resolver": "^5.4 || ^6.2"
"symfony/doctrine-bridge": "^6.4 || ^7.0",
"symfony/framework-bundle": "^6.4 || ^7.0",
"symfony/http-kernel": "^6.4 || ^7.0",
"symfony/options-resolver": "^6.4 || ^7.0"
},
"require-dev": {
"doctrine/coding-standard": "^11.0",
"doctrine/data-fixtures": "^1.3",
"doctrine/data-fixtures": "^1.7",
"phpunit/phpunit": "^9.5.5",
"psalm/plugin-symfony": "^5.0",
"symfony/browser-kit": "^5.4 || ^6.2",
"symfony/form": "^5.4 || ^6.2",
"symfony/phpunit-bridge": "^6.2",
"symfony/security-bundle": "^5.4 || ^6.2",
"symfony/stopwatch": "^5.4 || ^6.2",
"symfony/validator": "^5.4 || ^6.2",
"symfony/yaml": "^5.4 || ^6.2",
"symfony/browser-kit": "^6.4 || ^7.0",
"symfony/form": "^6.4 || ^7.0",
"symfony/phpunit-bridge": "^6.4.1 || ^7.0.1",
"symfony/security-bundle": "^6.4 || ^7.0",
"symfony/stopwatch": "^6.4 || ^7.0",
"symfony/validator": "^6.4 || ^7.0",
"symfony/yaml": "^6.4 || ^7.0",
"vimeo/psalm": "^5.12"
},
"conflict": {
Expand Down

0 comments on commit f190d18

Please sign in to comment.