From: Gunnar Wrobel Date: Sun, 9 Jan 2011 20:30:32 +0000 (+0100) Subject: Correct returning the namespace handler. Support logging the namespace with a __toStr... X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=fb0398866fd638c8031595942d2e4c57c2d26200;p=horde.git Correct returning the namespace handler. Support logging the namespace with a __toString() method. --- diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Base.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Base.php index d78276cbb..69b2ce39c 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Base.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Base.php @@ -358,6 +358,7 @@ implements Horde_Kolab_Storage_Driver */ public function getNamespace() { + return $this->_driver->getNamespace(); } /** diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Log.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Log.php index ed409fad4..e1fd07ef1 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Log.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Log.php @@ -335,6 +335,18 @@ extends Horde_Kolab_Storage_Driver_Decorator_Base */ public function getNamespace() { + $this->_logger->info( + sprintf('Driver "%s": Retrieving namespaces.', $this->getDriverName()) + ); + $result = parent::getNamespace(); + $this->_logger->info( + sprintf( + 'Driver "%s": Retrieved namespaces [%s].', + $this->getDriverName(), + (string) $result + ) + ); + return $result; } /** diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Timer.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Timer.php index 10d59793b..85b25b8cc 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Timer.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Timer.php @@ -342,6 +342,15 @@ extends Horde_Kolab_Storage_Driver_Decorator_Base */ public function getNamespace() { + $this->_timer->push(); + $result = parent::getNamespace(); + $this->_logger->info( + sprintf( + 'REQUEST OUT IMAP: %s ms [getNamespace]', + floor($this->_timer->pop() * 1000) + ) + ); + return $result; } /** diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace.php index 68781458e..6397e9ba6 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace.php @@ -274,4 +274,14 @@ implements Iterator { return key($this->_namespaces) !== null; } + + /** + * Convert the namespace description to a string. + * + * @return string The namespace description. + */ + public function __toString() + { + return get_class($this) . ': ' . join(', ', $this->_namespaces); + } } \ No newline at end of file diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace/Element.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace/Element.php index d7403df28..c73d97081 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace/Element.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace/Element.php @@ -169,4 +169,13 @@ abstract class Horde_Kolab_Storage_Folder_Namespace_Element return join($path, $this->_delimiter); } + /** + * Convert the namespace description to a string. + * + * @return string The namespace description. + */ + public function __toString() + { + return '"' . $this->_name . '" (' . $this->getType() . ', "' . $this->_delimiter . '")'; + } } \ No newline at end of file diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/LogTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/LogTest.php index 881979ac7..9376a0e85 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/LogTest.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/LogTest.php @@ -74,4 +74,27 @@ extends Horde_Kolab_Storage_TestCase $driver->listAnnotation('/shared/vendor/kolab/folder-type'); $this->assertLogContains('Driver "Horde_Kolab_Storage_Driver_Mock": List contained 4 folder annotations.'); } + + public function testGetNamespaceLogsEntry() + { + $driver = new Horde_Kolab_Storage_Driver_Decorator_Log( + $this->getNullMock(), + $this->getMockLogger() + ); + $driver->getNamespace(); + $this->assertLogCount(2); + } + + public function testGetNamespaceType() + { + $driver = new Horde_Kolab_Storage_Driver_Decorator_Log( + $this->getNullMock(), + $this->getMockLogger() + ); + $this->assertInstanceOf( + 'Horde_Kolab_Storage_Folder_Namespace', + $driver->getNamespace() + ); + } + } diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/TimerTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/TimerTest.php index a6bf80b09..62db99ddd 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/TimerTest.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/TimerTest.php @@ -85,4 +85,28 @@ extends Horde_Kolab_Storage_TestCase $driver->listAnnotation('/shared/vendor/kolab/folder-type'); $this->assertLogRegExp('/REQUEST OUT IMAP:.*listAnnotation.*/'); } + + public function testGetNamespaceLogsEntry() + { + $driver = new Horde_Kolab_Storage_Driver_Decorator_Timer( + $this->getTwoFolderMock(), + new Horde_Support_Timer(), + $this->getMockLogger() + ); + $driver->getNamespace(); + $this->assertLogRegExp('/REQUEST OUT IMAP:.*getNamespace.*/'); + } + + public function testGetNamespaceType() + { + $driver = new Horde_Kolab_Storage_Driver_Decorator_Timer( + $this->getTwoFolderMock(), + new Horde_Support_Timer(), + $this->getMockLogger() + ); + $this->assertInstanceOf( + 'Horde_Kolab_Storage_Folder_Namespace', + $driver->getNamespace() + ); + } } diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Folder/NamespaceTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Folder/NamespaceTest.php index a5ccf4c00..3e23e8d50 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Folder/NamespaceTest.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Folder/NamespaceTest.php @@ -236,6 +236,15 @@ extends Horde_Kolab_Storage_TestCase } } + public function testToString() + { + $namespace = new Horde_Kolab_Storage_Folder_Namespace_Fixed('test@example.com'); + $this->assertEquals( + 'Horde_Kolab_Storage_Folder_Namespace_Fixed: "INBOX" (personal, "/"), "user" (other, "/"), "" (shared, "/")', + (string) $namespace + ); + } + private function _getFolder($name, $namespace) { $this->_connection->expects($this->any())