dlr 02/01/17 18:22:06
Modified: src/java/org/apache/stratum/jcs/utils/servlet/session
HttpServletRequestFacade.java
Log:
Achieved compatibility with the 2.3 Servlet API. Added
setCharacterEncoding(String) and getParameterMap() implementations.
The setCharacterEncoding() implementation does not modify the
underlying request (to preserve 2.2 compatibility).
Revision Changes Path
1.6 +60 -4
jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/utils/servlet/session/HttpServletRequestFacade.java
Index: HttpServletRequestFacade.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/utils/servlet/session/HttpServletRequestFacade.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -u -r1.5 -r1.6
--- HttpServletRequestFacade.java 18 Jan 2002 02:02:44 -0000 1.5
+++ HttpServletRequestFacade.java 18 Jan 2002 02:22:06 -0000 1.6
@@ -3,11 +3,14 @@
import java.io.BufferedReader;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.Locale;
+import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletInputStream;
@@ -22,10 +25,12 @@
import org.apache.stratum.jcs.utils.servlet.session.MetaHttpSession;
/**
- * Session wrapper, to overide some methods. Servlet 2.3 has an easier way to do
this.
+ * Session wrapper, to overide some methods. Servlet 2.3 has an
+ * easier way to do this.
*
- *@author asmuts
- *@created January 15, 2002
+ * @author asmuts
+ * @author <a href="mailto:[EMAIL PROTECTED]">Daniel Rall</a>
+ * @created January 15, 2002
*/
public class HttpServletRequestFacade implements HttpServletRequest
{
@@ -33,6 +38,7 @@
private final HttpServletRequest req;
private final HttpServletResponse res;
private MetaHttpSession ms;
+ private String characterEncoding;
/////////////////////////////////////////////////////////////////////
@@ -122,7 +128,37 @@
*/
public String getCharacterEncoding()
{
- return req.getCharacterEncoding();
+ // FUTURE: Always delegate when we switch to servlet api 2.3
+ return (characterEncoding != null ? characterEncoding :
+ req.getCharacterEncoding());
+ }
+
+
+ /**
+ * Overrides the name of the character encoding used in the body of
+ * this request. This method must be called prior to reading request
+ * parameters or reading input using <code>getReader()</code>.
+ *
+ * NOTE: This method will not modify the underlying request until
+ * Servlet API 2.3 is adopted.
+ *
+ * @param enc The character encoding to be used
+ *
+ * @exception UnsupportedEncodingException If the specified
+ * encoding is not supported.
+ */
+ public void setCharacterEncoding(String enc)
+ throws UnsupportedEncodingException
+ {
+ // FUTURE: Call req.setCharacterEncoding(enc) for servlet api 2.3
+
+ // Ensure that the specified encoding is valid
+ byte buffer[] = new byte[1];
+ buffer[0] = (byte) 'a';
+ String dummy = new String(buffer, enc);
+
+ // Save the validated encoding
+ this.characterEncoding = enc;
}
@@ -194,6 +230,26 @@
public String[] getParameterValues( String name )
{
return req.getParameterValues( name );
+ }
+
+
+ /**
+ * The implementation of this method will remain somewhat
+ * expensive until Servlet API 2.3 is adopted.
+ */
+ public Map getParameterMap()
+ {
+ // FUTURE: Call req.getParameterMap() for servlet api 2.3
+
+ Map params = new HashMap();
+ Enumeration enum = req.getParameterNames();
+ String name;
+ while (enum.hasMoreElements())
+ {
+ name = (String) enum.nextElement();
+ params.put(name, req.getParameterValues(name));
+ }
+ return params;
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>