Skip to content

Commit

Permalink
tweaked DI container
Browse files Browse the repository at this point in the history
  • Loading branch information
schmittjoh authored and fabpot committed Dec 30, 2010
1 parent ba2b1aa commit db5e180
Show file tree
Hide file tree
Showing 15 changed files with 376 additions and 45 deletions.
Expand Up @@ -62,6 +62,9 @@ public function testDbalLoadFromXmlMultipleConnections()
$loadXml = new XmlFileLoader($container, __DIR__.'/Fixtures/config/xml');
$loadXml->load('dbal_service_multiple_connections.xml');
$loader->dbalLoad(array(), $container);

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

// doctrine.dbal.mysql_connection
Expand All @@ -82,6 +85,9 @@ public function testDbalLoadFromXmlMultipleConnections()
$loadXml = new XmlFileLoader($container, __DIR__.'/Fixtures/config/xml');
$loadXml->load('dbal_service_single_connection.xml');
$loader->dbalLoad(array(), $container);

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

// doctrine.dbal.mysql_connection
Expand Down Expand Up @@ -126,7 +132,7 @@ public function testDependencyInjectionConfigurationDefaults()
'auto_generate_proxy_classes' => true,
'mappings' => array('YamlBundle' => array()),
);

$loader->dbalLoad(array(), $container);
$loader->ormLoad($config, $container);

Expand Down Expand Up @@ -203,6 +209,8 @@ public function testLoadSimpleSingleConnection()

$this->loadFromFile($container, 'orm_service_simple_single_entity_manager');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.dbal.default_connection');
Expand Down Expand Up @@ -237,6 +245,8 @@ public function testLoadSingleConnection()

$this->loadFromFile($container, 'orm_service_single_entity_manager');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.dbal.default_connection');
Expand Down Expand Up @@ -274,6 +284,8 @@ public function testLoadMultipleConnections()

$this->loadFromFile($container, 'orm_service_multiple_entity_managers');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.dbal.conn1_connection');
Expand Down Expand Up @@ -440,6 +452,8 @@ public function testEntityManagerMetadataCacheDriverConfiguration()

$this->loadFromFile($container, 'orm_service_multiple_entity_managers');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.orm.dm1_metadata_cache');
Expand All @@ -457,6 +471,8 @@ public function testEntityManagerMemcacheMetadataCacheDriverConfiguration()

$this->loadFromFile($container, 'orm_service_simple_single_entity_manager');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.orm.default_metadata_cache');
Expand All @@ -478,6 +494,8 @@ public function testDependencyInjectionImportsOverrideDefaults()

$this->loadFromFile($container, 'orm_imports');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$this->assertEquals('apc', $container->getParameter('doctrine.orm.metadata_cache_driver'));
Expand Down
Expand Up @@ -109,6 +109,8 @@ public function testLoadSimpleSingleConnection()

$this->loadFromFile($container, 'mongodb_service_simple_single_connection');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.odm.mongodb.default_connection');
Expand Down Expand Up @@ -141,6 +143,8 @@ public function testLoadSingleConnection()

$this->loadFromFile($container, 'mongodb_service_single_connection');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.odm.mongodb.default_connection');
Expand All @@ -167,6 +171,8 @@ public function testLoadMultipleConnections()

$this->loadFromFile($container, 'mongodb_service_multiple_connections');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.odm.mongodb.conn1_connection');
Expand Down Expand Up @@ -259,6 +265,8 @@ public function testDocumentManagerMetadataCacheDriverConfiguration()

$this->loadFromFile($container, 'mongodb_service_multiple_connections');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.odm.mongodb.dm1_metadata_cache');
Expand All @@ -276,6 +284,8 @@ public function testDocumentManagerMemcacheMetadataCacheDriverConfiguration()

$this->loadFromFile($container, 'mongodb_service_simple_single_connection');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$definition = $container->getDefinition('doctrine.odm.mongodb.default_metadata_cache');
Expand All @@ -302,6 +312,8 @@ public function testDependencyInjectionImportsOverrideDefaults()

$this->loadFromFile($container, 'odm_imports');

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

$this->assertEquals('apc', $container->getParameter('doctrine.odm.mongodb.metadata_cache_driver'));
Expand Down
34 changes: 17 additions & 17 deletions src/Symfony/Bundle/FrameworkBundle/Resources/config/security.xml
Expand Up @@ -85,11 +85,11 @@
<argument type="service" id="security.access.decision_manager" />
</service>

<service id="security.role_hierarchy" class="%security.role_hierarchy.class%">
<service id="security.role_hierarchy" class="%security.role_hierarchy.class%" public="false">
<argument>%security.role_hierarchy.roles%</argument>
</service>

<service id="security.account_checker" class="%security.account_checker.class%" />
<service id="security.account_checker" class="%security.account_checker.class%" public="false" />

<service id="security.encoder.sha1" class="%security.encoder.digest.class%">
<argument>sha1</argument>
Expand All @@ -101,67 +101,67 @@

<service id="security.encoder.plain" class="%security.encoder.plain.class%" />

<service id="security.logout.handler.session" class="%security.logout.handler.session.class%"></service>
<service id="security.logout.handler.session" class="%security.logout.handler.session.class%" public="false"></service>

<service id="security.authentication.listener.anonymous" class="%security.authentication.listener.anonymous.class%">
<service id="security.authentication.listener.anonymous" class="%security.authentication.listener.anonymous.class%" public="false">
<argument type="service" id="security.context" />
<argument>%security.anonymous.key%</argument>
<argument type="service" id="logger" on-invalid="null" />
</service>

<service id="security.authentication.trust_resolver" class="%security.authentication.trust_resolver.class%">
<service id="security.authentication.trust_resolver" class="%security.authentication.trust_resolver.class%" public="false">
<argument>%security.authentication.trust_resolver.anonymous_class%</argument>
<argument>%security.authentication.trust_resolver.rememberme_class%</argument>
</service>

<service id="security.authentication.retry_entry_point" class="%security.authentication.retry_entry_point.class%" />
<service id="security.authentication.retry_entry_point" class="%security.authentication.retry_entry_point.class%" public="false" />

<service id="security.authentication.form_entry_point" class="%security.authentication.form_entry_point.class%">
<service id="security.authentication.form_entry_point" class="%security.authentication.form_entry_point.class%" public="false">
<argument>%security.authentication.form.login_path%</argument>
<argument>%security.authentication.form.use_forward%</argument>
</service>

<service id="security.authentication.basic_entry_point" class="%security.authentication.basic_entry_point.class%">
<service id="security.authentication.basic_entry_point" class="%security.authentication.basic_entry_point.class%" public="false">
<argument>%security.authentication.basic_entry_point.realm%</argument>
</service>

<service id="security.authentication.digest_entry_point" class="%security.authentication.digest_entry_point.class%">
<service id="security.authentication.digest_entry_point" class="%security.authentication.digest_entry_point.class%" public="false">
<argument>%security.authentication.digest_entry_point.realm%</argument>
<argument>%security.authentication.digest_entry_point.key%</argument>
</service>

<service id="security.channel_listener" class="%security.channel_listener.class%">
<service id="security.channel_listener" class="%security.channel_listener.class%" public="false">
<argument type="service" id="security.access_map" />
<argument type="service" id="security.authentication.retry_entry_point" />
<argument type="service" id="logger" on-invalid="null" />
</service>

<service id="security.access.decision_manager" class="%security.access.decision_manager.class%">
<service id="security.access.decision_manager" class="%security.access.decision_manager.class%" public="false">
<argument type="collection"></argument>
<argument>%security.access.decision_manager.strategy%</argument>
<argument>%security.access.decision_manager.allow_if_all_abstain%</argument>
<argument>%security.access.decision_manager.allow_if_equal_granted_denied%</argument>
</service>
<service id="security.access_map" class="%security.access_map.class%" />
<service id="security.access_map" class="%security.access_map.class%" public="false" />

<service id="security.access.simple_role_voter" class="%security.access.simple_role_voter.class%">
<service id="security.access.simple_role_voter" class="%security.access.simple_role_voter.class%" public="false">
<tag name="security.voter" />
</service>
<service id="security.access.authenticated_voter" class="%security.access.authenticated_voter.class%">
<service id="security.access.authenticated_voter" class="%security.access.authenticated_voter.class%" public="false">
<argument type="service" id="security.authentication.trust_resolver" />
<tag name="security.voter" />
</service>
<service id="security.access.role_hierarchy_voter" class="%security.access.role_hierarchy_voter.class%">
<service id="security.access.role_hierarchy_voter" class="%security.access.role_hierarchy_voter.class%" public="false">
<argument type="service" id="security.role_hierarchy" />
</service>

<service id="security.firewall" class="%security.firewall.class%">
<tag name="kernel.listener" priority="128" />
<argument type="service" id="security.firewall.map" />
</service>
<service id="security.firewall.map" class="%security.firewall.map.class%" />
<service id="security.firewall.map" class="%security.firewall.map.class%" public="false" />

<service id="security.context_listener" class="%security.context_listener.class%">
<service id="security.context_listener" class="%security.context_listener.class%" public="false">
<argument type="service" id="security.context" />
<argument type="collection"></argument>
<argument type="service" id="logger" on-invalid="null" />
Expand Down
Expand Up @@ -95,6 +95,9 @@ protected function getContainer($file)
$security = new SecurityExtension();
$container->registerExtension($security);
$this->loadFromFile($container, $file);

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
$container->freeze();

return $container;
Expand Down
91 changes: 91 additions & 0 deletions src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php
@@ -0,0 +1,91 @@
<?php

namespace Symfony\Component\DependencyInjection\Compiler;

/*
* This file is part of the Symfony framework.
*
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/

/**
* Compiler Pass Configuration
*
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
*/
class PassConfig
{
const TYPE_OPTIMIZE = 'optimization';
const TYPE_REMOVE = 'removing';

protected $mergePass;
protected $optimizationPasses;
protected $removingPasses;

public function __construct()
{
$this->mergePass = new MergeExtensionConfigurationPass();

$this->optimizationPasses = array(
new ResolveParameterPlaceHoldersPass(),
new ResolveInterfaceInjectorsPass(),
);

$this->removingPasses = array(
new RemoveUnusedDefinitionsPass(),
);
}

public function getPasses()
{
return array_merge(
array($this->mergePass),
$this->optimizationPasses,
$this->removingPasses
);
}

public function addPass(CompilerPassInterface $pass, $type = self::TYPE_OPTIMIZE)
{
$property = $type.'Passes';
if (!isset($this->$property)) {
throw new \InvalidArgumentException(sprintf('Invalid type "%s".', $type));
}

$passes = &$this->$property;
$passes[] = $pass;
}

public function getOptimizationPasses()
{
return $this->optimizationPasses;
}

public function getRemovingPasses()
{
return $this->removingPasses;
}

public function getMergePass()
{
return $this->mergePass;
}

public function setMergePass(CompilerPassInterface $pass)
{
$this->mergePass = $pass;
}

public function setOptimizationPasses(array $passes)
{
$this->optimizationPasses = $passes;
}

public function setRemovingPasses(array $passes)
{
$this->removingPasses = $passes;
}
}

0 comments on commit db5e180

Please sign in to comment.