diff --git a/library/server/ewsgi/specification/connector/wgi_execution.e b/library/server/ewsgi/specification/connector/wgi_execution.e index ad18a6ac..07070ea0 100644 --- a/library/server/ewsgi/specification/connector/wgi_execution.e +++ b/library/server/ewsgi/specification/connector/wgi_execution.e @@ -18,7 +18,7 @@ feature {NONE} -- Initialization response := res end -feature {NONE} -- Access +feature {WGI_EXECUTION} -- Access request: WGI_REQUEST -- Request data. diff --git a/library/server/wsf/router/policy/execution/wsf_filtered_routed_skeleton_execution.e b/library/server/wsf/router/policy/execution/wsf_filtered_routed_skeleton_execution.e new file mode 100644 index 00000000..b860b3dc --- /dev/null +++ b/library/server/wsf/router/policy/execution/wsf_filtered_routed_skeleton_execution.e @@ -0,0 +1,68 @@ +note + description: "[ + Skeleton execution based on filtered routed execution. + ]" + author: "$Author$" + date: "$Date$" + revision: "$Revision$" + +deferred class + WSF_FILTERED_ROUTED_SKELETON_EXECUTION + +inherit + WSF_ROUTED_SKELETON_EXECUTION + undefine + execute + redefine + initialize + end + + WSF_FILTERED_EXECUTION + redefine + initialize + end + + WSF_FILTER + rename + execute as filter_execute + end + +feature {NONE} -- Initialize + + initialize + local + f: like filter + do + Precursor {WSF_ROUTED_SKELETON_EXECUTION} + Precursor {WSF_FILTERED_EXECUTION} + -- Current is a WSF_FILTER as well in order to call the router + -- let's add Current at the end of the filter chain. + from + f := filter + until + not attached f.next as l_next + loop + f := l_next + end + f.set_next (Current) + end + +feature -- Execute Filter + + filter_execute (req: WSF_REQUEST; res: WSF_RESPONSE) + -- Execute the filter. + do + execute_skeleton (req, res) + end + +note + copyright: "2011-2015, 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 diff --git a/library/server/wsf/router/policy/execution/wsf_routed_skeleton_execution.e b/library/server/wsf/router/policy/execution/wsf_routed_skeleton_execution.e index 859adaff..e59a4312 100644 --- a/library/server/wsf/router/policy/execution/wsf_routed_skeleton_execution.e +++ b/library/server/wsf/router/policy/execution/wsf_routed_skeleton_execution.e @@ -19,17 +19,19 @@ inherit feature -- Execution execute + -- + do + execute_skeleton (request, response) + end + + execute_skeleton (req: WSF_REQUEST; res: WSF_RESPONSE) -- If the service is available, and request URI is not too long, dispatch the request -- and if handler is not found, execute the default procedure `execute_default'. local l_sess: WSF_ROUTER_SESSION - req: WSF_REQUEST; res: WSF_RESPONSE do - req := request - res := response - - --| When we reach here, the request has already passed check for 400 (Bad request), - --| which is implemented in WSF_REQUEST.make_from_wgi (when it calls `analyze'). + --| When we reach here, the request has already passed check for 400 (Bad request), + --| which is implemented in WSF_REQUEST.make_from_wgi (when it calls `analyze'). if unavailable then handle_unavailable (res) elseif requires_proxy (req) then