diff --git a/collects/web-server/docs/reference/servlet.scrbl b/collects/web-server/docs/reference/servlet.scrbl index eca36e8c05..decd2efa6e 100644 --- a/collects/web-server/docs/reference/servlet.scrbl +++ b/collects/web-server/docs/reference/servlet.scrbl @@ -54,12 +54,10 @@ provides: @file{servlet/servlet-structs.ss} provides a number of contracts for use in servlets. - -@defthing[servlet-response? contract?]{Equivalent to @scheme[any/c].} @defthing[k-url? contract?]{Equivalent to @scheme[string?].} -@defthing[response-generator? contract?]{Equivalent to @scheme[(k-url? . -> . servlet-response?)].} +@defthing[response-generator? contract?]{Equivalent to @scheme[(k-url? . -> . response?)].} @defthing[url-transform? contract?]{Equivalent to @scheme[(k-url? . -> . k-url?)].} @@ -217,8 +215,7 @@ transmission that the server will not catch.} @file{servlet/web.ss} provides the primary functions of interest for the servlet developer. -@; XXX Contract harder -@defproc[(send/back [response any/c]) +@defproc[(send/back [response response?]) void?]{ Sends @scheme[response] to the client. } @@ -261,13 +258,12 @@ servlet developer. Calls @scheme[clear-continuation-table!], then @scheme[send/suspend]. } -@; XXX Contract harder -@defproc[(send/finish [response any/c]) +@defproc[(send/finish [response response?]) void?]{ Calls @scheme[clear-continuation-table!], then @scheme[send/back]. } -@defproc[(send/suspend/dispatch [make-response (embed/url? . -> . servlet-response?)]) +@defproc[(send/suspend/dispatch [make-response (embed/url? . -> . response?)]) any/c]{ Calls @scheme[make-response] with a function that, when called with a procedure from @scheme[request?] to @scheme[any/c] will generate a URL, that when invoked will call diff --git a/collects/web-server/private/servlet.ss b/collects/web-server/private/servlet.ss index 7b09b10cc3..f4320e735e 100644 --- a/collects/web-server/private/servlet.ss +++ b/collects/web-server/private/servlet.ss @@ -1,9 +1,8 @@ (module servlet mzscheme (require (lib "contract.ss")) (require "../managers/manager.ss" - "../servlet/servlet-structs.ss" - "connection-manager.ss" - "../private/request-structs.ss") + "../private/request-structs.ss" + "../private/response-structs.ss") (define servlet-prompt (make-continuation-prompt-tagĀ 'servlet)) (provide servlet-prompt) @@ -28,7 +27,7 @@ ([custodian custodian?] [namespace namespace?] [manager manager?] - [handler (request? . -> . servlet-response?)])] + [handler (request? . -> . response?)])] [struct servlet-instance-data ([mutex semaphore?])] [struct execution-context diff --git a/collects/web-server/servlet/servlet-structs.ss b/collects/web-server/servlet/servlet-structs.ss index 73c67733a2..8050e321b0 100644 --- a/collects/web-server/servlet/servlet-structs.ss +++ b/collects/web-server/servlet/servlet-structs.ss @@ -3,15 +3,12 @@ (lib "xml.ss" "xml")) (require "../private/request-structs.ss" "../private/response-structs.ss") - - (define servlet-response? - any/c) - + (define k-url? string?) (define response-generator? - (k-url? . -> . servlet-response?)) + (k-url? . -> . response?)) (define url-transform? (k-url? . -> . k-url?)) @@ -24,7 +21,6 @@ (((request? . -> . any/c)) (expiration-handler?) . opt-> . string?)) (provide/contract - [servlet-response? contract?] [response-generator? contract?] [k-url? (any/c . -> . boolean?)] [url-transform? contract?] diff --git a/collects/web-server/servlet/web.ss b/collects/web-server/servlet/web.ss index 083eec0b76..36378fb39c 100644 --- a/collects/web-server/servlet/web.ss +++ b/collects/web-server/servlet/web.ss @@ -3,14 +3,14 @@ (lib "list.ss") (lib "plt-match.ss") (lib "contract.ss") - (lib "etc.ss") - (lib "xml.ss" "xml")) + (lib "etc.ss")) (require "../managers/manager.ss" "../private/util.ss" "../private/servlet.ss" "../servlet/helpers.ss" "../servlet/web-cells.ss" "../servlet/servlet-structs.ss" + "../private/response-structs.ss" "../private/request-structs.ss") ;; ************************************************************ @@ -67,8 +67,6 @@ (rest old-path)))) in-url))) - ;; XXX Weak contracts: the input is checked in output-response, and a message is - ;; sent directly to the client (Web browser) instead of the terminal/log. (provide/contract [current-url-transform parameter?] [current-servlet-continuation-expiration-handler parameter?] @@ -76,11 +74,11 @@ [redirect/get/forget (-> request?)] [adjust-timeout! (number? . -> . void?)] [clear-continuation-table! (-> void?)] - [send/back (any/c . -> . void?)] - [send/finish (any/c . -> . void?)] + [send/back (response? . -> . void?)] + [send/finish (response? . -> . void?)] [send/suspend ((response-generator?) (expiration-handler?) . opt-> . request?)] [send/forward ((response-generator?) (expiration-handler?) . opt-> . request?)] - [send/suspend/dispatch ((embed/url? . -> . servlet-response?) . -> . any/c)]) + [send/suspend/dispatch ((embed/url? . -> . response?) . -> . any/c)]) ;; ************************************************************ ;; EXPORTS