Skip to content

Commit

Permalink
Merge pull request #433 from MatTheCat/symfony-4
Browse files Browse the repository at this point in the history
Fix Symfony 4 BC breaks
  • Loading branch information
alcaeus authored Nov 18, 2017
2 parents c5187b7 + f749e99 commit 3196af4
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 4 deletions.
9 changes: 9 additions & 0 deletions DataCollector/StandardDataCollector.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,15 @@ public function collect(Request $request, Response $response, \Exception $except
$this->data['queries'] = array_map('json_encode', $this->queries);
}

public function reset()
{
$this->queries = [];
$this->data = [
'nb_queries' => 0,
'queries' => [],
];
}

public function getQueryCount()
{
return $this->data['nb_queries'];
Expand Down
4 changes: 4 additions & 0 deletions DependencyInjection/DoctrineMongoDBExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ protected function loadDocumentManager(array $documentManager, $defaultDM, $defa
$odmDmDef = new Definition('%doctrine_mongodb.odm.document_manager.class%', $odmDmArgs);
$odmDmDef->setFactory(['%doctrine_mongodb.odm.document_manager.class%', 'create']);
$odmDmDef->addTag('doctrine_mongodb.odm.document_manager');
$odmDmDef->setPublic(true);

$container
->setDefinition(sprintf('doctrine_mongodb.odm.%s_document_manager', $documentManager['name']), $odmDmDef)
Expand All @@ -270,6 +271,8 @@ protected function loadDocumentManager(array $documentManager, $defaultDM, $defa
'doctrine_mongodb.odm.document_manager',
new Alias(sprintf('doctrine_mongodb.odm.%s_document_manager', $documentManager['name']))
);
$container->getAlias('doctrine_mongodb.odm.document_manager')->setPublic(true);

$container->setAlias(
'doctrine_mongodb.odm.event_manager',
new Alias(sprintf('doctrine_mongodb.odm.%s_connection.event_manager', $connectionName))
Expand Down Expand Up @@ -302,6 +305,7 @@ protected function loadConnections(array $connections, ContainerBuilder $contain
$this->normalizeDriverOptions($connection),
];
$odmConnDef = new Definition('%doctrine_mongodb.odm.connection.class%', $odmConnArgs);
$odmConnDef->setPublic(true);
$id = sprintf('doctrine_mongodb.odm.%s_connection', $name);
$container->setDefinition($id, $odmConnDef);
$cons[$name] = $id;
Expand Down
16 changes: 16 additions & 0 deletions ManagerRegistry.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,25 @@

use Doctrine\ODM\MongoDB\MongoDBException;
use Symfony\Bridge\Doctrine\ManagerRegistry as BaseManagerRegistry;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
use Symfony\Component\DependencyInjection\ContainerInterface;

class ManagerRegistry extends BaseManagerRegistry
{
public function __construct($name, array $connections, array $managers, $defaultConnection, $defaultManager, $proxyInterfaceName, ContainerInterface $container = null)
{
$parentTraits = class_uses(parent::class);
if (isset($parentTraits[ContainerAwareTrait::class])) {
// this case should be removed when Symfony 3.4 becomes the lowest supported version
// and then also, the constructor should type-hint Psr\Container\ContainerInterface
$this->setContainer($container);
} else {
$this->container = $container;
}

parent::__construct($name, $connections, $managers, $defaultConnection, $defaultManager, $proxyInterfaceName);
}

/**
* Resolves a registered namespace alias to the full namespace.
*
Expand Down
6 changes: 2 additions & 4 deletions Resources/config/mongodb.xml
Original file line number Diff line number Diff line change
Expand Up @@ -180,16 +180,14 @@
</service>

<!-- Registry -->
<service id="doctrine_mongodb" class="%doctrine_mongodb.odm.class%">
<service id="doctrine_mongodb" class="%doctrine_mongodb.odm.class%" public="true">
<argument>MongoDB</argument>
<argument>%doctrine_mongodb.odm.connections%</argument>
<argument>%doctrine_mongodb.odm.document_managers%</argument>
<argument>%doctrine_mongodb.odm.default_connection%</argument>
<argument>%doctrine_mongodb.odm.default_document_manager%</argument>
<argument>Doctrine\ODM\MongoDB\Proxy\Proxy</argument>
<call method="setContainer">
<argument type="service" id="service_container" />
</call>
<argument type="service" id="service_container" />
</service>

<!-- listeners -->
Expand Down
13 changes: 13 additions & 0 deletions Tests/DataCollector/StandardDataCollectorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,17 @@ public function testCollect()
$this->assertEquals(1, $collector->getQueryCount());
$this->assertEquals(['{"foo":"bar"}'], $collector->getQueries());
}

public function testReset()
{
$collector = new StandardDataCollector();
$collector->logQuery(['foo' => 'bar']);
$collector->collect(new Request(), new Response());

$collector->reset();
$collector->collect(new Request(), new Response());

$this->assertEquals([], $collector->getQueries());
$this->assertEquals(0, $collector->getQueryCount());
}
}
10 changes: 10 additions & 0 deletions Tests/DependencyInjection/DoctrineMongoDBExtensionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -225,4 +225,14 @@ public function testFactoriesAreRegistered()
[new Reference('persistent_collection_factory_service')]
], $configDm1->getMethodCalls());
}

public function testPublicServicesAndAliases()
{
$loader = new DoctrineMongoDBExtension();
$loader->load(self::buildConfiguration(), $container = $this->buildMinimalContainer());

$this->assertTrue($container->getDefinition('doctrine_mongodb')->isPublic());
$this->assertTrue($container->getDefinition('doctrine_mongodb.odm.dummy_document_manager')->isPublic());
$this->assertTrue($container->getAlias('doctrine_mongodb.odm.document_manager')->isPublic());
}
}

0 comments on commit 3196af4

Please sign in to comment.