Correct returning the namespace handler. Support logging the namespace with a __toStr...
authorGunnar Wrobel <p@rdus.de>
Sun, 9 Jan 2011 20:30:32 +0000 (21:30 +0100)
committerGunnar Wrobel <p@rdus.de>
Sun, 9 Jan 2011 20:30:32 +0000 (21:30 +0100)
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Base.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Log.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Decorator/Timer.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder/Namespace/Element.php
framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/LogTest.php
framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Driver/Decorator/TimerTest.php
framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Folder/NamespaceTest.php

index d78276c..69b2ce3 100644 (file)
@@ -358,6 +358,7 @@ implements Horde_Kolab_Storage_Driver
      */
     public function getNamespace()
     {
+        return $this->_driver->getNamespace();
     }
 
     /**
index ed409fa..e1fd07e 100644 (file)
@@ -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;
     }
 
     /**
index 10d5979..85b25b8 100644 (file)
@@ -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;
     }
 
     /**
index 6878145..6397e9b 100644 (file)
@@ -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
index d7403df..c73d970 100644 (file)
@@ -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
index 881979a..9376a0e 100644 (file)
@@ -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()
+        );
+    }
+
 }
index a6bf80b..62db99d 100644 (file)
@@ -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()
+        );
+    }
 }
index a5ccf4c..3e23e8d 100644 (file)
@@ -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())