]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix rebase, use 'object::user:<username>' or 'object::store:<storageid> as storage...
authorJörn Friedrich Dreyer <jfd@butonic.de>
Wed, 18 Jun 2014 13:20:26 +0000 (15:20 +0200)
committerJörn Friedrich Dreyer <jfd@butonic.de>
Wed, 18 Jun 2014 13:20:26 +0000 (15:20 +0200)
lib/private/files/objectstore/homeobjectstorestorage.php
lib/private/files/objectstore/objectstorestorage.php
lib/private/files/objectstore/swift.php
lib/public/files/objectstore/iobjectstore.php

index 0c8897258285508f1d33c5d03d8f555c1d4a80d1..26a2788d8605c2c7b85cff643ca65df31f00350d 100644 (file)
 
 namespace OC\Files\ObjectStore;
 
+use OC\User\User;
+
 class HomeObjectStoreStorage extends ObjectStoreStorage {
 
+       /**
+        * The home user storage requires a user object to create a unique storage id
+        * @param array $params
+        */
        public function __construct($params) {
+               if ( ! isset($params['user']) || ! $params['user'] instanceof User) {
+                       throw new \Exception('missing user object in parameters');
+               }
+               $this->user = $params['user'];
                parent::__construct($params);
 
+
                //initialize cache with root directory in cache
                if ( ! $this->is_dir('files') ) {
                        $this->mkdir('files');
                }
        }
 
+       public function getId () {
+               return 'object::user:' . $this->user->getUID();
+       }
+
+       /**
+        * get the owner of a path
+        *
+        * @param string $path The path to get the owner
+        * @return false|string uid
+        */
+       public function getOwner($path) {
+               if (is_object($this->user)) {
+                       return $this->user->getUID();
+               }
+               return false;
+       }
+
+       /**
+        * @param string $path, optional
+        * @return \OC\User\User
+        */
+       public function getUser($path = null) {
+               return $this->user;
+       }
+
+
 }
\ No newline at end of file
index 6b48e2d78dd5d1e3927bad933ed53a718ce192f7..b925f2e67fc45c025f0a802fcdfc961ed627d888 100644 (file)
@@ -40,16 +40,16 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
        private static $tmpFiles = array();
 
        public function __construct($params) {
-               if (isset($params['user']) && $params['user'] instanceof \OC\User\User) {
-                       $this->user = $params['user'];
-               } else {
-                       $this->user = null;
-               }
                if (isset($params['objectstore']) && $params['objectstore'] instanceof IObjectStore) {
                        $this->objectStore = $params['objectstore'];
                } else {
                        throw new \Exception('missing IObjectStore instance');
                }
+               if (isset($params['storageid'])) {
+                       $this->id = 'object::store:'.$params['storageid'];
+               } else {
+                       $this->id = 'object::store:'.$this->objectStore->getStorageId();
+               }
                //initialize cache with root directory in cache
                if ( ! $this->is_dir('/') ) {
                        $this->mkdir('/');
@@ -58,38 +58,21 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
 
        /**
         * Object Stores use a NoopScanner because metadata is directly stored in
-        * the file cache and cannot really scan the filesystem
+        * the file cache and cannot really scan the filesystem. The storage passed in is not used anywhere.
         * @param string $path
+        * @param \OC\Files\Storage\Storage (optional) the storage to pass to the scanner
         * @return \OC\Files\ObjectStore\NoopScanner
         */
-       public function getScanner($path = '') {
+       public function getScanner($path = '', $storage = null) {
+               if (!$storage) {
+                       $storage = $this;
+               }
                if (!isset($this->scanner)) {
-                       $this->scanner = new NoopScanner($this);
+                       $this->scanner = new NoopScanner($storage);
                }
                return $this->scanner;
        }
-       
-       /**
-        * get the owner of a path
-        *
-        * @param string $path The path to get the owner
-        * @return false|string uid
-        */
-       public function getOwner($path) {
-               if (is_object($this->user)) {
-                       return $this->user->getUID();
-               }
-               return false;
-       }
 
-       /**
-        * @param string $path, optional
-        * @return \OC\User\User
-        */
-       public function getUser($path = null) {
-               return $this->user;
-       }
-       
        /**
         * @param string $path
         * @return string
@@ -107,10 +90,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
        }
 
        public function getId () {
-               if (is_object($this->user)) {
-                       return 'objstore::user:' . $this->user->getUID();
-               }
-               return 'objstore::root';
+               return $this->id;
        }
 
        public function mkdir($path) {
@@ -363,7 +343,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
                        );
                        $fileId = $this->getCache()->put($path, $stat);
                        try {
-                               $this->objectStore->updateObject($this->getURN($fileId));
+                               $this->objectStore->writeObject($this->getURN($fileId));
                        } catch (\Exception $ex) {
                                $this->getCache()->remove($path);
                                \OCP\Util::writeLog('objectstore', 'Could not create object: '.$ex->getMessage(), \OCP\Util::ERROR);
@@ -411,7 +391,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
                $fileId = $this->getCache()->put($path, $stat);
                try {
                        //upload to object storage
-                       $this->objectStore->updateObject($this->getURN($fileId), $tmpFile);
+                       $this->objectStore->writeObject($this->getURN($fileId), $tmpFile);
                } catch (\Exception $ex) {
                        $this->getCache()->remove($path);
                        \OCP\Util::writeLog('objectstore', 'Could not create object: '.$ex->getMessage(), \OCP\Util::ERROR);
index f66b03889d25484ec0145697206a8379f306b044..14892d2855eac95eb5e7de2aa9dbceb860f40dcf 100644 (file)
@@ -80,6 +80,9 @@ class Swift implements \OCP\Files\ObjectStore\IObjectStore {
                }
        }
 
+       public function getStorageId() {
+               return $this->container->name;
+       }
 
        /**
         * @param string $urn Unified Resource Name
@@ -87,7 +90,7 @@ class Swift implements \OCP\Files\ObjectStore\IObjectStore {
         * @return void
         * @throws Exception from openstack lib when something goes wrong
         */
-       public function updateObject($urn, $tmpFile = null) {
+       public function writeObject($urn, $tmpFile = null) {
                $fileData = '';
                if ($tmpFile) {
                        $fileData = fopen($tmpFile, 'r');
index ecc35faf34a5d2668bab2ce360d342e42a48f946..3b6bd98d338831b2a84c831bce7bdea4df06afae 100644 (file)
@@ -4,6 +4,11 @@ namespace OCP\Files\ObjectStore;
 
 interface IObjectStore {
 
+       /**
+        * @return string the container or bucket name where objects are stored
+        */
+       function getStorageId();
+
        /**
         * @param string $urn the unified resource name used to identify the object
         * @param string $tmpFile path to the local temporary file that should be
@@ -12,6 +17,7 @@ interface IObjectStore {
         * @throws Exception when something goes wrong, message will be logged
         */
        function getObject($urn, $tmpFile);
+
        /**
         * @param string $urn the unified resource name used to identify the object
         * @param string $tmpFile path to the local temporary file that the object
@@ -19,8 +25,7 @@ interface IObjectStore {
         * @return void
         * @throws Exception when something goes wrong, message will be logged
         */
-       function updateObject($urn, $tmpFile = null);
-
+       function writeObject($urn, $tmpFile = null);
 
        /**
         * @param string $urn the unified resource name used to identify the object