01: package org.araneaframework.http;
02:
03: import java.util.Iterator;
04: import java.util.Locale;
05: import javax.servlet.http.HttpServletRequest;
06: import org.araneaframework.InputData;
07:
08: /**
09: * Provides methods to deal with the manipulate low-level HTTP constructs. Wraps the {@link HttpServletRequest}.
10: *
11: * The main difference is how we handle the so called PATH_INFO (the additional path after the servlet).
12: * The problem is that unlike most common cases Aranea components form a hierarchy.
13: * Therefore if a parent is mapped to path prefix "myPath/*" and its child is mapped to a path prefix "myChildPath/*"
14: * if the path handling were absolute the child would never get the mapped calles. This is due to the child being really
15: * mapped to the path "myPath/myChildPath". Therefore the parent must consume the prefix "myPath/" using method
16: * <code>pushPathPrefix()</code> and then the child will be correctly matched to the relative path "myChildPath".
17: *
18: * @author Jevgeni Kabanov (ekabanov@webmedia.ee)
19: *
20: * @see HttpOutputData
21: */
22: public interface HttpInputData extends InputData {
23: /**
24: * Returns an iterator over names of the parameters submitted with the current request.
25: */
26: Iterator getParameterNames();
27:
28: /**
29: * Returns the array of values of the particular parameter submitted with the current request.
30: */
31: String[] getParameterValues(String name);
32:
33: /**
34: * Returns the character encoding that is used to decode the request parameters.
35: */
36: String getCharacterEncoding();
37:
38: /**
39: * Sets the character encoding that is used to decode the request parameters.
40: * Note that this must be called before any parameters are read according to the Servlet specification.
41: */
42: void setCharacterEncoding(String encoding);
43:
44: /**
45: * Returns the MIME content type of the request body or <code>null</code> if the body is lacking.
46: */
47: String getContentType();
48:
49: /**
50: * Returns the preferred Locale that the client will accept content in, based on the Accept-Language header.
51: * If the client request doesn't provide an Accept-Language header, this method returns the default locale for the server.
52: */
53: Locale getLocale();
54:
55: /**
56: * Returns the target URL of the current request.
57: */
58: String getRequestURL();
59:
60: /**
61: * Returns an URL pointing to the Aranea container (in most cases the dispatcher servlet).
62: */
63: String getContainerURL();
64:
65: /** @since 1.1 */
66: String getContainerPath();
67:
68: /**
69: * Returns an URL pointing to the Aranea container context (in most cases the web application root).
70: */
71: String getContextURL();
72:
73: /** @since 1.1 */
74: String getContextPath();
75:
76: /**
77: * Returns the path on the server starting from the dispatcher servlet that has been submitted as the part of the request target URL.
78: */
79: String getPath();
80:
81: /**
82: * Consumes the path prefix allowing children to be mapped to a relative path.
83: */
84: void pushPathPrefix(String pathPrefix);
85:
86: /**
87: * Restores the previously consumed path prefix.
88: */
89: void popPathPrefix();
90: }
|