1 package dolda.jsvc.util;
6 public class Multiplexer implements Responder {
8 private Collection<Matcher> matchers = new LinkedList<Matcher>();
10 public static interface Matcher {
11 public boolean match(Request req);
14 public Multiplexer(Responder def) {
18 public Multiplexer() {
19 this(new Responder() {
20 public void respond(Request req) {
21 throw(new StdResponse(404, "Resource not found", "The resource you requested could not be found on this server."));
26 public void file(final String path, final Responder responder) {
28 public boolean match(Request req) {
29 if(req.path().equals(path)) {
30 responder.respond(req);
38 public void dir(String path, final Responder responder) {
39 final String fp = Misc.stripslashes(path, true, true);
41 public boolean match(Request req) {
42 if(req.path().equals(fp)) {
43 throw(new Redirect(fp + "/"));
44 } else if(req.path().startsWith(fp + "/")) {
45 responder.respond(RequestWrap.chpath(req, req.path().substring(fp.length() + 1)));
53 public void add(Matcher m) {
57 public void respond(Request req) {
58 for(Matcher m : matchers) {