From e1f3abf7a583669ba1fed703365de9e12a76e22c Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Wed, 26 Nov 2014 12:38:24 +0100
Subject: [PATCH] Correctly namespace and autoload DatabaseException

---
 lib/private/databaseexception.php | 23 ++++++++++++++++++++
 lib/private/db.php                | 36 ++++++++++---------------------
 lib/private/group/database.php    |  2 +-
 lib/private/server.php            |  2 +-
 tests/lib/testcase.php            |  4 ++--
 5 files changed, 38 insertions(+), 29 deletions(-)
 create mode 100644 lib/private/databaseexception.php

diff --git a/lib/private/databaseexception.php b/lib/private/databaseexception.php
new file mode 100644
index 0000000000..1135621ead
--- /dev/null
+++ b/lib/private/databaseexception.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Copyright (c) 2012 Frank Karlitschek <frank@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC;
+
+class DatabaseException extends \Exception {
+	private $query;
+
+	//FIXME getQuery seems to be unused, maybe use parent constructor with $message, $code and $previous
+	public function __construct($message, $query = null){
+		parent::__construct($message);
+		$this->query = $query;
+	}
+
+	public function getQuery() {
+		return $this->query;
+	}
+}
diff --git a/lib/private/db.php b/lib/private/db.php
index b820281b8a..f801513368 100644
--- a/lib/private/db.php
+++ b/lib/private/db.php
@@ -22,20 +22,6 @@
 
 define('MDB2_SCHEMA_DUMP_STRUCTURE', '1');
 
-class DatabaseException extends Exception {
-	private $query;
-
-	//FIXME getQuery seems to be unused, maybe use parent constructor with $message, $code and $previous
-	public function __construct($message, $query = null){
-		parent::__construct($message);
-		$this->query = $query;
-	}
-
-	public function getQuery() {
-		return $this->query;
-	}
-}
-
 /**
  * This class manages the access to the database. It basically is a wrapper for
  * Doctrine with some adaptions.
@@ -65,7 +51,7 @@ class OC_DB {
 	 * @param int $limit
 	 * @param int $offset
 	 * @param bool $isManipulation
-	 * @throws DatabaseException
+	 * @throws \OC\DatabaseException
 	 * @return OC_DB_StatementWrapper prepared SQL query
 	 *
 	 * SQL query via Doctrine prepare(), needs to be execute()'d!
@@ -82,7 +68,7 @@ class OC_DB {
 		try {
 			$result =$connection->prepare($query, $limit, $offset);
 		} catch (\Doctrine\DBAL\DBALException $e) {
-			throw new \DatabaseException($e->getMessage(), $query);
+			throw new \OC\DatabaseException($e->getMessage(), $query);
 		}
 		// differentiate between query and manipulation
 		$result = new OC_DB_StatementWrapper($result, $isManipulation);
@@ -123,7 +109,7 @@ class OC_DB {
 	 *					.. or a simple sql query string
 	 * @param array $parameters
 	 * @return OC_DB_StatementWrapper
-	 * @throws DatabaseException
+	 * @throws \OC\DatabaseException
 	 */
 	static public function executeAudited( $stmt, array $parameters = null) {
 		if (is_string($stmt)) {
@@ -132,7 +118,7 @@ class OC_DB {
 				// TODO try to convert LIMIT OFFSET notation to parameters, see fixLimitClauseForMSSQL
 				$message = 'LIMIT and OFFSET are forbidden for portability reasons,'
 						 . ' pass an array with \'limit\' and \'offset\' instead';
-				throw new DatabaseException($message);
+				throw new \OC\DatabaseException($message);
 			}
 			$stmt = array('sql' => $stmt, 'limit' => null, 'offset' => null);
 		}
@@ -140,7 +126,7 @@ class OC_DB {
 			// convert to prepared statement
 			if ( ! array_key_exists('sql', $stmt) ) {
 				$message = 'statement array must at least contain key \'sql\'';
-				throw new DatabaseException($message);
+				throw new \OC\DatabaseException($message);
 			}
 			if ( ! array_key_exists('limit', $stmt) ) {
 				$stmt['limit'] = null;
@@ -160,7 +146,7 @@ class OC_DB {
 			} else {
 				$message = 'Expected a prepared statement or array got ' . gettype($stmt);
 			}
-			throw new DatabaseException($message);
+			throw new \OC\DatabaseException($message);
 		}
 		return $result;
 	}
@@ -169,7 +155,7 @@ class OC_DB {
 	 * gets last value of autoincrement
 	 * @param string $table The optional table name (will replace *PREFIX*) and add sequence suffix
 	 * @return string id
-	 * @throws DatabaseException
+	 * @throws \OC\DatabaseException
 	 *
 	 * \Doctrine\DBAL\Connection lastInsertId
 	 *
@@ -312,7 +298,7 @@ class OC_DB {
 	 * @param mixed $result
 	 * @param string $message
 	 * @return void
-	 * @throws DatabaseException
+	 * @throws \OC\DatabaseException
 	 */
 	public static function raiseExceptionOnError($result, $message = null) {
 		if(self::isError($result)) {
@@ -321,7 +307,7 @@ class OC_DB {
 			} else {
 				$message .= ', Root cause:' . self::getErrorMessage($result);
 			}
-			throw new DatabaseException($message, self::getErrorCode($result));
+			throw new \OC\DatabaseException($message, self::getErrorCode($result));
 		}
 	}
 
@@ -345,7 +331,7 @@ class OC_DB {
 	 *
 	 * @param string $table
 	 * @return bool
-	 * @throws DatabaseException
+	 * @throws \OC\DatabaseException
 	 */
 	public static function tableExists($table) {
 
@@ -381,7 +367,7 @@ class OC_DB {
 				$result = \OC_DB::executeAudited($sql, array($table));
 				break;
 			default:
-				throw new DatabaseException("Unknown database type: $dbType");
+				throw new \OC\DatabaseException("Unknown database type: $dbType");
 		}
 
 		return $result->fetchOne() === $table;
diff --git a/lib/private/group/database.php b/lib/private/group/database.php
index 6bad55c8d5..2069e99599 100644
--- a/lib/private/group/database.php
+++ b/lib/private/group/database.php
@@ -220,7 +220,7 @@ class OC_Group_Database extends OC_Group_Backend {
 	 * @param string $gid
 	 * @param string $search
 	 * @return int|false
-	 * @throws DatabaseException
+	 * @throws \OC\DatabaseException
 	 */
 	public function countUsersInGroup($gid, $search = '') {
 		$stmt = OC_DB::prepare('SELECT COUNT(`uid`) AS `count` FROM `*PREFIX*group_user` WHERE `gid` = ? AND `uid` LIKE ?');
diff --git a/lib/private/server.php b/lib/private/server.php
index c413ee8bf6..cd57d41ce5 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -205,7 +205,7 @@ class Server extends SimpleContainer implements IServerContainer {
 			$factory = new \OC\DB\ConnectionFactory();
 			$type = $c->getConfig()->getSystemValue('dbtype', 'sqlite');
 			if (!$factory->isValidType($type)) {
-				throw new \DatabaseException('Invalid database type');
+				throw new \OC\DatabaseException('Invalid database type');
 			}
 			$connectionParams = $factory->createConnectionParams($c->getConfig());
 			$connection = $factory->getConnection($type, $connectionParams);
diff --git a/tests/lib/testcase.php b/tests/lib/testcase.php
index e6f5ca71da..934bc5fa8f 100644
--- a/tests/lib/testcase.php
+++ b/tests/lib/testcase.php
@@ -64,7 +64,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
 
 	/**
 	 * Remove all entries from the storages table
-	 * @throws \DatabaseException
+	 * @throws \OC\DatabaseException
 	 */
 	static protected function tearDownAfterClassCleanStorages() {
 		$sql = 'DELETE FROM `*PREFIX*storages`';
@@ -74,7 +74,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
 
 	/**
 	 * Remove all entries from the filecache table
-	 * @throws \DatabaseException
+	 * @throws \OC\DatabaseException
 	 */
 	static protected function tearDownAfterClassCleanFileCache() {
 		$sql = 'DELETE FROM `*PREFIX*filecache`';
-- 
GitLab