Author: Derick Rethans Date: 2007-01-19 13:02:40 +0100 (Fri, 19 Jan 2007) New Revision: 4534
Log: - Implemented issue #9965: Support for delayed initialization through ezcBaseInit. Added: trunk/Database/tests/instance_delayed_init_test.php trunk/Database/tests/test_classes.php Modified: trunk/Database/ChangeLog trunk/Database/src/instance.php trunk/Database/tests/suite.php Modified: trunk/Database/ChangeLog =================================================================== --- trunk/Database/ChangeLog 2007-01-19 12:00:48 UTC (rev 4533) +++ trunk/Database/ChangeLog 2007-01-19 12:02:40 UTC (rev 4534) @@ -1,8 +1,10 @@ 1.3beta1 - [RELEASEDATE] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- Fixed issue #8240: ezcQueryExpression::in does not work with strings. - Implemented enhancement #8473: Oracle Limit/Offset optimization. -- Fixed bug:#8240: ezcQueryExpression::in does not work with strings. +- Implemented issue #9965: Support for delayed initialization through + ezcBaseInit. 1.2 - Monday 18 December 2006 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Modified: trunk/Database/src/instance.php =================================================================== --- trunk/Database/src/instance.php 2007-01-19 12:00:48 UTC (rev 4533) +++ trunk/Database/src/instance.php 2007-01-19 12:02:40 UTC (rev 4534) @@ -90,7 +90,17 @@ if ( !isset( self::$Instances[$identifier] ) ) { - throw new ezcDbHandlerNotFoundException( $identifier ); + // The DatabaseInstanceFetchConfig callback should return an + // ezcDbHandler object which will then be set as instance. + $ret = ezcBaseInit::fetchConfig( 'ezcInitDatabaseInstance', $identifier ); + if ( $ret === null ) + { + throw new ezcDbHandlerNotFoundException( $identifier ); + } + else + { + self::set( $ret, $identifier ); + } } return self::$Instances[$identifier]; Added: trunk/Database/tests/instance_delayed_init_test.php =================================================================== --- trunk/Database/tests/instance_delayed_init_test.php 2007-01-19 12:00:48 UTC (rev 4533) +++ trunk/Database/tests/instance_delayed_init_test.php 2007-01-19 12:02:40 UTC (rev 4534) @@ -0,0 +1,56 @@ +<?php +/** + * @copyright Copyright (C) 2005-2007 eZ systems as. All rights reserved. + * @license http://ez.no/licenses/new_bsd New BSD License + * @version //autogentag// + * @filesource + * @package Database + * @subpackage Tests + */ + +require_once 'test_classes.php'; + +/** + * Test the delayed init for instance class + * + * @package Database + * @subpackage Tests + */ +class ezcDatabaseInstanceDelayedInitTest extends ezcTestCase +{ + private $default; + + public function setUp() + { + if ( !ezcBaseFeatures::hasExtensionSupport( 'pdo_sqlite') ) + { + $this->markTestSkipped(); + return; + } + } + + public function testDelayedInit1() + { + ezcBaseInit::setCallback( 'ezcInitDatabaseInstance', 'testDelayedInitDatabaseInstance' ); + $instance1 = ezcDbInstance::get( 'delayed1' ); + } + + public function testDelayedInit2() + { + try + { + $instance2 = ezcDbInstance::get( 'delayed2' ); + } + catch ( ezcDbHandlerNotFoundException $e ) + { + $this->assertEquals( "Could not find the database handler: 'delayed2'.", $e->getMessage() ); + } + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite( "ezcDatabaseInstanceDelayedInitTest" ); + } +} + +?> Property changes on: trunk/Database/tests/instance_delayed_init_test.php ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/Database/tests/suite.php =================================================================== --- trunk/Database/tests/suite.php 2007-01-19 12:00:48 UTC (rev 4533) +++ trunk/Database/tests/suite.php 2007-01-19 12:02:40 UTC (rev 4534) @@ -14,6 +14,7 @@ require_once 'factory_test.php'; require_once 'transactions_test.php'; require_once 'instance_test.php'; +require_once 'instance_delayed_init_test.php'; require_once 'handler_test.php'; require_once 'sqlabstraction/expression_test.php'; require_once 'sqlabstraction/query_test.php'; @@ -39,6 +40,7 @@ $this->addTest( ezcDatabaseFactoryTest::suite() ); $this->addTest( ezcDatabaseTransactionsTest::suite() ); $this->addTest( ezcDatabaseInstanceTest::suite() ); + $this->addTest( ezcDatabaseInstanceDelayedInitTest::suite() ); $this->addTest( ezcDatabaseHandlerTest::suite() ); $this->addTest( ezcQueryExpressionTest::suite() ); $this->addTest( ezcQueryTest::suite() ); Added: trunk/Database/tests/test_classes.php =================================================================== --- trunk/Database/tests/test_classes.php 2007-01-19 12:00:48 UTC (rev 4533) +++ trunk/Database/tests/test_classes.php 2007-01-19 12:02:40 UTC (rev 4534) @@ -0,0 +1,17 @@ +<?php +class testDelayedInitDatabaseInstance +{ + static function configureObject( $identifier ) + { + if ( $identifier !== false ) + { + switch ( $identifier ) + { + case 'delayed1': + return ezcDbFactory::create( 'sqlite://:memory:' ); + + } + } + } +} +?> Property changes on: trunk/Database/tests/test_classes.php ___________________________________________________________________ Name: svn:eol-style + native -- svn-components mailing list svn-components@lists.ez.no http://lists.ez.no/mailman/listinfo/svn-components