From 2c8e6f99bdb8e0aa216fb9f2f58456c8e8c816e6 Mon Sep 17 00:00:00 2001 From: vrana Date: Fri, 6 Apr 2012 14:42:02 -0700 Subject: [PATCH] Standardize mysql.configuration-provider Summary: NOTE: BC break! Test Plan: / Reviewers: epriestley Reviewed By: epriestley CC: aran, nh Differential Revision: https://secure.phabricator.com/D2130 --- conf/default.conf.php | 4 +++ scripts/sql/upgrade_schema.php | 2 +- src/__phutil_library_map__.php | 4 ++- .../base/storage/configuration/__init__.php | 16 ---------- .../base/DatabaseConfigurationProvider.php | 30 +++++++++++++++++++ .../storage/configuration/base/__init__.php | 10 +++++++ .../DefaultDatabaseConfigurationProvider.php} | 26 +++++----------- .../configuration/default/__init__.php | 13 ++++++++ .../base/storage/lisk/PhabricatorLiskDAO.php | 7 ++--- .../base/storage/lisk/__init__.php | 1 - src/infrastructure/env/PhabricatorEnv.php | 1 + src/infrastructure/setup/PhabricatorSetup.php | 2 +- src/infrastructure/setup/__init__.php | 1 - 13 files changed, 73 insertions(+), 44 deletions(-) delete mode 100644 src/applications/base/storage/configuration/__init__.php create mode 100644 src/applications/base/storage/configuration/base/DatabaseConfigurationProvider.php create mode 100644 src/applications/base/storage/configuration/base/__init__.php rename src/applications/base/storage/configuration/{DatabaseConfigurationProvider.php => default/DefaultDatabaseConfigurationProvider.php} (63%) create mode 100644 src/applications/base/storage/configuration/default/__init__.php diff --git a/conf/default.conf.php b/conf/default.conf.php index b2e06c998b..dfc2a0c2b2 100644 --- a/conf/default.conf.php +++ b/conf/default.conf.php @@ -106,6 +106,10 @@ return array( // -- MySQL --------------------------------------------------------------- // + // Class providing database configuration. It must implement + // DatabaseConfigurationProvider. + 'mysql.configuration-provider' => 'DefaultDatabaseConfigurationProvider', + // The username to use when connecting to MySQL. 'mysql.user' => 'root', diff --git a/scripts/sql/upgrade_schema.php b/scripts/sql/upgrade_schema.php index d486d5a7c0..1eb362a0ef 100755 --- a/scripts/sql/upgrade_schema.php +++ b/scripts/sql/upgrade_schema.php @@ -61,7 +61,7 @@ if (empty($options['f']) && empty($options['d'])) { $next_version = isset($options['v']) ? (int)$options['v'] : null; $max_version = isset($options['m']) ? (int)$options['m'] : null; -$conf = DatabaseConfigurationProvider::getConfiguration(); +$conf = PhabricatorEnv::newObjectFromConfig('mysql.configuration-provider'); if ($options['u']) { $conn_user = $options['u']; diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 3c1268fe87..356b22aa7b 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -190,7 +190,8 @@ phutil_register_library_map(array( 'DarkConsoleServicesPlugin' => 'aphront/console/plugin/services', 'DarkConsoleXHProfPlugin' => 'aphront/console/plugin/xhprof', 'DarkConsoleXHProfPluginAPI' => 'aphront/console/plugin/xhprof/api', - 'DatabaseConfigurationProvider' => 'applications/base/storage/configuration', + 'DatabaseConfigurationProvider' => 'applications/base/storage/configuration/base', + 'DefaultDatabaseConfigurationProvider' => 'applications/base/storage/configuration/default', 'DifferentialAction' => 'applications/differential/constants/action', 'DifferentialActionHasNoEffectException' => 'applications/differential/exception/noeffect', 'DifferentialAddCommentView' => 'applications/differential/view/addcomment', @@ -1134,6 +1135,7 @@ phutil_register_library_map(array( 'DarkConsoleRequestPlugin' => 'DarkConsolePlugin', 'DarkConsoleServicesPlugin' => 'DarkConsolePlugin', 'DarkConsoleXHProfPlugin' => 'DarkConsolePlugin', + 'DefaultDatabaseConfigurationProvider' => 'DatabaseConfigurationProvider', 'DifferentialActionHasNoEffectException' => 'DifferentialException', 'DifferentialAddCommentView' => 'AphrontView', 'DifferentialAffectedPath' => 'DifferentialDAO', diff --git a/src/applications/base/storage/configuration/__init__.php b/src/applications/base/storage/configuration/__init__.php deleted file mode 100644 index 5aa96d158c..0000000000 --- a/src/applications/base/storage/configuration/__init__.php +++ /dev/null @@ -1,16 +0,0 @@ -dao = $dao; $this->mode = $mode; } @@ -41,6 +40,9 @@ class DatabaseConfigurationProvider { } public function getDatabase() { + if (!$this->getDao()) { + return null; + } return 'phabricator_'.$this->getDao()->getApplicationName(); } @@ -48,18 +50,4 @@ class DatabaseConfigurationProvider { return $this->dao; } - final protected function getMode() { - return $this->mode; - } - - public static function getConfiguration() { - // Get DB info. Note that we are using a dummy PhabricatorUser object in - // creating the DatabaseConfigurationProvider, which is not used at all. - $conf_provider = PhabricatorEnv::getEnvConfig( - 'mysql.configuration_provider', 'DatabaseConfigurationProvider'); - PhutilSymbolLoader::loadClass($conf_provider); - $conf = newv($conf_provider, array(new PhabricatorUser(), 'r')); - return $conf; - } - } diff --git a/src/applications/base/storage/configuration/default/__init__.php b/src/applications/base/storage/configuration/default/__init__.php new file mode 100644 index 0000000000..3ba1403867 --- /dev/null +++ b/src/applications/base/storage/configuration/default/__init__.php @@ -0,0 +1,13 @@ + 'AphrontMySQLDatabaseConnectionBase', 'differential.attach-task-class' => 'DifferentialTasksAttacher', + 'mysql.configuration-provider' => 'DatabaseConfigurationProvider', ); } diff --git a/src/infrastructure/setup/PhabricatorSetup.php b/src/infrastructure/setup/PhabricatorSetup.php index 4ab54c9502..fd922a470b 100644 --- a/src/infrastructure/setup/PhabricatorSetup.php +++ b/src/infrastructure/setup/PhabricatorSetup.php @@ -455,7 +455,7 @@ final class PhabricatorSetup { self::writeHeader("MySQL DATABASE & STORAGE CONFIGURATION"); - $conf = DatabaseConfigurationProvider::getConfiguration(); + $conf = PhabricatorEnv::newObjectFromConfig('mysql.configuration-provider'); $conn_user = $conf->getUser(); $conn_pass = $conf->getPassword(); $conn_host = $conf->getHost(); diff --git a/src/infrastructure/setup/__init__.php b/src/infrastructure/setup/__init__.php index 56b5f72d2e..36ade10b12 100644 --- a/src/infrastructure/setup/__init__.php +++ b/src/infrastructure/setup/__init__.php @@ -6,7 +6,6 @@ -phutil_require_module('phabricator', 'applications/base/storage/configuration'); phutil_require_module('phabricator', 'infrastructure/env'); phutil_require_module('phabricator', 'infrastructure/setup/sql'); phutil_require_module('phabricator', 'storage/queryfx');