public function addManager(INabuProviderManager $nb_manager)
    {
        $vendor_key = $nb_manager->getVendorKey();
        if (nb_isValidKey($vendor_key)) {
            $module_key = $nb_manager->getModuleKey();
            if (!nb_isValidKey($module_key)) {
                throw new ENabuProviderException(
                    ENabuProviderException::ERROR_MODULE_KEY_NOT_VALID,
                    array($module_key)
                );
            }
        } else {
            throw new ENabuProviderException(
                ENabuProviderException::ERROR_VENDOR_KEY_NOT_VALID,
                array($vendor_key)
            );
        }

        $this->nb_manager_list->addItem($nb_manager);

        if (!$nb_manager->enableManager()) {
            throw new ENabuProviderException(
                ENabuProviderException::ERROR_PROVIDER_MANAGER_FAIL,
                array(get_class($nb_manager))
            );
        }

        $nb_application = CNabuEngine::getEngine()->getApplication();
        if ($nb_application instanceof INabuApplication) {
            $nb_manager->registerApplication($nb_application);
        }

        return $nb_manager;
    }