1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package nl.hippo.client.webapp;
17
18 import java.util.ArrayList;
19 import java.util.Iterator;
20 import java.util.List;
21
22 import nl.hippo.client.webapp.matchers.AdminMatcher;
23 import nl.hippo.client.webapp.matchers.BinariesMatcher;
24 import nl.hippo.client.webapp.matchers.ContentMatcher;
25 import nl.hippo.client.webapp.matchers.DeleteQueryMatcher;
26 import nl.hippo.client.webapp.matchers.GetQueryMatcher;
27 import nl.hippo.client.webapp.matchers.Matcher;
28 import nl.hippo.client.webapp.matchers.QueryMatcher;
29
30 public class Pipeline {
31
32 private List matchers;
33
34 public Pipeline() {
35 matchers = new ArrayList();
36 addMatcher(new QueryMatcher());
37 addMatcher(new GetQueryMatcher());
38 addMatcher(new DeleteQueryMatcher());
39 addMatcher(new AdminMatcher());
40 addMatcher(new BinariesMatcher());
41 addMatcher(new ContentMatcher());
42 }
43
44 public void addMatcher(Matcher matcher) {
45 matchers.add(matcher);
46 }
47
48 public Matcher getMatcher(Request request) {
49 Iterator it = matchers.iterator();
50 while (it.hasNext()) {
51 Matcher matcher = (Matcher) it.next();
52 if (matcher.matches(request)) {
53 return matcher;
54 }
55 }
56 return new ContentMatcher();
57 }
58
59 public Iterator iterator() {
60 return matchers.iterator();
61 }
62 }