diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index d347cb088f..4f048a2ec9 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -48,7 +48,7 @@ DomainServer::DomainServer(int argc, char* argv[]) : _sessionAuthenticationHash(), _webAuthenticationStateSet(), _cookieSessionHash(), - _settingsManager(arguments()) + _settingsManager() { LogUtils::init(); @@ -57,6 +57,8 @@ DomainServer::DomainServer(int argc, char* argv[]) : setApplicationName("domain-server"); QSettings::setDefaultFormat(QSettings::IniFormat); + _settingsManager.setupConfigMap(arguments()); + installNativeEventFilter(&_shutdownEventListener); connect(&_shutdownEventListener, SIGNAL(receivedCloseEvent()), SLOT(quit())); diff --git a/domain-server/src/DomainServerSettingsManager.cpp b/domain-server/src/DomainServerSettingsManager.cpp index e262d4e8a4..fc36a97a25 100644 --- a/domain-server/src/DomainServerSettingsManager.cpp +++ b/domain-server/src/DomainServerSettingsManager.cpp @@ -26,9 +26,9 @@ const QString SETTINGS_DESCRIPTION_RELATIVE_PATH = "/resources/describe-settings.json"; -DomainServerSettingsManager::DomainServerSettingsManager(const QStringList& argumentList) : +DomainServerSettingsManager::DomainServerSettingsManager() : _descriptionArray(), - _configMap(argumentList) + _configMap() { // load the description object from the settings description QFile descriptionFile(QCoreApplication::applicationDirPath() + SETTINGS_DESCRIPTION_RELATIVE_PATH); @@ -37,6 +37,10 @@ DomainServerSettingsManager::DomainServerSettingsManager(const QStringList& argu _descriptionArray = QJsonDocument::fromJson(descriptionFile.readAll()).array(); } +void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList) { + _configMap.loadMasterAndUserConfig(argumentList); +} + const QString SETTINGS_PATH = "/settings.json"; bool DomainServerSettingsManager::handlePublicHTTPRequest(HTTPConnection* connection, const QUrl &url) { @@ -239,13 +243,13 @@ void DomainServerSettingsManager::recurseJSONObjectAndOverwriteSettings(const QJ void DomainServerSettingsManager::persistToFile() { // make sure we have the dir the settings file is supposed to live in - QFileInfo settingsFileInfo(_settingsFilepath); + QFileInfo settingsFileInfo(_configMap.getUserConfigFilename()); if (!settingsFileInfo.dir().exists()) { settingsFileInfo.dir().mkpath("."); } - QFile settingsFile(_settingsFilepath); + QFile settingsFile(_configMap.getUserConfigFilename()); if (settingsFile.open(QIODevice::WriteOnly)) { settingsFile.write(QJsonDocument::fromVariant(_configMap.getUserConfig()).toJson()); diff --git a/domain-server/src/DomainServerSettingsManager.h b/domain-server/src/DomainServerSettingsManager.h index 4b884dfd5b..b60cb32dfd 100644 --- a/domain-server/src/DomainServerSettingsManager.h +++ b/domain-server/src/DomainServerSettingsManager.h @@ -21,10 +21,12 @@ class DomainServerSettingsManager : public QObject { Q_OBJECT public: - DomainServerSettingsManager(const QStringList& argumentList); + DomainServerSettingsManager(); bool handlePublicHTTPRequest(HTTPConnection* connection, const QUrl& url); bool handleAuthenticatedHTTPRequest(HTTPConnection* connection, const QUrl& url); + void setupConfigMap(const QStringList& argumentList); + QVariantMap& getSettingsMap() { return _configMap.getMergedConfig(); } private: QJsonObject responseObjectForType(const QString& typeValue, bool isAuthenticated = false); @@ -34,7 +36,6 @@ private: QJsonArray _descriptionArray; HifiConfigVariantMap _configMap; - QString _settingsFilepath; }; #endif // hifi_DomainServerSettingsManager_h \ No newline at end of file diff --git a/libraries/shared/src/HifiConfigVariantMap.cpp b/libraries/shared/src/HifiConfigVariantMap.cpp index fabb185a35..648f15648a 100644 --- a/libraries/shared/src/HifiConfigVariantMap.cpp +++ b/libraries/shared/src/HifiConfigVariantMap.cpp @@ -87,13 +87,16 @@ QVariantMap HifiConfigVariantMap::mergeCLParametersWithJSONConfig(const QStringL return mergedMap; } -HifiConfigVariantMap::HifiConfigVariantMap(const QStringList& argumentList) : - _masterConfigPath(), - _userConfigPath(), +HifiConfigVariantMap::HifiConfigVariantMap() : + _userConfigFilename(), _masterConfig(), _userConfig(), _mergedConfig() { + +} + +void HifiConfigVariantMap::loadMasterAndUserConfig(const QStringList& argumentList) { // check if there is a master config file const QString MASTER_CONFIG_FILE_OPTION = "--master-config"; @@ -108,16 +111,15 @@ HifiConfigVariantMap::HifiConfigVariantMap(const QStringList& argumentList) : const QString USER_CONFIG_FILE_OPTION = "--user-config"; int userConfigIndex = argumentList.indexOf(USER_CONFIG_FILE_OPTION); - QString userConfigFilepath; if (userConfigIndex != -1) { - _userConfigPath = argumentList[userConfigIndex + 1]; + _userConfigFilename = argumentList[userConfigIndex + 1]; } else { - _userConfigPath = QString("%1%2/%3/config.json").arg(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation), - QCoreApplication::organizationName(), - QCoreApplication::applicationName()); + _userConfigFilename = QString("%1/%2/%3/config.json").arg(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation), + QCoreApplication::organizationName(), + QCoreApplication::applicationName()); } - loadMapFromJSONFile(_userConfig, _userConfigPath); + loadMapFromJSONFile(_userConfig, _userConfigFilename); // the merged config is initially matched to the master config _mergedConfig = _masterConfig; diff --git a/libraries/shared/src/HifiConfigVariantMap.h b/libraries/shared/src/HifiConfigVariantMap.h index 12cc05d2e9..99a58d731e 100644 --- a/libraries/shared/src/HifiConfigVariantMap.h +++ b/libraries/shared/src/HifiConfigVariantMap.h @@ -18,16 +18,16 @@ class HifiConfigVariantMap { public: static QVariantMap mergeCLParametersWithJSONConfig(const QStringList& argumentList); - HifiConfigVariantMap(const QStringList& argumentList); + HifiConfigVariantMap(); + void loadMasterAndUserConfig(const QStringList& argumentList); const QVariantMap& getMasterConfig() const { return _masterConfig; } QVariantMap& getUserConfig() { return _userConfig; } QVariantMap& getMergedConfig() { return _mergedConfig; } - const QString& userConfigFilepath() const { return _userConfigPath; } + const QString& getUserConfigFilename() const { return _userConfigFilename; } private: - QString _masterConfigPath; - QString _userConfigPath; + QString _userConfigFilename; QVariantMap _masterConfig; QVariantMap _userConfig;