X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Futil%2FRehandler.java;fp=src%2Fdolda%2Fjsvc%2Futil%2FRehandler.java;h=7915f53769e42239ccdb0e46ea36f11e31dbe791;hb=c25c3aadf42cf04fe8dbbfb60624589ba60112bd;hp=0000000000000000000000000000000000000000;hpb=a7d2eb2686c6e87d97d66051ba577178e5432511;p=jsvc.git diff --git a/src/dolda/jsvc/util/Rehandler.java b/src/dolda/jsvc/util/Rehandler.java new file mode 100644 index 0000000..7915f53 --- /dev/null +++ b/src/dolda/jsvc/util/Rehandler.java @@ -0,0 +1,29 @@ +package dolda.jsvc.util; + +import dolda.jsvc.*; + +public class Rehandler implements Responder { + private Responder next; + + public Rehandler(Responder next) { + this.next = next; + } + + public void respond(Request req) { + Responder cur = next; + while(true) { + try { + cur.respond(req); + } catch(RequestRestart t) { + if(req instanceof ResettableRequest) { + ResettableRequest rr = (ResettableRequest)req; + if(rr.canreset()) + rr.reset(); + } + cur = t; + continue; + } + return; + } + } +}