Changeset 3337

Show
Ignore:
Timestamp:
01/30/10 16:21:14 (7 weeks ago)
Author:
mgray
Message:

Implemented logic in installApplications() to load database configuration into DatabaseConnections? objects.

Location:
Enterprise/branches/0075_TR_SCRIPTING/AppServer/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • Enterprise/branches/0075_TR_SCRIPTING/AppServer/src/ApplicationServer.cpp

    r3336 r3337  
    481481        :       public Zen::Plugins::I_ConfigurationElement::I_ConfigurationElementVisitor 
    482482        { 
     483        class DatabaseVisitor 
     484        :   public Zen::Plugins::I_ConfigurationElement::I_ConfigurationElementVisitor 
     485        { 
     486            typedef std::map<std::string, std::string>      config_type; 
     487 
     488            class DBConfigVisitor 
     489            :   public Zen::Plugins::I_ConfigurationElement::I_ConfigurationElementVisitor 
     490            { 
     491            public: 
     492                virtual void begin() {} 
     493 
     494                virtual void visit(const Zen::Plugins::I_ConfigurationElement& _element) 
     495                { 
     496                    m_config[_element.getAttribute("name")] = _element.getAttribute("value"); 
     497                } 
     498 
     499                virtual void end() {} 
     500 
     501                DBConfigVisitor(config_type& _config) 
     502                :   m_config(_config) 
     503                { 
     504                } 
     505 
     506            private: 
     507                config_type&    m_config; 
     508 
     509            };  // class DBConfigVisitor 
     510 
     511        public: 
     512            virtual void begin() {} 
     513 
     514            virtual void visit(const Zen::Plugins::I_ConfigurationElement& _element) 
     515            { 
     516                config_type config; 
     517 
     518                DBConfigVisitor visitor(config); 
     519                _element.getChildren("config", visitor); 
     520 
     521                m_pAppServer->createDatabaseEntry(_element.getAttribute("name"), config); 
     522            } 
     523 
     524            virtual void end() {} 
     525 
     526            DatabaseVisitor(ApplicationServer* _pAppServer) 
     527            :   m_pAppServer(_pAppServer) 
     528            { 
     529            } 
     530 
     531        private: 
     532            ApplicationServer*        m_pAppServer; 
     533 
     534        };  // class DatabaseVisitor 
    483535        public: 
    484536                virtual void begin() {} 
     
    489541                                Zen::Enterprise::AppServer::I_ApplicationServerManager::getSingleton(); 
    490542 
     543            DatabaseVisitor visitor(m_pAppServer); 
     544            _element.getChildren("database", visitor); 
     545 
    491546                        Zen::Enterprise::AppServer::I_ApplicationServerManager::pApplicationService_type 
    492547                                pApplicationService = manager.createApplicationService(*m_pAppServer, _element.getAttribute("type")); 
     
    501556                virtual void end() {} 
    502557 
    503         ConfigVisitor(I_ApplicationServer* _pAppServer) 
     558        ConfigVisitor(ApplicationServer* _pAppServer) 
    504559        :   m_pAppServer(_pAppServer) 
    505560        { 
     
    507562 
    508563    private: 
    509         I_ApplicationServer*        m_pAppServer; 
     564        ApplicationServer*        m_pAppServer; 
    510565    }; 
    511566 
     
    824879    if( iter != m_databaseConnectionsMap.end() ) 
    825880    { 
    826         return iter->second.getConnection(_threadId); 
     881        return iter->second->getConnection(_threadId); 
    827882    } 
    828883    else 
     
    923978 
    924979//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 
     980void 
     981ApplicationServer::createDatabaseEntry(const std::string& _database, config_type& _config) 
     982{ 
     983    DatabaseConnectionsMap_type::iterator iter = m_databaseConnectionsMap.find(_database); 
     984    if( iter == m_databaseConnectionsMap.end() ) 
     985    { 
     986        typedef Zen::Memory::managed_ptr<Zen::Database::I_DatabaseService>  pDatabaseService_type; 
     987        pDatabaseService_type pDatabaseService =  
     988            Zen::Database::I_DatabaseManager::getSingleton().createDatabaseService( 
     989                _database,  
     990                _config 
     991            ); 
     992 
     993        m_databaseConnectionsMap[_database] = new DatabaseConnections(pDatabaseService, _config); 
     994    } 
     995    else 
     996    { 
     997        // TODO Error? 
     998    } 
     999} 
     1000 
     1001//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 
    9251002}   // namespace AppServer 
    9261003}   // namespace Enterprise 
  • Enterprise/branches/0075_TR_SCRIPTING/AppServer/src/ApplicationServer.hpp

    r3336 r3337  
    114114 
    115115    Threading::ThreadPool& getSharedThreadPool() { return m_sharedThreadPool; } 
     116 
     117    typedef std::map<std::string,std::string> config_type; 
     118    void createDatabaseEntry(const std::string& _database, config_type& _config); 
    116119    /// @} 
    117120 
     
    201204    pMessageRegistry_type       m_pMessageRegistry_type; 
    202205 
    203     typedef std::map<std::string, DatabaseConnections>  DatabaseConnectionsMap_type; 
     206    typedef std::map<std::string, DatabaseConnections*>  DatabaseConnectionsMap_type; 
    204207    DatabaseConnectionsMap_type m_databaseConnectionsMap; 
    205208    /// @}