-
-
Notifications
You must be signed in to change notification settings - Fork 48
/
sync.clj
40 lines (38 loc) · 1.39 KB
/
sync.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
(ns ring.adapter.jetty9.handlers.sync
(:require
[ring.adapter.jetty9.common :as common]
[ring.adapter.jetty9.servlet :as servlet]
[ring.adapter.jetty9.websocket :as ws])
(:import [jakarta.servlet.http HttpServletRequest HttpServletResponse]
[org.eclipse.jetty.server Request])
(:gen-class
:name ring.adapter.jetty9.handlers.SyncProxyHandler
:extends org.eclipse.jetty.servlet.ServletHandler
:state ringHandler
:init init
:constructors {[clojure.lang.IFn
clojure.lang.IPersistentMap] []}
:prefix "-"))
(defn -init
[ring-handler opts]
[[] (with-meta ring-handler opts)])
(defn -doHandle
"Synchronous override for `ServletHandler.doHandle"
[^ring.adapter.jetty9.handlers.SyncProxyHandler this
_
^Request base-request
^HttpServletRequest request
^HttpServletResponse response]
(try
(let [handler (.ringHandler this)
response-map (-> request
common/build-request-map
handler
common/normalize-response)]
(if-let [ws (common/websocket-upgrade-response? response-map)]
(ws/upgrade-websocket request response ws (meta handler))
(servlet/update-servlet-response response response-map)))
(catch Throwable e
(.sendError response 500 (.getMessage e)))
(finally
(.setHandled base-request true))))