Start adding a factory.
authorGunnar Wrobel <p@rdus.de>
Tue, 14 Dec 2010 09:51:36 +0000 (10:51 +0100)
committerGunnar Wrobel <p@rdus.de>
Tue, 14 Dec 2010 17:26:58 +0000 (18:26 +0100)
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Factory.php [new file with mode: 0644]
framework/Kolab_Storage/package.xml
framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/FactoryTest.php [new file with mode: 0644]

diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Factory.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Factory.php
new file mode 100644 (file)
index 0000000..8b71d0e
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/**
+ * A generic factory for the various Kolab_Storage classes.
+ *
+ * PHP version 5
+ *
+ * @category Kolab
+ * @package  Kolab_Storage
+ * @author   Gunnar Wrobel <wrobel@pardus.de>
+ * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link     http://pear.horde.org/index.php?package=Kolab_Storage
+ */
+
+/**
+ * A generic factory for the various Kolab_Storage classes.
+ *
+ * Copyright 2004-2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @category Kolab
+ * @package  Kolab_Storage
+ * @author   Gunnar Wrobel <wrobel@pardus.de>
+ * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link     http://pear.horde.org/index.php?package=Kolab_Storage
+ */
+class Horde_Kolab_Storage_Factory
+{
+    /**
+     * Create the storage handler.
+     *
+     * @return Horde_Kolab_Storage The storage handler.
+     */
+    public function create(Horde_Kolab_Storage_Driver $driver)
+    {
+        return new Horde_Kolab_Storage_Base($driver);
+    }
+
+}
\ No newline at end of file
index 8bb2b72..aa6a3e4 100644 (file)
@@ -32,7 +32,7 @@
   <active>yes</active>
  </lead>
  <date>2010-12-14</date>
- <time>09:14:53</time>
+ <time>10:46:22</time>
  <version>
   <release>0.4.0</release>
   <api>0.1.0</api>
        <file name="Data.php" role="php" />
        <file name="Driver.php" role="php" />
        <file name="Exception.php" role="php" />
+       <file name="Factory.php" role="php" />
        <file name="Folder.php" role="php" />
        <file name="Translation.php" role="php">
         <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
         </dir> <!-- /test/Horde/Kolab/Storage/Unit/Driver -->
         <file name="BaseTest.php" role="test" />
         <file name="CliTest.php" role="test" />
+        <file name="FactoryTest.php" role="test" />
        </dir> <!-- /test/Horde/Kolab/Storage/Unit -->
        <file name="AclTest.php" role="test" />
        <file name="AllTests.php" role="test" />
     <min>1.4.0b1</min>
    </pearinstaller>
    <package>
-    <name>Net_IMAP</name>
-    <channel>pear.php.net</channel>
-    <min>1.1.0beta2</min>
-   </package>
-   <package>
     <name>Mail_mimeDecode</name>
     <channel>pear.php.net</channel>
    </package>
     <channel>pear.horde.org</channel>
    </package>
    <package>
-    <name>Kolab_Server</name>
-    <channel>pear.horde.org</channel>
-   </package>
-   <package>
-    <name>Auth</name>
-    <channel>pear.horde.org</channel>
-    <min>0.1.1</min>
-   </package>
-   <package>
     <name>Cache</name>
     <channel>pear.horde.org</channel>
    </package>
    <package>
-    <name>Group</name>
-    <channel>pear.horde.org</channel>
-   </package>
-   <package>
     <name>History</name>
     <channel>pear.horde.org</channel>
    </package>
     <channel>pear.horde.org</channel>
    </package>
    <package>
-    <name>Nls</name>
-    <channel>pear.horde.org</channel>
-   </package>
-   <package>
     <name>Translation</name>
     <channel>pear.horde.org</channel>
    </package>
     <channel>pear.horde.org</channel>
    </package>
   </required>
+  <optional>
+   <package>
+    <name>Net_IMAP</name>
+    <channel>pear.php.net</channel>
+    <min>1.1.0beta2</min>
+   </package>
+   <package>
+    <name>Imap_Client</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <extension>
+    <name>imap</name>
+   </extension>
+  </optional>
  </dependencies>
  <phprelease>
   <filelist>
    <install as="Horde/Kolab/Storage/Data.php" name="lib/Horde/Kolab/Storage/Data.php" />
    <install as="Horde/Kolab/Storage/Driver.php" name="lib/Horde/Kolab/Storage/Driver.php" />
    <install as="Horde/Kolab/Storage/Exception.php" name="lib/Horde/Kolab/Storage/Exception.php" />
+   <install as="Horde/Kolab/Storage/Factory.php" name="lib/Horde/Kolab/Storage/Factory.php" />
    <install as="Horde/Kolab/Storage/Folder.php" name="lib/Horde/Kolab/Storage/Folder.php" />
    <install as="Horde/Kolab/Storage/Translation.php" name="lib/Horde/Kolab/Storage/Translation.php" />
    <install as="Horde/Kolab/Storage/Driver/Base.php" name="lib/Horde/Kolab/Storage/Driver/Base.php" />
    <install as="Horde/Kolab/Storage/Server/DriverTest.php" name="test/Horde/Kolab/Storage/Server/DriverTest.php" />
    <install as="Horde/Kolab/Storage/Unit/BaseTest.php" name="test/Horde/Kolab/Storage/Unit/BaseTest.php" />
    <install as="Horde/Kolab/Storage/Unit/CliTest.php" name="test/Horde/Kolab/Storage/Unit/CliTest.php" />
+   <install as="Horde/Kolab/Storage/Unit/FactoryTest.php" name="test/Horde/Kolab/Storage/Unit/FactoryTest.php" />
    <install as="Horde/Kolab/Storage/Unit/Cli/ModuleTest.php" name="test/Horde/Kolab/Storage/Unit/Cli/ModuleTest.php" />
    <install as="Horde/Kolab/Storage/Unit/Cli/OptionsTest.php" name="test/Horde/Kolab/Storage/Unit/Cli/OptionsTest.php" />
    <install as="Horde/Kolab/Storage/Unit/Driver/CclientTest.php" name="test/Horde/Kolab/Storage/Unit/Driver/CclientTest.php" />
diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/FactoryTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/FactoryTest.php
new file mode 100644 (file)
index 0000000..03941b8
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Test the factory.
+ *
+ * PHP version 5
+ *
+ * @category   Kolab
+ * @package    Kolab_Storage
+ * @subpackage UnitTests
+ * @author     Gunnar Wrobel <wrobel@pardus.de>
+ * @license    http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link       http://pear.horde.org/index.php?package=Kolab_Storage
+ */
+
+/**
+ * Prepare the test setup.
+ */
+require_once dirname(__FILE__) . '/../Autoload.php';
+
+/**
+ * Test the factory.
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @category   Kolab
+ * @package    Kolab_Storage
+ * @subpackage UnitTests
+ * @author     Gunnar Wrobel <wrobel@pardus.de>
+ * @license    http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link       http://pear.horde.org/index.php?package=Kolab_Storage
+ */
+class Horde_Kolab_Storage_Unit_FactoryTest
+extends Horde_Kolab_Storage_TestCase
+{
+    public function testConstruction()
+    {
+        $factory = new Horde_Kolab_Storage_Factory();
+        $this->assertType(
+            'Horde_Kolab_Storage_Base',
+            $factory->create(new Horde_Kolab_Storage_Driver_Mock())
+        );
+    }
+}