Skip to content

Commit

Permalink
Merge pull request #279 from doctrine/fix/non-dbal-jackalope
Browse files Browse the repository at this point in the history
only load schema services when dbal is used
  • Loading branch information
dbu committed Jul 25, 2017
2 parents d7ac969 + 8b99f95 commit 659238b
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 21 deletions.
10 changes: 8 additions & 2 deletions CHANGELOG.md
@@ -1,11 +1,17 @@
Changelog
=========

(unreleased)
------------
1.3.9
-----

* Added connection parameter to RepositorySchema, so that the DBAL configuration applies. This will affect
you if you configured connection options for DBAL, but will not affect already created tables.

NOTE: Releases 1.3.6 - 1.3.8 have various non-complete or broken versions of this feature.

1.3.5
-----

* Added support for `session` parameter in repository initializers with the new `SessionAwareInitializerInterface`.
GenericInitializer now implements this new interface.

Expand Down
14 changes: 13 additions & 1 deletion DependencyInjection/DoctrinePHPCRExtension.php
Expand Up @@ -50,6 +50,13 @@ class DoctrinePHPCRExtension extends AbstractDoctrineExtension
private $loader;
private $disableProxyWarmer = false;

/**
* Whether the schema listener service has been loaded already.
*
* This is done the first time a session with jackalope-doctrine-dbal is encountered.
*/
private $dbalSchemaListenerLoaded = false;

/**
* {@inheritdoc}
*/
Expand Down Expand Up @@ -186,7 +193,10 @@ private function loadJackalopeSession(array $session, ContainerBuilder $containe
$connectionAliasName = sprintf('doctrine_phpcr%s.jackalope_doctrine_dbal.%s_connection', $serviceNamePrefix, $session['name']);
$container->setAlias($connectionAliasName, $connectionService);

$backendParameters['jackalope.doctrine_dbal_connection'] = new Reference($connectionAliasName);
if (!$this->dbalSchemaListenerLoaded) {
$this->loader->load('jackalope_doctrine_dbal.xml');
$this->dbalSchemaListenerLoaded = true;
}
$container
->getDefinition('doctrine_phpcr.jackalope_doctrine_dbal.schema_listener')
->addTag('doctrine.event_listener', array(
Expand All @@ -195,6 +205,8 @@ private function loadJackalopeSession(array $session, ContainerBuilder $containe
'lazy' => true,
))
;

$backendParameters['jackalope.doctrine_dbal_connection'] = new Reference($connectionAliasName);
if (false === $admin && isset($session['backend']['caches'])) {
foreach ($session['backend']['caches'] as $key => $cache) {
$backendParameters['jackalope.data_caches'][$key] = new Reference($cache);
Expand Down
18 changes: 0 additions & 18 deletions Resources/config/jackalope.xml
Expand Up @@ -4,11 +4,6 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

<parameters>
<parameter key="doctrine_phpcr.jackalope_doctrine_dbal.schema_listener.class">Doctrine\Bundle\PHPCRBundle\EventListener\JackalopeDoctrineDbalSchemaListener</parameter>
<parameter key="doctrine_phpcr.jackalope_doctrine_dbal.repository_schema.class">Jackalope\Transport\DoctrineDBAL\RepositorySchema</parameter>
</parameters>

<services>

<service id="doctrine_phpcr.jackalope.repository.factory.service.jackrabbit"
Expand Down Expand Up @@ -48,19 +43,6 @@
<argument /><!-- workspace string (1) -->
</service>

<service id="doctrine_phpcr.jackalope_doctrine_dbal.schema"
class="%doctrine_phpcr.jackalope_doctrine_dbal.repository_schema.class%"
public="false"
>
<argument type="collection"/>
<argument type="service" id="doctrine_phpcr.jackalope_doctrine_dbal.default_connection"/>
</service>

<service id="doctrine_phpcr.jackalope_doctrine_dbal.schema_listener"
class="%doctrine_phpcr.jackalope_doctrine_dbal.schema_listener.class%">
<argument type="service" id="doctrine_phpcr.jackalope_doctrine_dbal.schema" />
</service>

</services>

</container>
29 changes: 29 additions & 0 deletions Resources/config/jackalope_doctrine_dbal.xml
@@ -0,0 +1,29 @@
<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

<parameters>
<parameter key="doctrine_phpcr.jackalope_doctrine_dbal.schema_listener.class">Doctrine\Bundle\PHPCRBundle\EventListener\JackalopeDoctrineDbalSchemaListener</parameter>
<parameter key="doctrine_phpcr.jackalope_doctrine_dbal.repository_schema.class">Jackalope\Transport\DoctrineDBAL\RepositorySchema</parameter>
</parameters>

<services>

<service id="doctrine_phpcr.jackalope_doctrine_dbal.schema"
class="%doctrine_phpcr.jackalope_doctrine_dbal.repository_schema.class%"
public="false"
>
<argument type="collection"/>
<argument type="service" id="doctrine_phpcr.jackalope_doctrine_dbal.default_connection"/>
</service>

<service id="doctrine_phpcr.jackalope_doctrine_dbal.schema_listener"
class="%doctrine_phpcr.jackalope_doctrine_dbal.schema_listener.class%">
<argument type="service" id="doctrine_phpcr.jackalope_doctrine_dbal.schema" />
</service>

</services>

</container>

0 comments on commit 659238b

Please sign in to comment.