Added a "directory multiplexer" responder.
[jsvc.git] / src / dolda / jsvc / RequestWrap.java
1 package dolda.jsvc;
2
3 import java.io.*;
4 import java.net.URL;
5 import java.net.SocketAddress;
6 import java.util.Map;
7
8 public class RequestWrap implements Request {
9     private final Request bk;
10     
11     public RequestWrap(Request req) {
12         this.bk = req;
13     }
14     
15     public URL url() {return(bk.url());}
16     public String method() {return(bk.method());}
17     public String path() {return(bk.path());}
18     public InputStream input() {return(bk.input());}
19     public MultiMap<String, String> inheaders() {return(bk.inheaders());}
20     public MultiMap<String, String> params() {return(bk.params());}
21     public OutputStream output() {return(bk.output());}
22     public void status(int code) {bk.status(code);}
23     public void status(int code, String message) {bk.status(code, message);}
24     public MultiMap<String, String> outheaders() {return(bk.outheaders());}
25     public Map<Object, Object> props() {return(bk.props());}
26     public ServerContext ctx() {return(bk.ctx());}
27     public SocketAddress remoteaddr() {return(bk.remoteaddr());}
28     public SocketAddress localaddr() {return(bk.localaddr());}
29
30     public Request orig() {
31         return(bk);
32     }
33     
34     public static Request chpath(Request req, String path) {
35         class PathWrap extends RequestWrap {
36             private final String path;
37             
38             public PathWrap(Request req, String path) {
39                 super(req);
40                 this.path = path;
41             }
42             
43             public String path() {
44                 return(path);
45             }
46         }
47         if(req instanceof PathWrap)
48             return(new PathWrap(((PathWrap)req).orig(), path));
49         return(new PathWrap(req, path));
50     }
51 }