Made the server context a more useful concept.
[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 URL rooturl() {return(bk.rooturl());}
17     public String method() {return(bk.method());}
18     public String path() {return(bk.path());}
19     public InputStream input() {return(bk.input());}
20     public MultiMap<String, String> inheaders() {return(bk.inheaders());}
21     public MultiMap<String, String> params() {return(bk.params());}
22     public OutputStream output() {return(bk.output());}
23     public void status(int code) {bk.status(code);}
24     public void status(int code, String message) {bk.status(code, message);}
25     public MultiMap<String, String> outheaders() {return(bk.outheaders());}
26     public Map<Object, Object> props() {return(bk.props());}
27     public ServerContext ctx() {return(bk.ctx());}
28     public SocketAddress remoteaddr() {return(bk.remoteaddr());}
29     public SocketAddress localaddr() {return(bk.localaddr());}
30
31     public Request orig() {
32         return(bk);
33     }
34     
35     public static Request chpath(Request req, String path) {
36         class PathWrap extends RequestWrap {
37             private final String path;
38             
39             public PathWrap(Request req, String path) {
40                 super(req);
41                 this.path = path;
42             }
43             
44             public String path() {
45                 return(path);
46             }
47         }
48         if(req instanceof PathWrap)
49             return(new PathWrap(((PathWrap)req).orig(), path));
50         return(new PathWrap(req, path));
51     }
52 }