Added WGI_MULTIPLE_STRING_VALUE

Renamed value as WGI_STRING_VALUE.string
Renamed a few classes .._CONTEXT_I  as .._CONTEXT
updated example.
This commit is contained in:
Jocelyn Fiat
2011-09-15 17:49:47 +02:00
parent 774cd004db
commit 86825854ca
20 changed files with 158 additions and 36 deletions

View File

@@ -10,7 +10,7 @@ class
inherit
ANY
DEFAULT_URI_TEMPLATE_ROUTED_APPLICATION
URI_TEMPLATE_ROUTED_APPLICATION
ROUTED_APPLICATION_HELPER
@@ -35,7 +35,7 @@ feature {NONE} -- Initialization
setup_router
local
ra: REQUEST_AGENT_HANDLER [REQUEST_URI_TEMPLATE_HANDLER_CONTEXT]
rag: DEFAULT_REQUEST_URI_TEMPLATE_ROUTING_HANDLER
rag: REQUEST_URI_TEMPLATE_ROUTING_HANDLER
do
router.map_agent ("/home", agent execute_home)
@@ -125,8 +125,8 @@ feature -- Execution
res.write_string ("<li><a href=%""+ req.script_url ("/hello/Joce") + "%">/hello/Joce</a></li>%N")
res.write_string ("</ul>%N")
if attached req.parameter ("REQUEST_COUNT") as rqc then
res.write_string ("request #"+ rqc + "%N")
if attached req.item ("REQUEST_COUNT") as rqc then
res.write_string ("request #"+ rqc.as_string + "%N")
end
res.write_string ("</body></html>%N")
end
@@ -182,7 +182,7 @@ feature -- Execution
handle_anonymous_hello (ctx: REQUEST_URI_TEMPLATE_HANDLER_CONTEXT; req: WGI_REQUEST; res: WGI_RESPONSE_BUFFER)
do
execute_hello (req, res, ctx.parameter ("name"), ctx)
execute_hello (req, res, ctx.string_parameter ("name"), ctx)
end
handle_method_any (ctx: REQUEST_URI_TEMPLATE_HANDLER_CONTEXT; req: WGI_REQUEST; res: WGI_RESPONSE_BUFFER)

View File

@@ -0,0 +1,122 @@
note
description: "Summary description for {WGI_MULTIPLE_STRING_VALUE}."
author: ""
date: "$Date$"
revision: "$Revision$"
class
WGI_MULTIPLE_STRING_VALUE
inherit
WGI_VALUE
ITERABLE [WGI_STRING_VALUE]
create
make_with_value,
make_with_string
feature {NONE} -- Initialization
make_with_value (a_value: WGI_VALUE)
do
name := a_value.name
create {LINKED_LIST [WGI_STRING_VALUE]} string_values.make
add_value (a_value)
end
make_with_string (a_name: like name; a_string: READABLE_STRING_32)
do
make_with_value (create {WGI_STRING_VALUE}.make (a_name, a_string))
end
feature -- Access
name: READABLE_STRING_GENERAL
string_values: LIST [WGI_STRING_VALUE]
first_string_value: WGI_STRING_VALUE
do
Result := string_values.first
end
feature -- Traversing
new_cursor: ITERATION_CURSOR [WGI_STRING_VALUE]
do
Result := string_values.new_cursor
end
feature -- Helper
same_string (a_other: READABLE_STRING_GENERAL): BOOLEAN
-- Does `a_other' represent the same string as `Current'?
do
if string_values.count = 1 then
Result := first_string_value.same_string (a_other)
end
end
is_case_insensitive_equal (a_other: READABLE_STRING_8): BOOLEAN
-- Does `a_other' represent the same case insensitive string as `Current'?
do
if string_values.count = 1 then
Result := first_string_value.is_case_insensitive_equal (a_other)
end
end
as_string: STRING_32
do
if string_values.count = 1 then
create Result.make_from_string (first_string_value)
else
create Result.make_from_string ("[")
across
string_values as c
loop
if Result.count = 1 then
Result.append_character (',')
end
Result.append_string (c.item)
end
Result.append_character (']')
end
end
feature -- Element change
add_value (a_value: WGI_VALUE)
require
same_name: a_value.name.same_string (name)
do
if attached {WGI_STRING_VALUE} a_value as sval then
add_string_value (sval)
elseif attached {WGI_MULTIPLE_STRING_VALUE} a_value as slst then
across
slst as cur
loop
add_string_value (cur.item)
end
end
end
add_string_value (s: WGI_STRING_VALUE)
do
string_values.extend (s)
end
invariant
string_values_not_empty: string_values.count >= 1
;note
copyright: "2011-2011, 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

@@ -18,32 +18,32 @@ convert
feature {NONE} -- Initialization
make (a_name: like name; a_value: like value)
make (a_name: like name; a_string: like string)
do
name := a_name
value := a_value
string := a_string
end
feature -- Access
name: READABLE_STRING_GENERAL
value: READABLE_STRING_32
string: READABLE_STRING_32
feature -- Helper
same_string (a_other: READABLE_STRING_GENERAL): BOOLEAN
-- Does `a_other' represent the same string as `Current'?
do
Result := value.same_string_general (a_other)
Result := string.same_string_general (a_other)
end
is_case_insensitive_equal (a_other: READABLE_STRING_8): BOOLEAN
-- Does `a_other' represent the same case insensitive string as `Current'?
local
v: like value
v: like string
do
v := value
v := string
if v = a_other then
Result := True
elseif v.is_valid_as_string_8 then
@@ -55,7 +55,7 @@ feature -- Conversion
as_string: STRING_32
do
create Result.make_from_string (value)
create Result.make_from_string (string)
end
;note

View File

@@ -161,9 +161,9 @@ feature -- Access extra information
do
if
attached {WGI_STRING_VALUE} meta_variable ({WGI_META_NAMES}.request_time) as t and then
t.value.is_integer_64
t.string.is_integer_64
then
Result := date_time_utilities.unix_time_stamp_to_date_time (t.value.to_integer_64)
Result := date_time_utilities.unix_time_stamp_to_date_time (t.string.to_integer_64)
end
end
@@ -567,7 +567,7 @@ feature {NONE} -- Cookies
l_cookies := internal_cookies_table
if l_cookies = Void then
if attached {WGI_STRING_VALUE} meta_variable ({WGI_META_NAMES}.http_cookie) as val then
s := val.value
s := val.string
create l_cookies.make (5)
from
n := s.count
@@ -698,7 +698,7 @@ feature -- Access: global variable
string_item (a_name: READABLE_STRING_GENERAL): detachable READABLE_STRING_32
do
if attached {WGI_STRING_VALUE} item (a_name) as val then
Result := val.value
Result := val.string
else
check is_string_value: False end
end

View File

@@ -51,7 +51,7 @@ feature -- Execution
if
attached {WGI_STRING_VALUE} ctx.path_parameter ("resource") as l_resource_value and then
attached l_resource_value.value as l_resource
attached l_resource_value.string as l_resource
then
from
hdl_cursor := router.new_cursor

View File

@@ -8,7 +8,7 @@ class
REST_REQUEST_URI_HANDLER_CONTEXT
inherit
REQUEST_URI_HANDLER_CONTEXT_I
REQUEST_URI_HANDLER_CONTEXT
REST_REQUEST_HANDLER_CONTEXT

View File

@@ -8,7 +8,7 @@ class
REST_REQUEST_URI_TEMPLATE_HANDLER_CONTEXT
inherit
REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I
REQUEST_URI_TEMPLATE_HANDLER_CONTEXT
REST_REQUEST_HANDLER_CONTEXT

View File

@@ -133,7 +133,7 @@ feature -- String query
string_from (a_value: detachable WGI_VALUE): detachable READABLE_STRING_32
do
if attached {WGI_STRING_VALUE} a_value as val then
Result := val.value
Result := val.string
end
end

View File

@@ -8,7 +8,7 @@ class
REQUEST_URI_ROUTER
inherit
REQUEST_URI_ROUTER_I [REQUEST_HANDLER [REQUEST_URI_HANDLER_CONTEXT_I], REQUEST_URI_HANDLER_CONTEXT_I]
REQUEST_URI_ROUTER_I [REQUEST_HANDLER [REQUEST_URI_HANDLER_CONTEXT], REQUEST_URI_HANDLER_CONTEXT]
redefine
map_agent_with_request_methods
end
@@ -17,10 +17,10 @@ create
feature -- Mapping
map_agent_with_request_methods (a_id: READABLE_STRING_8; a_action: PROCEDURE [ANY, TUPLE [ctx: REQUEST_URI_HANDLER_CONTEXT_I; req: WGI_REQUEST; res: WGI_RESPONSE_BUFFER]];
map_agent_with_request_methods (a_id: READABLE_STRING_8; a_action: PROCEDURE [ANY, TUPLE [ctx: REQUEST_URI_HANDLER_CONTEXT; req: WGI_REQUEST; res: WGI_RESPONSE_BUFFER]];
rqst_methods: detachable ARRAY [READABLE_STRING_8])
local
h: REQUEST_AGENT_HANDLER [REQUEST_URI_HANDLER_CONTEXT_I]
h: REQUEST_AGENT_HANDLER [REQUEST_URI_HANDLER_CONTEXT]
do
create h.make (a_action)
map_with_request_methods (a_id, h, rqst_methods)

View File

@@ -8,7 +8,7 @@ class
REQUEST_URI_ROUTING_HANDLER
inherit
REQUEST_URI_ROUTING_HANDLER_I [REQUEST_HANDLER [REQUEST_URI_HANDLER_CONTEXT_I], REQUEST_URI_HANDLER_CONTEXT_I]
REQUEST_URI_ROUTING_HANDLER_I [REQUEST_HANDLER [REQUEST_URI_HANDLER_CONTEXT], REQUEST_URI_HANDLER_CONTEXT]
redefine
router
end

View File

@@ -8,7 +8,7 @@ deferred class
URI_ROUTED_APPLICATION
inherit
ROUTED_APPLICATION_I [REQUEST_HANDLER [REQUEST_URI_HANDLER_CONTEXT_I], REQUEST_URI_HANDLER_CONTEXT_I]
ROUTED_APPLICATION_I [REQUEST_HANDLER [REQUEST_URI_HANDLER_CONTEXT], REQUEST_URI_HANDLER_CONTEXT]
redefine
router
end

View File

@@ -5,7 +5,7 @@ note
revision: "$Revision$"
class
REQUEST_URI_HANDLER_CONTEXT_I
REQUEST_URI_HANDLER_CONTEXT
inherit
REQUEST_HANDLER_CONTEXT

View File

@@ -5,7 +5,7 @@ note
revision: "$Revision$"
class
REQUEST_URI_ROUTER_I [H -> REQUEST_HANDLER [C], C -> REQUEST_URI_HANDLER_CONTEXT_I create make end]
REQUEST_URI_ROUTER_I [H -> REQUEST_HANDLER [C], C -> REQUEST_URI_HANDLER_CONTEXT create make end]
inherit
REQUEST_ROUTER [H, C]

View File

@@ -6,7 +6,7 @@ note
class
REQUEST_URI_ROUTING_HANDLER_I [H -> REQUEST_HANDLER [C],
C -> REQUEST_URI_HANDLER_CONTEXT_I create make end]
C -> REQUEST_URI_HANDLER_CONTEXT create make end]
inherit
REQUEST_ROUTING_HANDLER [H, C]

View File

@@ -8,7 +8,7 @@ class
REQUEST_URI_TEMPLATE_ROUTER
inherit
REQUEST_URI_TEMPLATE_ROUTER_I [REQUEST_HANDLER [REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I], REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I]
REQUEST_URI_TEMPLATE_ROUTER_I [REQUEST_HANDLER [REQUEST_URI_TEMPLATE_HANDLER_CONTEXT], REQUEST_URI_TEMPLATE_HANDLER_CONTEXT]
redefine
map_agent_with_request_methods
end
@@ -18,10 +18,10 @@ create
feature -- Mapping
map_agent_with_request_methods (a_id: READABLE_STRING_8; a_action: PROCEDURE [ANY, TUPLE [ctx: REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I; req: WGI_REQUEST; res: WGI_RESPONSE_BUFFER]];
map_agent_with_request_methods (a_id: READABLE_STRING_8; a_action: PROCEDURE [ANY, TUPLE [ctx: REQUEST_URI_TEMPLATE_HANDLER_CONTEXT; req: WGI_REQUEST; res: WGI_RESPONSE_BUFFER]];
rqst_methods: detachable ARRAY [READABLE_STRING_8])
local
h: REQUEST_AGENT_HANDLER [REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I]
h: REQUEST_AGENT_HANDLER [REQUEST_URI_TEMPLATE_HANDLER_CONTEXT]
do
create h.make (a_action)
map_with_request_methods (a_id, h, rqst_methods)

View File

@@ -8,7 +8,7 @@ class
REQUEST_URI_TEMPLATE_ROUTING_HANDLER
inherit
REQUEST_URI_TEMPLATE_ROUTING_HANDLER_I [REQUEST_HANDLER [REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I], REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I]
REQUEST_URI_TEMPLATE_ROUTING_HANDLER_I [REQUEST_HANDLER [REQUEST_URI_TEMPLATE_HANDLER_CONTEXT], REQUEST_URI_TEMPLATE_HANDLER_CONTEXT]
redefine
router
end

View File

@@ -8,7 +8,7 @@ deferred class
URI_TEMPLATE_ROUTED_APPLICATION
inherit
ROUTED_APPLICATION_I [REQUEST_HANDLER [REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I], REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I]
ROUTED_APPLICATION_I [REQUEST_HANDLER [REQUEST_URI_TEMPLATE_HANDLER_CONTEXT], REQUEST_URI_TEMPLATE_HANDLER_CONTEXT]
redefine
router
end

View File

@@ -5,7 +5,7 @@ note
revision: "$Revision$"
class
REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I
REQUEST_URI_TEMPLATE_HANDLER_CONTEXT
inherit
REQUEST_HANDLER_CONTEXT

View File

@@ -5,7 +5,7 @@ note
revision: "$Revision$"
class
REQUEST_URI_TEMPLATE_ROUTER_I [H -> REQUEST_HANDLER [C], C -> REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I create make end]
REQUEST_URI_TEMPLATE_ROUTER_I [H -> REQUEST_HANDLER [C], C -> REQUEST_URI_TEMPLATE_HANDLER_CONTEXT create make end]
inherit
REQUEST_ROUTER [H, C]

View File

@@ -6,7 +6,7 @@ note
class
REQUEST_URI_TEMPLATE_ROUTING_HANDLER_I [H -> REQUEST_HANDLER [C],
C -> REQUEST_URI_TEMPLATE_HANDLER_CONTEXT_I create make end]
C -> REQUEST_URI_TEMPLATE_HANDLER_CONTEXT create make end]
inherit
REQUEST_ROUTING_HANDLER [H, C]