Commit | Line | Data |
---|---|---|
c25c3aad FT |
1 | package dolda.jsvc.util; |
2 | ||
3 | import dolda.jsvc.*; | |
4 | ||
5 | public class Rehandler implements Responder { | |
6 | private Responder next; | |
7 | ||
8 | public Rehandler(Responder next) { | |
9 | this.next = next; | |
10 | } | |
11 | ||
12 | public void respond(Request req) { | |
13 | Responder cur = next; | |
14 | while(true) { | |
15 | try { | |
16 | cur.respond(req); | |
17 | } catch(RequestRestart t) { | |
18 | if(req instanceof ResettableRequest) { | |
19 | ResettableRequest rr = (ResettableRequest)req; | |
20 | if(rr.canreset()) | |
21 | rr.reset(); | |
22 | } | |
23 | cur = t; | |
24 | continue; | |
25 | } | |
26 | return; | |
27 | } | |
28 | } | |
29 | } |