Added WSF_SELF_DOCUMENTED_AGENT_HANDLER and variants for uri, uri_template, starts_with, ...

to provide a way to documentate easily wsf agent handler.
This commit is contained in:
2013-09-24 15:23:15 +02:00
parent e7951338c9
commit 1d0eb14918
5 changed files with 269 additions and 2 deletions

View File

@@ -0,0 +1,78 @@
note
description: "[
Interface defining a self documented handler using a function
to build the `mapping_documentation'
]"
date: "$Date$"
revision: "$Revision$"
deferred class
WSF_SELF_DOCUMENTED_AGENT_HANDLER
inherit
WSF_SELF_DOCUMENTED_HANDLER
feature -- Access
is_hidden: BOOLEAN
-- Is hidden from self documentation?
descriptions: detachable ARRAYED_LIST [READABLE_STRING_GENERAL]
self_documentation_builder: detachable FUNCTION [ANY, TUPLE [WSF_ROUTER_MAPPING, detachable WSF_REQUEST_METHODS], WSF_ROUTER_MAPPING_DOCUMENTATION]
-- Function building the `mapping_documentation'.
feature -- Change
add_description (d: READABLE_STRING_GENERAL)
local
lst: like descriptions
do
lst := descriptions
if lst = Void then
create lst.make (1)
descriptions := lst
end
lst.force (d)
end
set_self_documentation_builder (fct: like self_documentation_builder)
-- Set `self_documentation_builder' to `fct'.
do
self_documentation_builder := fct
end
feature -- Documentation
mapping_documentation (m: WSF_ROUTER_MAPPING; a_request_methods: detachable WSF_REQUEST_METHODS): WSF_ROUTER_MAPPING_DOCUMENTATION
-- <Precursor>
do
if attached self_documentation_builder as fct then
Result := fct.item ([m, a_request_methods])
else
create Result.make (m)
end
if attached descriptions as l_descriptions then
across
l_descriptions as c
loop
Result.add_description (c.item)
end
end
if is_hidden then
Result.set_is_hidden (True)
end
end
note
copyright: "2011-2013, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
5949 Hollister Ave., Goleta, CA 93117 USA
Telephone 805-685-1006, Fax 805-685-6869
Website http://www.eiffel.com
Customer support http://support.eiffel.com
]"
end

View File

@@ -1,6 +1,10 @@
note note
description: "Summary description for {WSF_SELF_DOCUMENTED_HANDLER}." description: "[
author: "" Interface defining a self documented handler
inherit from this class and define mapping_documentation to generate
auto self documentation on demand.
]"
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"

View File

@@ -0,0 +1,61 @@
note
description: "Summary description for {WSF_SELF_DOCUMENTED_STARTS_WITH_AGENT_HANDLER}."
date: "$Date$"
revision: "$Revision$"
class
WSF_SELF_DOCUMENTED_STARTS_WITH_AGENT_HANDLER
inherit
WSF_STARTS_WITH_AGENT_HANDLER
rename
make as make_handler
end
WSF_SELF_DOCUMENTED_AGENT_HANDLER
create
make,
make_with_descriptions,
make_hidden
feature {NONE} -- Initialization
make (a_action: like action; a_self_doc: like self_documentation_builder)
-- <Precursor>
-- and using `a_self_doc' function to build the `mapping_documentation'.
do
set_self_documentation_builder (a_self_doc)
make_handler (a_action)
end
make_with_descriptions (a_action: like action; a_descriptions: ITERABLE [READABLE_STRING_GENERAL])
do
across
a_descriptions as c
loop
add_description (c.item)
end
make_handler (a_action)
end
make_hidden (a_action: like action)
-- <Precursor>
-- and using `a_self_doc' function to build the `mapping_documentation'
-- mark it as `hidden'.
do
is_hidden := True
make (a_action, Void)
end
note
copyright: "2011-2013, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
5949 Hollister Ave., Goleta, CA 93117 USA
Telephone 805-685-1006, Fax 805-685-6869
Website http://www.eiffel.com
Customer support http://support.eiffel.com
]"
end

View File

@@ -0,0 +1,62 @@
note
description: "Summary description for {WSF_SELF_DOCUMENTED_URI_AGENT_HANDLER}."
author: ""
date: "$Date$"
revision: "$Revision$"
class
WSF_SELF_DOCUMENTED_URI_AGENT_HANDLER
inherit
WSF_URI_AGENT_HANDLER
rename
make as make_handler
end
WSF_SELF_DOCUMENTED_AGENT_HANDLER
create
make,
make_with_descriptions,
make_hidden
feature {NONE} -- Initialization
make (a_action: like action; a_self_doc: like self_documentation_builder)
-- <Precursor>
-- and using `a_self_doc' function to build the `mapping_documentation'.
do
set_self_documentation_builder (a_self_doc)
make_handler (a_action)
end
make_with_descriptions (a_action: like action; a_descriptions: ITERABLE [READABLE_STRING_GENERAL])
-- Make Current with `a_action' and `a_descriptions'.
do
across
a_descriptions as c
loop
add_description (c.item)
end
make_handler (a_action)
end
make_hidden (a_action: like action)
-- Make Current with `a_action'
-- mark it as `hidden'.
do
is_hidden := True
make (a_action, Void)
end
note
copyright: "2011-2013, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
5949 Hollister Ave., Goleta, CA 93117 USA
Telephone 805-685-1006, Fax 805-685-6869
Website http://www.eiffel.com
Customer support http://support.eiffel.com
]"
end

View File

@@ -0,0 +1,62 @@
note
description: "Summary description for {WSF_SELF_DOCUMENTED_URI_TEMPLATE_AGENT_HANDLER}."
author: ""
date: "$Date$"
revision: "$Revision$"
class
WSF_SELF_DOCUMENTED_URI_TEMPLATE_AGENT_HANDLER
inherit
WSF_URI_TEMPLATE_AGENT_HANDLER
rename
make as make_handler
end
WSF_SELF_DOCUMENTED_AGENT_HANDLER
create
make,
make_with_descriptions,
make_hidden
feature {NONE} -- Initialization
make (a_action: like action; a_self_doc: like self_documentation_builder)
-- <Precursor>
-- and using `a_self_doc' function to build the `mapping_documentation'.
do
set_self_documentation_builder (a_self_doc)
make_handler (a_action)
end
make_with_descriptions (a_action: like action; a_descriptions: ITERABLE [READABLE_STRING_GENERAL])
do
across
a_descriptions as c
loop
add_description (c.item)
end
make_handler (a_action)
end
make_hidden (a_action: like action)
-- <Precursor>
-- and using `a_self_doc' function to build the `mapping_documentation'
-- mark it as `hidden'.
do
is_hidden := True
make (a_action, Void)
end
note
copyright: "2011-2013, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
5949 Hollister Ave., Goleta, CA 93117 USA
Telephone 805-685-1006, Fax 805-685-6869
Website http://www.eiffel.com
Customer support http://support.eiffel.com
]"
end