Strengthening contracts
svn: r6634
This commit is contained in:
parent
841a600e30
commit
50eeb657fd
|
@ -54,12 +54,10 @@ provides:
|
||||||
|
|
||||||
@file{servlet/servlet-structs.ss} provides a number of contracts
|
@file{servlet/servlet-structs.ss} provides a number of contracts
|
||||||
for use in servlets.
|
for use in servlets.
|
||||||
|
|
||||||
@defthing[servlet-response? contract?]{Equivalent to @scheme[any/c].}
|
|
||||||
|
|
||||||
@defthing[k-url? contract?]{Equivalent to @scheme[string?].}
|
@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?)].}
|
@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
|
@file{servlet/web.ss} provides the primary functions of interest for the
|
||||||
servlet developer.
|
servlet developer.
|
||||||
|
|
||||||
@; XXX Contract harder
|
@defproc[(send/back [response response?])
|
||||||
@defproc[(send/back [response any/c])
|
|
||||||
void?]{
|
void?]{
|
||||||
Sends @scheme[response] to the client.
|
Sends @scheme[response] to the client.
|
||||||
}
|
}
|
||||||
|
@ -261,13 +258,12 @@ servlet developer.
|
||||||
Calls @scheme[clear-continuation-table!], then @scheme[send/suspend].
|
Calls @scheme[clear-continuation-table!], then @scheme[send/suspend].
|
||||||
}
|
}
|
||||||
|
|
||||||
@; XXX Contract harder
|
@defproc[(send/finish [response response?])
|
||||||
@defproc[(send/finish [response any/c])
|
|
||||||
void?]{
|
void?]{
|
||||||
Calls @scheme[clear-continuation-table!], then @scheme[send/back].
|
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]{
|
any/c]{
|
||||||
Calls @scheme[make-response] with a function that, when called with a procedure from
|
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
|
@scheme[request?] to @scheme[any/c] will generate a URL, that when invoked will call
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
(module servlet mzscheme
|
(module servlet mzscheme
|
||||||
(require (lib "contract.ss"))
|
(require (lib "contract.ss"))
|
||||||
(require "../managers/manager.ss"
|
(require "../managers/manager.ss"
|
||||||
"../servlet/servlet-structs.ss"
|
"../private/request-structs.ss"
|
||||||
"connection-manager.ss"
|
"../private/response-structs.ss")
|
||||||
"../private/request-structs.ss")
|
|
||||||
|
|
||||||
(define servlet-prompt (make-continuation-prompt-tag 'servlet))
|
(define servlet-prompt (make-continuation-prompt-tag 'servlet))
|
||||||
(provide servlet-prompt)
|
(provide servlet-prompt)
|
||||||
|
@ -28,7 +27,7 @@
|
||||||
([custodian custodian?]
|
([custodian custodian?]
|
||||||
[namespace namespace?]
|
[namespace namespace?]
|
||||||
[manager manager?]
|
[manager manager?]
|
||||||
[handler (request? . -> . servlet-response?)])]
|
[handler (request? . -> . response?)])]
|
||||||
[struct servlet-instance-data
|
[struct servlet-instance-data
|
||||||
([mutex semaphore?])]
|
([mutex semaphore?])]
|
||||||
[struct execution-context
|
[struct execution-context
|
||||||
|
|
|
@ -3,15 +3,12 @@
|
||||||
(lib "xml.ss" "xml"))
|
(lib "xml.ss" "xml"))
|
||||||
(require "../private/request-structs.ss"
|
(require "../private/request-structs.ss"
|
||||||
"../private/response-structs.ss")
|
"../private/response-structs.ss")
|
||||||
|
|
||||||
(define servlet-response?
|
|
||||||
any/c)
|
|
||||||
|
|
||||||
(define k-url?
|
(define k-url?
|
||||||
string?)
|
string?)
|
||||||
|
|
||||||
(define response-generator?
|
(define response-generator?
|
||||||
(k-url? . -> . servlet-response?))
|
(k-url? . -> . response?))
|
||||||
|
|
||||||
(define url-transform?
|
(define url-transform?
|
||||||
(k-url? . -> . k-url?))
|
(k-url? . -> . k-url?))
|
||||||
|
@ -24,7 +21,6 @@
|
||||||
(((request? . -> . any/c)) (expiration-handler?) . opt-> . string?))
|
(((request? . -> . any/c)) (expiration-handler?) . opt-> . string?))
|
||||||
|
|
||||||
(provide/contract
|
(provide/contract
|
||||||
[servlet-response? contract?]
|
|
||||||
[response-generator? contract?]
|
[response-generator? contract?]
|
||||||
[k-url? (any/c . -> . boolean?)]
|
[k-url? (any/c . -> . boolean?)]
|
||||||
[url-transform? contract?]
|
[url-transform? contract?]
|
||||||
|
|
|
@ -3,14 +3,14 @@
|
||||||
(lib "list.ss")
|
(lib "list.ss")
|
||||||
(lib "plt-match.ss")
|
(lib "plt-match.ss")
|
||||||
(lib "contract.ss")
|
(lib "contract.ss")
|
||||||
(lib "etc.ss")
|
(lib "etc.ss"))
|
||||||
(lib "xml.ss" "xml"))
|
|
||||||
(require "../managers/manager.ss"
|
(require "../managers/manager.ss"
|
||||||
"../private/util.ss"
|
"../private/util.ss"
|
||||||
"../private/servlet.ss"
|
"../private/servlet.ss"
|
||||||
"../servlet/helpers.ss"
|
"../servlet/helpers.ss"
|
||||||
"../servlet/web-cells.ss"
|
"../servlet/web-cells.ss"
|
||||||
"../servlet/servlet-structs.ss"
|
"../servlet/servlet-structs.ss"
|
||||||
|
"../private/response-structs.ss"
|
||||||
"../private/request-structs.ss")
|
"../private/request-structs.ss")
|
||||||
|
|
||||||
;; ************************************************************
|
;; ************************************************************
|
||||||
|
@ -67,8 +67,6 @@
|
||||||
(rest old-path))))
|
(rest old-path))))
|
||||||
in-url)))
|
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
|
(provide/contract
|
||||||
[current-url-transform parameter?]
|
[current-url-transform parameter?]
|
||||||
[current-servlet-continuation-expiration-handler parameter?]
|
[current-servlet-continuation-expiration-handler parameter?]
|
||||||
|
@ -76,11 +74,11 @@
|
||||||
[redirect/get/forget (-> request?)]
|
[redirect/get/forget (-> request?)]
|
||||||
[adjust-timeout! (number? . -> . void?)]
|
[adjust-timeout! (number? . -> . void?)]
|
||||||
[clear-continuation-table! (-> void?)]
|
[clear-continuation-table! (-> void?)]
|
||||||
[send/back (any/c . -> . void?)]
|
[send/back (response? . -> . void?)]
|
||||||
[send/finish (any/c . -> . void?)]
|
[send/finish (response? . -> . void?)]
|
||||||
[send/suspend ((response-generator?) (expiration-handler?) . opt-> . request?)]
|
[send/suspend ((response-generator?) (expiration-handler?) . opt-> . request?)]
|
||||||
[send/forward ((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
|
;; EXPORTS
|
||||||
|
|
Loading…
Reference in New Issue
Block a user