1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.cubby.controller.impl;
17
18 import java.util.Arrays;
19 import java.util.Collections;
20 import java.util.Comparator;
21 import java.util.List;
22
23 import javax.servlet.http.HttpServletRequest;
24
25 import org.seasar.cubby.controller.RequestParser;
26 import org.seasar.cubby.controller.RequestParserSelector;
27 import org.seasar.framework.container.S2Container;
28
29
30
31
32
33
34
35 public class RequestParserSelectorImpl implements RequestParserSelector {
36
37
38 private S2Container container;
39
40
41 private Comparator<RequestParser> requestParserComparator = new Comparator<RequestParser>() {
42
43
44
45
46
47
48
49 public int compare(RequestParser reuqestParser1,
50 RequestParser reuqestParser2) {
51 return reuqestParser1.getPriority() - reuqestParser2.getPriority();
52 }
53
54 };
55
56
57
58
59
60
61
62 public void setContainer(final S2Container container) {
63 this.container = container;
64 }
65
66
67
68
69 public RequestParser select(final HttpServletRequest request) {
70 final S2Container root = container.getRoot();
71 final RequestParser[] requestParsers = (RequestParser[]) root
72 .findAllComponents(RequestParser.class);
73 final List<RequestParser> requestParserList = Arrays
74 .asList(requestParsers);
75 Collections.sort(requestParserList, requestParserComparator);
76 for (final RequestParser requestParser : requestParserList) {
77 if (requestParser.isParsable(request)) {
78 return requestParser;
79 }
80 }
81 return null;
82 }
83
84 }