experimental fix for an encoding problem
[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 \r
33       if (result != null && !encoding.equals(request.getCharacterEncoding())) {\r
34         System.out.println("recoding");\r
35         result = new String(result.getBytes(request.getCharacterEncoding()), encoding);\r
36       }\r
37 \r
38       return result;\r
39     }\r
40     catch (Throwable t) {\r
41       t.printStackTrace(System.out);\r
42       throw new RuntimeException("HTTPRequestParser.getParameter: " + t.getMessage());\r
43     }\r
44   }\r
45 \r
46   public int getIntegerWithDefault(String aName, int aDefault) {\r
47     int result = aDefault;\r
48     String value = getParameter(aName);\r
49 \r
50     try {\r
51       result = Integer.parseInt(value);\r
52     }\r
53     catch (Throwable t) {\r
54     }\r
55     return result;\r
56   }\r
57 }