yet another nasty encoding fix
[mir.git] / source / mir / util / HTTPRequestParser.java
1 package mir.util;\r
2 \r
3 import javax.servlet.http.HttpServletRequest;\r
4 \r
5 public class HTTPRequestParser {\r
6   private HttpServletRequest request;\r
7   private String encoding;\r
8 \r
9   public HTTPRequestParser(HttpServletRequest aRequest) {\r
10     this(aRequest, aRequest.getCharacterEncoding());\r
11   }\r
12 \r
13   public HTTPRequestParser(HttpServletRequest aRequest, String anEncoding) {\r
14     request = aRequest;\r
15     encoding = anEncoding;\r
16   }\r
17 \r
18   public boolean hasParameter(String aName) {\r
19     return request.getParameter(aName)!=null;\r
20   }\r
21 \r
22   public String getParameterWithDefault(String aName, String aDefault) {\r
23     if (hasParameter(aName))\r
24       return getParameter(aName);\r
25     else\r
26       return aDefault;\r
27   }\r
28 \r
29   public String getParameter(String aName) {\r
30     try {\r
31       String result = request.getParameter(aName);\r
32       String requestEncoding = request.getCharacterEncoding();\r
33       if (requestEncoding==null)\r
34         requestEncoding = "ISO-8859-1";\r
35 \r
36       if (result != null && encoding!=null && !encoding.equals(requestEncoding)) {\r
37         result = new String(result.getBytes(requestEncoding), encoding);\r
38       }\r
39 \r
40       return result;\r
41     }\r
42     catch (Throwable t) {\r
43       throw new RuntimeException("HTTPRequestParser.getParameter: " + t.getMessage());\r
44     }\r
45   }\r
46 \r
47   public int getIntegerWithDefault(String aName, int aDefault) {\r
48     int result = aDefault;\r
49     String value = getParameter(aName);\r
50 \r
51     try {\r
52       result = Integer.parseInt(value);\r
53     }\r
54     catch (Throwable t) {\r
55     }\r
56     return result;\r
57   }\r
58 }