Allow decorating the storage handler with logging in the factory.
authorGunnar Wrobel <p@rdus.de>
Tue, 21 Dec 2010 20:38:07 +0000 (21:38 +0100)
committerGunnar Wrobel <p@rdus.de>
Tue, 4 Jan 2011 07:54:12 +0000 (08:54 +0100)
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Factory.php
framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/FactoryTest.php

index cc2289a..677f695 100644 (file)
@@ -48,7 +48,7 @@ class Horde_Kolab_Storage_Factory
      *  - driver : The type of backend driver. One of "mock", "php", "pear",
      *             "horde", "horde-socket", and "roundcube".
      *  - params : Backend specific connection parameters.
-     *
+     *  - logger : An optional log handler.
      *    
      * </pre>
      *
@@ -56,9 +56,15 @@ class Horde_Kolab_Storage_Factory
      */
     public function createFromParams(array $params)
     {
-        return new Horde_Kolab_Storage_Base(
+        $storage = new Horde_Kolab_Storage_Base(
             $this->createDriverFromParams($params)
         );
+        if (isset($params['logger'])) {
+            $storage = new Horde_Kolab_Storage_Decorator_Log(
+                $storage, $params['logger']
+            );
+        }
+        return $storage;
     }
 
     /**
index 7204391..e8098d4 100644 (file)
@@ -107,4 +107,20 @@ extends Horde_Kolab_Storage_TestCase
             )
         );
     }
+
+    public function testLogDecoration()
+    {
+        $factory = new Horde_Kolab_Storage_Factory();
+        $this->assertInstanceOf(
+            'Horde_Kolab_Storage_Decorator_Log',
+            $factory->createFromParams(
+                array(
+                    'driver' => 'mock',
+                    'logger' => $this->getMockLogger()
+                )
+            )
+        );
+    }
+
+
 }