cleanup unused arguments
authorYoungjae Shin <yj99.shin@samsung.com>
Wed, 1 Apr 2020 06:57:23 +0000 (15:57 +0900)
committerYoungjae Shin <yj99.shin@samsung.com>
Thu, 2 Apr 2020 04:34:35 +0000 (13:34 +0900)
26 files changed:
CMakeLists.txt
Definitions.cmake
common/definitions.h
packaging/modes.spec
plugin/CMakeLists.txt
supervisor/ArgumentParser.cpp
supervisor/ArgumentParser.h
supervisor/ModeCareTaker.cpp
supervisor/ModeCareTaker.h
supervisor/ModeManager.cpp
supervisor/ModeManager.h
supervisor/ModesConfig.h
supervisor/PluginMapper.cpp
supervisor/PluginMapper.h
supervisor/RuleManager.cpp
supervisor/RuleManager.h
supervisor/Supervisor.cpp
supervisor/Supervisor.h
supervisor/main.cpp
supervisor/modes.service.in
unittest/modes_test_conflict.cpp
unittest/modes_test_generator.cpp
unittest/modes_test_modemgr.cpp
unittest/modes_test_parser.cpp
unittest/modes_test_plugin.cpp
unittest/modes_test_rulemgr.cpp

index 8c8e5cdc1f3fcabcf82cb605665bd3d205fa7f94..b770374eba6fc06f669fafe260bc7362d94e340a 100644 (file)
@@ -18,8 +18,7 @@ SET(MODULE "${PROJECT_NAME}-module")
 FILE(GLOB HEADERS include/*.h)
 INSTALL(FILES ${HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME})
 
-FILE(GLOB SCHEMA schema/*.xsd)
-INSTALL(FILES ${SCHEMA} DESTINATION ${MODES_XSD_DEFAULT_DIR})
+INSTALL(DIRECTORY schema DESTINATION ${MODES_DEFAULT_RO_DIR})
 
 IF(STDOUT_LOG)
        ADD_DEFINITIONS("-DMDS_STDOUT")
index 1ff419fd071ee7cdb99588fc12e793117bc67251..89e9a72daf40e981b73c2fe46078f090372003ff 100644 (file)
@@ -10,32 +10,17 @@ IF(NOT DEFINED MODES_PLUGIN_DEFAULT_DIR)
 ENDIF(NOT DEFINED MODES_PLUGIN_DEFAULT_DIR)
 ADD_DEFINITIONS("-DMODES_PLUGIN_DEFAULT_DIR=\"${MODES_PLUGIN_DEFAULT_DIR}\"")
 
-IF(NOT DEFINED MODES_MODE_DEFAULT_DIR)
-       MESSAGE("No MODES_MODE_DEFAULT_DIR. Check build system")
-       SET(MODES_MODE_DEFAULT_DIR "/usr/share/modes/mode")
-ENDIF(NOT DEFINED MODES_MODE_DEFAULT_DIR)
-ADD_DEFINITIONS("-DMODES_MODE_DEFAULT_DIR=\"${MODES_MODE_DEFAULT_DIR}\"")
+IF(NOT DEFINED MODES_DEFAULT_RO_DIR)
+       MESSAGE("No MODES_DEFAULT_RO_DIR. Check build system")
+       SET(MODES_DEFAULT_RO_DIR "/usr/share/modes")
+ENDIF(NOT DEFINED MODES_DEFAULT_RO_DIR)
+ADD_DEFINITIONS("-DMODES_DEFAULT_RO_DIR=\"${MODES_DEFAULT_RO_DIR}\"")
 
-IF(NOT DEFINED MODES_CUSTOM_MODE_DEFAULT_DIR)
-       MESSAGE("No MODES_CUSTOM_MODE_DEFAULT_DIR. Check build system")
-       SET(MODES_CUSTOM_MODE_DEFAULT_DIR "/var/lib/modes/custom-mode")
-ENDIF(NOT DEFINED MODES_CUSTOM_MODE_DEFAULT_DIR)
+IF(NOT DEFINED MODES_DEFAULT_RW_DIR)
+       MESSAGE("No MODES_DEFAULT_RW_DIR. Check build system")
+       SET(MODES_DEFAULT_RW_DIR "/var/lib/modes")
+ENDIF(NOT DEFINED MODES_DEFAULT_RW_DIR)
+SET(MODES_CUSTOM_MODE_DEFAULT_DIR ${MODES_DEFAULT_RW_DIR}/custom-mode)
 ADD_DEFINITIONS("-DMODES_CUSTOM_MODE_DEFAULT_DIR=\"${MODES_CUSTOM_MODE_DEFAULT_DIR}\"")
-
-IF(NOT DEFINED MODES_ACTIONRULE_DEFAULT_DIR)
-       MESSAGE("No MODES_ACTIONRULE_DEFAULT_DIR. Check build system")
-       SET(MODES_ACTIONRULE_DEFAULT_DIR "/usr/share/modes/rule")
-ENDIF(NOT DEFINED MODES_ACTIONRULE_DEFAULT_DIR)
-ADD_DEFINITIONS("-DMODES_ACTIONRULE_DEFAULT_DIR=\"${MODES_ACTIONRULE_DEFAULT_DIR}\"")
-
-IF(NOT DEFINED MODES_XSD_DEFAULT_DIR)
-       MESSAGE("No MODES_XSD_DEFAULT_DIR. Check build system")
-       SET(MODES_XSD_DEFAULT_DIR "/usr/share/modes/schema")
-ENDIF(NOT DEFINED MODES_XSD_DEFAULT_DIR)
-ADD_DEFINITIONS("-DMODES_XSD_DEFAULT_DIR=\"${MODES_XSD_DEFAULT_DIR}\"")
-
-IF(NOT DEFINED MODES_UNDO_INFO_DEFAULT_DIR)
-       MESSAGE("No MODES_UNDO_INFO_DEFAULT_DIR. Check build system")
-       SET(MODES_UNDO_INFO_DEFAULT_DIR "/var/lib/modes/undo-info")
-ENDIF(NOT DEFINED MODES_UNDO_INFO_DEFAULT_DIR)
+SET(MODES_UNDO_INFO_DEFAULT_DIR ${MODES_DEFAULT_RW_DIR}/undo-info)
 ADD_DEFINITIONS("-DMODES_UNDO_INFO_DEFAULT_DIR=\"${MODES_UNDO_INFO_DEFAULT_DIR}\"")
index 0f803cd87661faba692ddfedf3e2e30187db8d2f..ea601a66f0556d6d553b34a0abf9f913d39e4292 100644 (file)
 #define MODES_NAMESPACE_END }
 #define MODES_NAMESPACE_USE using namespace ModeSupervisorNamespace
 
-#ifndef MODES_MODE_DEFAULT_DIR
-#define MODES_MODE_DEFAULT_DIR "/usr/share/modes/mode"
-#warning "MODES_MODE_DEFAULT_DIR is redefined"
+#ifndef MODES_PLUGIN_DEFAULT_DIR
+#define MODES_PLUGIN_DEFAULT_DIR "/usr/lib/modes-plugins/"
+#warning "MODES_PLUGIN_DEFAULT_DIR is redefined"
 #endif
+#define MODES_PLUGIN_LIB_PREFIX "libmodes-plugin"
 
-#ifndef MODES_CUSTOM_MODE_DEFAULT_DIR
-#define MODES_CUSTOM_MODE_DEFAULT_DIR "/var/lib/modes/custom-mode"
-#warning "MODES_CUSTOM_MODE_DEFAULT_DIR is redefined"
+#ifndef MODES_DEFAULT_RO_DIR
+#define MODES_DEFAULT_RO_DIR "/usr/share/modes"
+#warning "MODES_DEFAULT_RO_DIR is redefined"
 #endif
 
-#ifndef MODES_ACTIONRULE_DEFAULT_DIR
-#define MODES_ACTIONRULE_DEFAULT_DIR "/usr/share/modes/rule"
-#warning "MODES_ACTIONRULE_DEFAULT_DIR is redefined"
-#endif
+#define MODES_MODE_DEFAULT_DIR MODES_DEFAULT_RO_DIR "/mode"
+#define MODES_MODE_FILE_SUFFIX "_mode.xml"
 
-#ifndef MODES_PLUGIN_DEFAULT_DIR
-#define MODES_PLUGIN_DEFAULT_DIR "/usr/lib/modes-plugins/"
-#warning "MODES_PLUGIN_DEFAULT_DIR is redefined"
-#endif
+#define MODES_ACTIONRULE_DEFAULT_DIR MODES_DEFAULT_RO_DIR "/rule"
+#define MODES_ACTIONRULE_FILE_SUFFIX "_rule.xml"
+
+#define MODES_XSD_DEFAULT_DIR MODES_DEFAULT_RO_DIR "/schema"
+#define MODES_MODE_DEFAULT_XSD_FILE "tizen_mode.xsd"
+#define MODES_MODE_DEFAULT_XSD_PATH MODES_XSD_DEFAULT_DIR "/" MODES_MODE_DEFAULT_XSD_FILE
+#define MODES_RULE_DEFAULT_XSD_FILE "tizen_action_rule.xsd"
+#define MODES_RULE_DEFAULT_XSD_PATH MODES_XSD_DEFAULT_DIR "/" MODES_RULE_DEFAULT_XSD_FILE
 
-#ifndef MODES_XSD_DEFAULT_DIR
-#define MODES_XSD_DEFAULT_DIR "/usr/share/modes/schema"
-#warning "MODES_XSD_DEFAULT_DIR is redefined"
+#ifndef MODES_CUSTOM_MODE_DEFAULT_DIR
+#define MODES_CUSTOM_MODE_DEFAULT_DIR "/var/lib/modes/custom-mode"
+#warning "MODES_CUSTOM_MODE_DEFAULT_DIR is redefined"
 #endif
 
 #ifndef MODES_UNDO_INFO_DEFAULT_DIR
 #define MODES_UNDO_INFO_DEFAULT_DIR "/var/lib/modes/undo-info"
 #warning "MODES_UNDO_INFO_DEFAULT_DIR is redefined"
 #endif
-
-#define MODES_MODE_DEFAULT_XSD_FILE "tizen_mode.xsd"
-#define MODES_ACTIONRULE_DEFAULT_XSD_FILE "tizen_action_rule.xsd"
-#define MODES_MODE_DEFAULT_XSD MODES_XSD_DEFAULT_DIR "/" MODES_MODE_DEFAULT_XSD_FILE
-#define MODES_ACTIONRULE_DEFAULT_XSD MODES_XSD_DEFAULT_DIR "/" MODES_ACTIONRULE_DEFAULT_XSD_FILE
-
-#define MODES_PLUGIN_LIB_PREFIX "libmodes-plugin"
-#define MODES_ACTIONRULE_FILE_SUFFIX "_rule.xml"
-#define MODES_MODE_FILE_SUFFIX "_mode.xml"
-
 #define MODES_UNDO_FILE_SUFFIX "_undo.xml"
index a055c3a7441c5508edff961eaedbd776a1be81c1..b6e5c27d0f01fc5f75f796941424dcb8e81ca418 100644 (file)
@@ -93,15 +93,12 @@ MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
 %cmake . -DMAJORVER=${MAJORVER} -DFULLVER=%{version} \
        -DCMAKE_VERBOSE_MAKEFILE=OFF \
        -DBIN_INSTALL_DIR:PATH=%{_bindir} \
-       -DTEST_INSTALL_DIR:PATH=%{modes_test_dir} \
        -DSYSTEMD_DIR:PATH=%{_unitdir} \
        -DSYSCONF_DIR:PATH=%{_sysconfdir} \
-       -DMODES_MODE_DEFAULT_DIR:PATH=%{modes_ro_dir}/mode \
-       -DMODES_UNDO_INFO_DEFAULT_DIR:PATH=%{modes_rw_dir}/undo-info \
-       -DMODES_CUSTOM_MODE_DEFAULT_DIR:PATH=%{modes_rw_dir}/custom-mode \
-       -DMODES_ACTIONRULE_DEFAULT_DIR:PATH=%{modes_ro_dir}/rule \
-       -DMODES_XSD_DEFAULT_DIR:PATH=%{modes_ro_dir}/schema \
+       -DMODES_DEFAULT_RO_DIR:PATH=%{modes_ro_dir} \
+       -DMODES_DEFAULT_RW_DIR:PATH=%{modes_rw_dir} \
        -DMODES_PLUGIN_DEFAULT_DIR:PATH=%{modes_plugin_dir} \
+       -DTEST_INSTALL_DIR:PATH=%{modes_test_dir} \
        -DDBUS_INTERFACE=%{_dbus_interface} \
        -DBUILD_GCOV=%{?gcov:1}%{!?gcov:0} \
        -DSTDOUT_LOG=%{?stdlog:1}%{!?stdlog:0}
index 3323b32b36200933b59a8afb6d03debc34c751ce..72a04f2ce968c68a2a00478f250a4b934245a6bd 100644 (file)
@@ -12,4 +12,4 @@ ADD_LIBRARY(${LIB_NAME} SHARED ${TEST_PLUGIN_SRCS})
 TARGET_LINK_LIBRARIES(${LIB_NAME} ${plugin_pkgs_LIBRARIES})
 SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES NO_SONAME 1 )
 INSTALL(TARGETS ${LIB_NAME} DESTINATION ${MODES_PLUGIN_DEFAULT_DIR})
-INSTALL(FILES tizen_test_rule.xml DESTINATION ${MODES_ACTIONRULE_DEFAULT_DIR})
+INSTALL(FILES tizen_test_rule.xml DESTINATION ${MODES_DEFAULT_RO_DIR}/rule)
index 97980348c3e7a830ede1492ad7e2a75d3aa39f79..658f09bb966724319fc22dd4ae540386614caeea 100644 (file)
@@ -26,16 +26,12 @@ char ArgumentParser::argp_doc[] =
        "Tizen: <http://www.tizen.org>";
 
 char ArgumentParser::args_doc[] =
-       "modeXMLDirPath1 [modeXMLDirPath2] [--pluginDir=../plugin]"
-       " [--modeXsdFilePath=..example/tizen_mode.xsd] [--ruleXsdFilePath=..example/tizen_rule.xsd]"
-       " [--ruleDir=../example] [--undoInfoDir=../example] [--[--help]";
+       "[extraModeDir1] [extraModeDir...] [--pluginDir=../plugin]"
+       " [--ruleDir=../example] [--[--help]";
 
 struct argp_option ArgumentParser::options[] = {
        {"pluginDir", 'p',      "pluginDirPath", OPTION_ARG_OPTIONAL, "Set directory of plugin"},
-       {"modeXsdFilePath", 'm', "modeXsdFilePath", OPTION_ARG_OPTIONAL, "Set mode xsd(schema) file path"},
-       {"ruleXsdFilePath", 'a', "actionRuleXsdFilePath", OPTION_ARG_OPTIONAL, "Set action rule xsd(schema) file path"},
-       {"ruleDir", 's', "actionRuleDirPath", OPTION_ARG_OPTIONAL, "Set directory of Action Rule file"},
-       {"undoInfoDir", 'u', "UndoInfoDirPath", OPTION_ARG_OPTIONAL, "Set directory of Undo Information file"},
+       {"ruleDir", 'r', "actionRuleDirPath", OPTION_ARG_OPTIONAL, "Set directory of Action Rule file"},
        { 0 }
 };
 
@@ -52,37 +48,14 @@ error_t ArgumentParser::parse_opt(int key, char *arg, struct argp_state *state)
                        state->next++;
                }
                break;
-       case 'm':
+       case 'r':
                nextArg = state->argv[state->next];
                if (nextArg && *nextArg != '-') {
-                       parser->modeXsdFile = nextArg;
-                       state->next++;
-               }
-               break;
-       case 'a':
-               nextArg = state->argv[state->next];
-               if (nextArg && *nextArg != '-') {
-                       parser->actionRuleXsdFile = nextArg;
-                       state->next++;
-               }
-               break;
-       case 's':
-               nextArg = state->argv[state->next];
-               if (nextArg && *nextArg != '-') {
-                       parser->actionRuleDir = nextArg;
-                       state->next++;
-               }
-               break;
-       case 'u':
-               nextArg = state->argv[state->next];
-               if (nextArg && *nextArg != '-') {
-                       parser->undoInfoDir = nextArg;
+                       parser->ruleDir = nextArg;
                        state->next++;
                }
                break;
        case ARGP_KEY_NO_ARGS:
-               if (parser->modeDirCount == 0)
-                       argp_usage(state);
                break;
        case ARGP_KEY_ARG:
                parser->modeDirCount = (state->argc - state->next) + 1;
@@ -99,8 +72,7 @@ error_t ArgumentParser::parse_opt(int key, char *arg, struct argp_state *state)
 struct argp ArgumentParser::argp_input = {options, parse_opt, args_doc, argp_doc};
 
 ArgumentParser::ArgumentParser()
-       :modeDirCount(0), modeXMLDirList(NULL), modeXsdFile(NULL),
-       actionRuleDir(NULL), actionRuleXsdFile(NULL), pluginDir(NULL), undoInfoDir(NULL)
+       :modeDirCount(0), modeXMLDirList(NULL), ruleDir(NULL), pluginDir(NULL)
 {
 }
 
@@ -115,31 +87,18 @@ ModesConfig ArgumentParser::parse(int argc, char **argv)
                        DBG("mode xml dir path list[%d] %s", i, this->modeXMLDirList[i]);
 
                config.modeXMLDirs = std::set<std::string>(modeXMLDirList, modeXMLDirList + modeDirCount);
-       } else {
-               config.modeXMLDirs.insert(MODES_MODE_DEFAULT_DIR);
        }
+       auto found = config.modeXMLDirs.find(MODES_MODE_DEFAULT_DIR);
+       if (config.modeXMLDirs.end() == found)
+               config.modeXMLDirs.insert(MODES_MODE_DEFAULT_DIR);
 
-       if (this->actionRuleDir) {
-               DBG("Action Rule dir path: %s", this->actionRuleDir);
-               config.actionRuleDir = this->actionRuleDir;
+       if (this->ruleDir) {
+               DBG("Action Rule dir path: %s", this->ruleDir);
+               config.actionRuleDir = this->ruleDir;
        } else {
                config.actionRuleDir = MODES_ACTIONRULE_DEFAULT_DIR;
        }
 
-       if (this->modeXsdFile) {
-               DBG("mode xsd file path: %s", this->modeXsdFile);
-               config.modeXsdFile = this->modeXsdFile;
-       } else {
-               config.modeXsdFile = MODES_MODE_DEFAULT_XSD;
-       }
-
-       if (this->actionRuleXsdFile) {
-               DBG("Action Rule xsd file path: %s", this->actionRuleXsdFile);
-               config.actionRuleXsdFile = this->actionRuleXsdFile;
-       } else {
-               config.actionRuleXsdFile = MODES_ACTIONRULE_DEFAULT_XSD;
-       }
-
        if (this->pluginDir) {
                DBG("plugin dir path : %s", this->pluginDir);
                config.pluginDir = this->pluginDir;
@@ -147,12 +106,5 @@ ModesConfig ArgumentParser::parse(int argc, char **argv)
                config.pluginDir = MODES_PLUGIN_DEFAULT_DIR;
        }
 
-       if (this->undoInfoDir) {
-               DBG("undoInfo dir path : %s", this->undoInfoDir);
-               config.undoInfoDir = this->undoInfoDir;
-       } else {
-               config.undoInfoDir = MODES_UNDO_INFO_DEFAULT_DIR;
-       }
-
        return config;
 }
index 304bf1cf005037da14eb12bb31586630a4cbc57c..940ce66b9550382c35231e4bd1cc26a4128d414b 100644 (file)
@@ -29,11 +29,8 @@ public:
 private:
        int modeDirCount;
        char **modeXMLDirList;
-       char *modeXsdFile;
-       char *actionRuleDir;
-       char *actionRuleXsdFile;
+       char *ruleDir;
        char *pluginDir;
-       char *undoInfoDir;
 
        static char argp_doc[];
        static char args_doc[];
index 4e92d55eaf90cdee4be30531f34c13cd0b26fc6e..00070bad58b692c42d6fadc6142943f8c5bb8707 100644 (file)
 
 MODES_NAMESPACE_USE;
 
-ModeCareTaker::ModeCareTaker()
-       : undoDir(MODES_UNDO_INFO_DEFAULT_DIR)
+ModeCareTaker::ModeCareTaker(const std::string &undoInfoDir)
+       : undoDir(undoInfoDir)
 {
 }
 
-void ModeCareTaker::setOptions(const std::string &undoInfoDir)
+std::string ModeCareTaker::getUndoInfoDir()
 {
-       undoDir = undoInfoDir;
+       return undoDir;
 }
 
 void ModeCareTaker::restoreMode(const Mode &mode)
index 50d975bacfe2ecbacd9324942632c9971e7fdef7..c0cf4b8e0f659afbdd5f0091fb48a45bc8630621 100644 (file)
@@ -25,10 +25,10 @@ MODES_NAMESPACE_BEGIN
 
 class ModeCareTaker : public ActionObserver {
 public:
-       ModeCareTaker();
+       ModeCareTaker(const std::string &undoInfoDir);
        ~ModeCareTaker() = default;
 
-       void setOptions(const std::string &undoInfoDir);
+       std::string getUndoInfoDir();
        void restoreMode(const Mode &mode);
        void pushMode(const Mode &mode);
        int popMode(const std::string &name, Mode &mode);
index 8abbc405f2a37fd8031c303736a0d5184a789b4e..308448afc513339ec6498e5ea26fd0270640ec56 100644 (file)
 using std::string;
 MODES_NAMESPACE_USE;
 
-ModeManager::ModeManager(RuleManager &rMgr)
-       : ruleMgr(rMgr)
+ModeManager::ModeManager(const std::set<string> &modeDirs, const string &xsdFile, RuleManager &rMgr)
+       : modeDirList(modeDirs), modeSyntaxFile(xsdFile),
+       ruleMgr(rMgr), careTaker(MODES_UNDO_INFO_DEFAULT_DIR)
 {
+       modeDirList.insert(MODES_CUSTOM_MODE_DEFAULT_DIR);
 }
 
-//it should be called before init()
-void ModeManager::setOptions(const std::set<string> &modeDirs, const string &xsdFile, const string &undoInfoDir)
-{
-       modeDirList = modeDirs;
-       modeSyntaxFile = xsdFile;
-       undoDir = undoInfoDir;
-       careTaker.setOptions(undoDir);
-}
-
-//it should be called after setOption()
 void ModeManager::init()
 {
        modeMap.clear();
@@ -54,7 +46,7 @@ void ModeManager::init()
                makeModeMap(*it);
                DBG("Mode Directory(%s) added", it->c_str());
        }
-       restoreUndoInfo(undoDir);
+       restoreUndoInfo(careTaker.getUndoInfoDir());
 }
 
 // TODO: apply better polymorphism
@@ -142,15 +134,22 @@ int ModeManager::registerMode(const Mode &mode)
        string filename;
        XMLGenerator xmlWriter;
 
+       auto element = std::make_pair(mode.getName(), std::make_tuple(filename, mode.getModeType(), false));
+       auto result = modeMap.insert(element);
+       if (false == result.second) {
+               ERR("Invalid mode(%s), already exists", mode.getName().c_str());
+               return MODES_ERROR_INVALID_PARAMETER;
+       }
+
        try {
-               filename = MODES_CUSTOM_MODE_DEFAULT_DIR"/tizen_" + mode.getName() + "_mode.xml";
+               filename = MODES_CUSTOM_MODE_DEFAULT_DIR "/tizen_" + mode.getName() + "_mode.xml";
                xmlWriter.makeModeXML(filename, mode);
        } catch (ModesEx &e) {
                ERR("XML generator Fail(%s)", e.what());
+               modeMap.erase(result.first);
                return MODES_ERROR_INVALID_PARAMETER;
        }
 
-       modeMap.insert(std::make_pair(mode.getName(), std::make_tuple(filename, mode.getModeType(), false)));
        DBG("[%zu] Register modeName : %s, modePath : %s, type : %d, hidden : false", modeMap.size(), mode.getName().c_str(), filename.c_str(), mode.getModeType());
 
        return MODES_ERROR_NONE;
index 50b5d9f445ed2cbcd23e69de675b167c3c94bc46..66ed4246298f8ff0c407f1c252f6eecb9fc5fb99 100644 (file)
 #include "ModeObserver.h"
 #include "ClientPrivilege.h"
 
-
-#ifndef MODES_MODE_DEFAULT_DIR
-#define MODES_MODE_DEFAULT_DIR "/usr/share/modes/mode"
-#warning "MODES_MODE_DEFAULT_DIR is redefined"
-#endif
-
 MODES_NAMESPACE_BEGIN
 
 class ModeManager {
 public:
-       ModeManager(RuleManager &rMgr);
+       ModeManager(const std::set<std::string> &modeDirs, const std::string &xsdFile, RuleManager &rMgr);
 
-       void setOptions(const std::set<std::string> &modeDirs, const std::string &xsdFile, const std::string &undoInfoDir);
        void init();
        void addModeDirectory(const std::string &dirPath);
        int applyMode(const std::string &modeName, ClientPrivilege &priv, bool isTest);
@@ -47,7 +40,6 @@ public:
        void attachObserver(ModeObserver *obs);
        void detachObserver(ModeObserver *obs);
 private:
-       bool handleEssentialAction(const Mode &mode);
        void notifyObservers(const std::string &modeName, ModeObserver::ModeState state);
        bool makeModeMap(const std::string &dirPath);
        bool restoreUndoInfo(const std::string &dirPath);
@@ -56,7 +48,6 @@ private:
 
        std::map<std::string, std::tuple<std::string, int, bool>> modeMap;
        std::set<std::string> modeDirList;
-       std::string undoDir;
        std::string modeSyntaxFile;
        RuleManager &ruleMgr;
        ModeCareTaker careTaker;
index cc76eea0b0d67beac592eb8bf0519023c86f7fe4..c69c43c843c65efa65936ec1e45689f6a3b948dc 100644 (file)
@@ -24,10 +24,7 @@ MODES_NAMESPACE_BEGIN
 struct ModesConfig {
        std::string pluginDir;
        std::set<std::string> modeXMLDirs;
-       std::string modeXsdFile;
-       std::string actionRuleXsdFile;
        std::string actionRuleDir;
-       std::string undoInfoDir;
 };
 
 MODES_NAMESPACE_END
index 55ff3f546395a6e8ca8a1d806eb3ccb97fe39bc5..8c3890331e548f8c984336ef1093237c4666c0a5 100644 (file)
@@ -27,9 +27,9 @@ MODES_NAMESPACE_USE;
 
 #define EMPTY_PLUGIN_PAIR std::make_pair(nullptr, nullptr)
 
-void PluginMapper::setPluginDir(const std::string &dir)
+PluginMapper::PluginMapper(const std::string &dirPath)
+       : pluginDir(dirPath)
 {
-       pluginDir = dir;
 }
 
 int PluginMapper::loadPlugins()
index c852dbdec4839dac7bd489ed6e40d582a1c0e193..5226a9a352082f580f8216d52426f3db8a058c65 100644 (file)
@@ -27,7 +27,8 @@ MODES_NAMESPACE_BEGIN
 
 class PluginMapper {
 public:
-       void setPluginDir(const std::string &dir_path);
+       PluginMapper(const std::string &dirPath);
+
        int loadPlugins();
        int unloadPlugins();
 
index 1a4faecdb53083a2717ac69b23be4cb20daec593..45ccfd084ce1d1c7fbdf86654f8eff42b58eaa8f 100644 (file)
@@ -36,6 +36,11 @@ const xmlChar* const RuleManager::RULE_TAGS[] = {
        (xmlChar*)"privilege",
 };
 
+RuleManager::RuleManager(const std::string & actionRuleDir, const std::string &actionRuleXsd, const std::string &pluginDir)
+       : ruleDir(actionRuleDir), ruleXsd(actionRuleXsd), piMapper(pluginDir)
+{
+}
+
 void RuleManager::start()
 {
        piMapper.loadPlugins();
@@ -141,13 +146,6 @@ Action* RuleManager::createAction(const string &ruleName)
        }
 }
 
-void RuleManager::setOptions(const string &actionRuleDir, const string &actionRuleXsd, const std::string &pluginDir)
-{
-       ruleDir = actionRuleDir;
-       ruleXsd = actionRuleXsd;
-       piMapper.setPluginDir(pluginDir);
-}
-
 void RuleManager::addBoolAlias(ActionRule *actionRule)
 {
        actionRule->addAlias("true", "1");
@@ -232,11 +230,6 @@ void RuleManager::parseRule(xmlNodePtr node)
 
 void RuleManager::parseActionRule(const string &xmlFile)
 {
-       if (ruleXsd.empty()) {
-               ERR("No ruleXsd");
-               ruleXsd = MODES_ACTIONRULE_DEFAULT_XSD;
-       }
-
        try {
                XMLParser parser(xmlFile);
                parser.validate(ruleXsd);
index 0eb5e5dfc5136ba57ddf66ca7bdf2bb3f45ca4f8..b95040d56bffcc3e99674ae6622f160b1611f8a2 100644 (file)
@@ -39,9 +39,10 @@ public:
                TagMax
        };
 
+       RuleManager(const std::string &actionRuleDir, const std::string &actionRuleXsd, const std::string &pluginDir);
+
        void start();
        void stop();
-       void setOptions(const std::string &actionRuleDir, const std::string &actionRuleXsd, const std::string &pluginDir);
        Action* createAction(const std::string &actionName);
 private:
        static const xmlChar* const ACTION_RULE_TAG;
index 93add799307d1e71ff5e94a28662659b14473a20..e2b7fe82d1b3f881e45114d5dde8cc80fe9efcfb 100644 (file)
@@ -24,8 +24,9 @@
 
 MODES_NAMESPACE_USE;
 
-Supervisor::Supervisor()
-       : modeMgr(ruleMgr)
+Supervisor::Supervisor(const ModesConfig &config)
+       : ruleMgr(config.actionRuleDir, MODES_RULE_DEFAULT_XSD_PATH, config.pluginDir),
+       modeMgr(config.modeXMLDirs, MODES_MODE_DEFAULT_XSD_PATH, ruleMgr)
 {
 }
 
@@ -55,12 +56,6 @@ void Supervisor::deInit()
        RequestHandler::setRuleManager(NULL);
 }
 
-void Supervisor::setOptions(const ModesConfig &config)
-{
-       modeMgr.setOptions(config.modeXMLDirs, config.modeXsdFile, config.undoInfoDir);
-       ruleMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, config.pluginDir);
-}
-
 void Supervisor::registerHandler()
 {
        clientConn.addRequestHandler("handle-can-apply", (GCallback)&RequestHandler::canApplyModeHandler);
index eff63421f63ebd60327aded087422e64e03cebbe..17dd4a9b69b743ce3fd0212f0d03a8f7cc37b995 100644 (file)
@@ -26,11 +26,10 @@ MODES_NAMESPACE_BEGIN
 
 class Supervisor {
 public:
-       Supervisor();
+       Supervisor(const ModesConfig &config);
 
        void init();
        void deInit();
-       void setOptions(const ModesConfig &config);
        void registerHandler();
 private:
        ClientConnection clientConn;
index bfaedeb83592a39adc607b5fad85f01e8a80bd39..bb562465d1897cdc94b4df6cb0578df952e3d841 100644 (file)
@@ -25,24 +25,24 @@ using namespace std;
 int main(int argc, char **argv)
 {
        GMainLoop *loop = g_main_loop_new(NULL, FALSE);
-       Supervisor supervisor;
 
        try {
                ArgumentParser argParser;
                ModesConfig config = argParser.parse(argc, argv);
-               supervisor.setOptions(config);
+
+               Supervisor supervisor(config);
                supervisor.init();
+               supervisor.registerHandler();
+
+               g_main_loop_run(loop);
+
+               supervisor.deInit();
        }
        catch (...) {
                ERR("Initialization Fail");
                return -1;
        }
 
-       supervisor.registerHandler();
-
-       g_main_loop_run(loop);
-
-       supervisor.deInit();
        g_main_loop_unref(loop);
 
        return 0;
index 7eb3f3255e2444111f91208be611499ab920e7d1..26c7c71d0a5edcb26a413376bbbaae9eaa9155af 100644 (file)
@@ -7,5 +7,5 @@ BusName=@DBUS_INTERFACE@
 User=system_fw
 Group=system_fw
 SmackProcessLabel=System
-ExecStart=@BIN_INSTALL_DIR@/@DAEMON@ @MODES_MODE_DEFAULT_DIR@ @MODES_CUSTOM_MODE_DEFAULT_DIR@
+ExecStart=@BIN_INSTALL_DIR@/@DAEMON@
 
index 47be435bac8017a4ad9f6e32906f597b4f093dc9..4a4c61a45ee1e93423a459db4d348641bba83de4 100644 (file)
@@ -15,7 +15,6 @@
  */
 #include <gtest/gtest.h>
 #include "common/definitions.h"
-#include "supervisor/ModesConfig.h"
 #include "supervisor/ModeXMLParser.h"
 #include "supervisor/ConflictManager.h"
 
@@ -42,17 +41,9 @@ protected:
 };
 
 ConflictTest::ConflictTest()
+       : ruleMgr(".", "./" MODES_RULE_DEFAULT_XSD_FILE, "../../.." MODES_PLUGIN_DEFAULT_DIR), careTaker(".")
 {
-       ModesConfig config;
-       config.actionRuleDir = ".";
-       config.actionRuleXsdFile = "./" MODES_ACTIONRULE_DEFAULT_XSD_FILE;
-       config.undoInfoDir = ".";
-       config.undoInfoDir = ".";
-       config.pluginDir = "../../.." MODES_PLUGIN_DEFAULT_DIR;
-
-       ruleMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, config.pluginDir);
        ruleMgr.start();
-       careTaker.setOptions(config.undoInfoDir);
 }
 
 
index 6404061e3d140cc2b71272a640bcda56cb6dc737..14e604e5090d60ef5efa4af32de2a41570961db5 100644 (file)
@@ -19,7 +19,6 @@
 #include "supervisor/Mode.h"
 #include "supervisor/ModesEx.h"
 #include "supervisor/RuleManager.h"
-#include "supervisor/ModesConfig.h"
 #include "supervisor/XMLGenerator.h"
 #include "supervisor/ModeXMLParser.h"
 
@@ -35,13 +34,8 @@ public:
 MODES_NAMESPACE_END
 
 GeneratorTest::GeneratorTest()
+       : ruleMgr(".", "./" MODES_RULE_DEFAULT_XSD_FILE, "../../.." MODES_PLUGIN_DEFAULT_DIR)
 {
-       ModesConfig config;
-       config.actionRuleDir = ".";
-       config.actionRuleXsdFile = "./" MODES_ACTIONRULE_DEFAULT_XSD_FILE;
-       config.pluginDir = "../../.." MODES_PLUGIN_DEFAULT_DIR;
-
-       ruleMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, config.pluginDir);
        ruleMgr.start();
 }
 
index b5dbd336a8689f09daff896844f70c3b736a7f88..f3c25c8bb8d8ad65b9ca5ae659661d861b6d2b17 100644 (file)
@@ -16,7 +16,6 @@
 #include <iostream>
 #include <exception>
 #include <gtest/gtest.h>
-#include "supervisor/ModesConfig.h"
 #include "supervisor/ModeManager.h"
 
 using namespace std;
@@ -27,7 +26,6 @@ class ModeManagerTest {
 public:
        ModeManagerTest();
        RuleManager rMgr;
-       PluginMapper pMgr;
        ModeManager mdMgr;
 
        set<string> getDirectories();
@@ -37,14 +35,10 @@ public:
 MODES_NAMESPACE_END
 
 ModeManagerTest::ModeManagerTest()
-       : mdMgr(rMgr)
+       : rMgr(string(), string(), string()),
+       mdMgr(set<string>(), "./" MODES_MODE_DEFAULT_XSD_FILE, rMgr)
 {
-       ModesConfig config;
-       config.modeXMLDirs.insert(".");
-       config.modeXsdFile = "./" MODES_MODE_DEFAULT_XSD_FILE;
-       config.undoInfoDir = "./";
-
-       mdMgr.setOptions(config.modeXMLDirs, config.modeXsdFile, config.undoInfoDir);
+       mdMgr.modeDirList.insert(".");
        mdMgr.init();
 }
 
index fed3fa382e8afce8a54d5665ef3009577b491f88..1fc99deb33f29371b0dba6468df705f4dfad7098 100644 (file)
@@ -18,7 +18,6 @@
 #include <gtest/gtest.h>
 #include "supervisor/Mode.h"
 #include "supervisor/ModesEx.h"
-#include "supervisor/ModesConfig.h"
 #include "supervisor/RuleManager.h"
 #include "supervisor/ModeXMLParser.h"
 
@@ -47,13 +46,8 @@ protected:
 MODES_NAMESPACE_END
 
 ParserTest::ParserTest()
+       : ruleMgr(".", "./" MODES_RULE_DEFAULT_XSD_FILE, "../../.." MODES_PLUGIN_DEFAULT_DIR)
 {
-       ModesConfig config;
-       config.actionRuleDir = ".";
-       config.actionRuleXsdFile = "./" MODES_ACTIONRULE_DEFAULT_XSD_FILE;
-       config.pluginDir = "../../.." MODES_PLUGIN_DEFAULT_DIR;
-
-       ruleMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, config.pluginDir);
        ruleMgr.start();
 }
 
index 2ebf59db9d96c4d3b824112dd307350febb72209..ea7217df76b7ac88f2c529065507580301f860ab 100644 (file)
@@ -23,6 +23,8 @@ using namespace std;
 MODES_NAMESPACE_BEGIN
 class TestPluginBroker {
 public:
+       TestPluginBroker();
+
        bool emptyPluginMap();
        string getpluginDir();
 
@@ -32,6 +34,11 @@ MODES_NAMESPACE_END
 
 MODES_NAMESPACE_USE;
 
+TestPluginBroker::TestPluginBroker()
+       : piMapper("../../.." MODES_PLUGIN_DEFAULT_DIR)
+{
+}
+
 bool TestPluginBroker::emptyPluginMap()
 {
        return piMapper.pluginMap.empty();
@@ -46,15 +53,7 @@ TEST(PluginMapper, readLibraryList)
 {
        TestPluginBroker broker;
 
-       broker.piMapper.setPluginDir(MODES_PLUGIN_DEFAULT_DIR);
-       try {
-               broker.piMapper.loadPlugins();
-       }
-       catch (ModesEx &e) {
-               broker.piMapper.setPluginDir("../../.." MODES_PLUGIN_DEFAULT_DIR);
-               EXPECT_NO_THROW(broker.piMapper.loadPlugins());
-       }
-
+       EXPECT_NO_THROW(broker.piMapper.loadPlugins());
        EXPECT_FALSE(broker.emptyPluginMap());
 
        list<string> pluginList = broker.piMapper.getPluginList();
@@ -66,16 +65,6 @@ TEST(PluginMapper, readLibraryList)
        }
 }
 
-TEST(PluginMapper, setPluginDir)
-{
-       TestPluginBroker broker;
-
-       string path = "../plugin";
-       broker.piMapper.setPluginDir(path);
-
-       EXPECT_EQ(path, broker.getpluginDir());
-}
-
 TEST(PluginMapper, unloadClassMap)
 {
        TestPluginBroker broker;
@@ -90,15 +79,7 @@ TEST(PluginMapper, getPluginTest)
        int ret;
        TestPluginBroker broker;
 
-       broker.piMapper.setPluginDir(MODES_PLUGIN_DEFAULT_DIR);
-       try {
-               broker.piMapper.loadPlugins();
-       }
-       catch (ModesEx &e) {
-               broker.piMapper.setPluginDir("../../.." MODES_PLUGIN_DEFAULT_DIR);
-               EXPECT_NO_THROW(broker.piMapper.loadPlugins());
-       }
-
+       EXPECT_NO_THROW(broker.piMapper.loadPlugins());
        EXPECT_FALSE(broker.emptyPluginMap());
 
        Plugin *plugin = broker.piMapper.getPlugin("test");
index 55005087273d4d70f45018f8c1d3cb218828aac1..dff8805c2b882b7f02f23277e0f881c1483fc693 100644 (file)
@@ -15,7 +15,6 @@
  */
 #include <gtest/gtest.h>
 #include "supervisor/ModesEx.h"
-#include "supervisor/ModesConfig.h"
 #include "supervisor/RuleManager.h"
 
 using namespace std;
@@ -40,13 +39,8 @@ MODES_NAMESPACE_END
 MODES_NAMESPACE_USE;
 
 RuleManagerTest::RuleManagerTest()
+       : rMgr(".", "./" MODES_RULE_DEFAULT_XSD_FILE, "../../.." MODES_PLUGIN_DEFAULT_DIR)
 {
-       ModesConfig config;
-       config.actionRuleDir = ".";
-       config.actionRuleXsdFile = "./" MODES_ACTIONRULE_DEFAULT_XSD_FILE;
-       config.pluginDir = "../../.." MODES_PLUGIN_DEFAULT_DIR;
-
-       rMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, config.pluginDir);
        rMgr.piMapper.loadPlugins();
 }