Added a request-restart-wrapper and some convenient redirections.
[jsvc.git] / src / dolda / jsvc / util / Rehandler.java
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 }