Strengthening contracts
svn: r6634
This commit is contained in:
parent
841a600e30
commit
50eeb657fd
|
@ -55,11 +55,9 @@ 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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -4,14 +4,11 @@
|
|||
(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?]
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user