From 8d5118eb016d8579c3298e58c24810912e979a7e Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel
Date: Tue, 21 Dec 2010 21:38:07 +0100 Subject: [PATCH] Allow decorating the storage handler with logging in the factory. --- .../Kolab_Storage/lib/Horde/Kolab/Storage/Factory.php | 10 ++++++++-- .../test/Horde/Kolab/Storage/Unit/FactoryTest.php | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Factory.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Factory.php index cc2289a51..677f695f7 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Factory.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Factory.php @@ -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. * * * @@ -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; } /** diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/FactoryTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/FactoryTest.php index 72043912f..e8098d487 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/FactoryTest.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/FactoryTest.php @@ -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() + ) + ) + ); + } + + } -- 2.11.0