Provide a default CMS_MODULE.is_installed: BOOLEAN implementation based on storage of custom value.

Now use CMS_MODULE.is_initialized: BOOLEAN as precondition of many routines.
Instantiation of node storage is now done in NODE_MODULE and not any more in CMS_NODE_API.
CMS_NODE_API can be instantiated only by NODE_MODULE.
This commit is contained in:
2015-05-29 19:20:31 +02:00
parent b77c5cd93c
commit 70d53b3ef1
8 changed files with 105 additions and 70 deletions

View File

@@ -158,6 +158,8 @@ feature -- Query: module
t := a_type.name
if t.starts_with ("!") then
t.remove_head (1)
elseif t.starts_with ("?") then
t.remove_head (1)
end
across
setup.modules as ic
@@ -186,7 +188,12 @@ feature -- Query: module
-- Enabled module API associated with module typed `a_type'.
do
if attached module (a_type) as mod then
Result := mod.module_api
if mod.is_enabled then
if not mod.is_initialized then
mod.initialize (Current)
end
Result := mod.module_api
end
end
end

View File

@@ -32,42 +32,57 @@ feature {CMS_API} -- Module Initialization
-- Initialize Current module with `api'.
require
is_enabled: is_enabled
is_not_initialized: not is_initialized
do
-- Redefine to process specific module initialization.
is_initialized := True
ensure
is_initialized: is_initialized
end
feature -- Status
is_initialized: BOOLEAN
-- Is Current module initialized?
feature {CMS_API} -- Access: API
module_api: detachable CMS_MODULE_API
-- Eventual module api.
require
is_initialized: is_initialized
do
-- No API by default.
end
feature {CMS_API} -- Module management
is_installed (api: CMS_API): BOOLEAN
-- Is Current module installed?
do
Result := is_enabled
-- FIXME: implement proper installation status.
Result := attached api.storage.custom_value ("is_initialized", "module-" + name) as v and then v.is_case_insensitive_equal_general ("yes")
end
install (api: CMS_API)
require
is_not_installed: not is_installed (api)
do
-- Not Yet Supported
api.storage.set_custom_value ("is_initialized", "module-" + name, "yes")
end
uninstall (api: CMS_API)
require
is_installed: is_installed (api)
do
-- Not Yet Supported
api.storage.set_custom_value ("is_initialized", "module-" + name, "no")
end
feature -- Router
setup_router (a_router: WSF_ROUTER; a_api: CMS_API)
-- Setup url dispatching for Current module.
require
is_initialized: is_initialized
deferred
end

View File

@@ -1,6 +1,5 @@
note
description: "Summary description for {CMS_MODULE_API}."
author: ""
date: "$Date: 2015-02-13 14:54:27 +0100 (ven., 13 févr. 2015) $"
revision: "$Revision: 96620 $"