Strengthening contracts

svn: r6634
This commit is contained in:
Jay McCarthy 2007-06-13 17:11:17 +00:00
parent 841a600e30
commit 50eeb657fd
4 changed files with 14 additions and 25 deletions

View File

@ -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

View File

@ -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

View File

@ -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?]

View File

@ -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