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

Reply via email to