home *** CD-ROM | disk | FTP | other *** search
- package lotus.domino.servlet;
-
- import java.io.IOException;
- import java.util.Date;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Random;
- import java.util.StringTokenizer;
- import java.util.Vector;
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import javax.servlet.http.HttpUtils;
-
- public class DominoHttpServletRequest extends DominoServletRequest implements HttpServletRequest {
- private Hashtable headers;
- private String i_sessionId = null;
- private DominoHttpServletResponse i_response = null;
- private boolean i_sessionIdFromURL = false;
- private boolean i_sessionIdFromCookie = false;
- public static final String AUTH_TYPE = "AUTH_TYPE";
- public static final String PATH_INFO = "PATH_INFO";
- public static final String PATH_TRANSLATED = "PATH_TRANSLATED";
- public static final String REQUEST_METHOD = "REQUEST_METHOD";
- public static final String REMOTE_USER = "REMOTE_USER";
- public static final String REQHDR = "REQHDR";
- public static final String SCRIPT_NAME = "SCRIPT_NAME";
- public static final String URI = "URI";
- public static final String SESSION_ID = "SessionID";
- private static Random c_randGenerator = new Random();
-
- public DominoHttpServletRequest(NativeStubContext var1) {
- super(var1);
- this.parseHeaders();
- }
-
- public Cookie[] getCookies() {
- String var1 = this.getHeader("Cookie");
- if (var1 == null) {
- return null;
- } else {
- Cookie[] var2 = null;
- Vector var3 = new Vector();
- parseCookieString(var1, var3);
- if (var3.size() > 0) {
- var2 = new Cookie[var3.size()];
-
- for(int var4 = 0; var4 < var3.size(); ++var4) {
- var2[var4] = (Cookie)var3.elementAt(var4);
- }
- }
-
- return var2;
- }
- }
-
- private static void parseCookieString(String var0, Vector var1) {
- Cookie var2 = null;
- StringTokenizer var3 = new StringTokenizer(var0, ",;");
-
- while(var3.hasMoreTokens()) {
- Object var4 = null;
- String var5 = null;
- int var6 = 0;
- StringTokenizer var7 = new StringTokenizer(var3.nextToken(), "=");
- String var8 = var7.nextToken().trim();
- if (var7.hasMoreTokens()) {
- var5 = var7.nextToken("").trim();
- }
-
- if (var8.equalsIgnoreCase("$version")) {
- var6 = Integer.parseInt(var5);
- if (var2 != null) {
- var2.setVersion(var6);
- }
- }
-
- if (!var8.startsWith("$")) {
- var2 = new Cookie(var8, var5);
- var2.setVersion(var6);
- var1.addElement(var2);
- } else if (var8.equalsIgnoreCase("$path") && var2 != null) {
- var2.setPath(var5);
- } else if (var8.equalsIgnoreCase("$domain") && var2 != null) {
- var2.setDomain(var5);
- }
- }
-
- }
-
- private void parseHeaders() {
- try {
- String var3 = NativeStub.extract("REQHDR");
- if (var3 == null) {
- this.headers = new Hashtable();
- } else {
- StringTokenizer var4 = new StringTokenizer(var3, "\r\n");
- var4.countTokens();
- this.headers = new Hashtable();
-
- while(var4.hasMoreTokens()) {
- String var2 = var4.nextToken();
- int var1 = var2.indexOf(": ");
- String var5 = var2.substring(0, var1).toUpperCase();
- String var6 = var2.substring(var1 + 2);
- this.headers.put(var5, var6);
- }
-
- }
- } catch (Exception var7) {
- ((Throwable)var7).printStackTrace();
- }
- }
-
- public String getMethod() {
- try {
- return super.i_api.extract("REQUEST_METHOD");
- } catch (NativeStubException var2) {
- ((Throwable)var2).printStackTrace();
- return null;
- }
- }
-
- public String getRequestURI() {
- try {
- return super.i_api.extract("URI");
- } catch (NativeStubException var2) {
- ((Throwable)var2).printStackTrace();
- return null;
- }
- }
-
- public String getServletPath() {
- try {
- return super.i_api.extract("SCRIPT_NAME");
- } catch (NativeStubException var2) {
- ((Throwable)var2).printStackTrace();
- return null;
- }
- }
-
- public String getPathInfo() {
- try {
- return super.i_api.extract("PATH_INFO");
- } catch (NativeStubException var2) {
- ((Throwable)var2).printStackTrace();
- return null;
- }
- }
-
- public String getPathTranslated() {
- try {
- return super.i_api.extract("PATH_TRANSLATED");
- } catch (NativeStubException var2) {
- ((Throwable)var2).printStackTrace();
- return null;
- }
- }
-
- public String getQueryString() {
- try {
- return super.i_api.extract("QUERY_STRING");
- } catch (NativeStubException var2) {
- ((Throwable)var2).printStackTrace();
- return null;
- }
- }
-
- public String getRemoteUser() {
- try {
- return super.i_api.extract("REMOTE_USER");
- } catch (NativeStubException var2) {
- ((Throwable)var2).printStackTrace();
- return null;
- }
- }
-
- public String getScheme() {
- String var1 = ((DominoServletRequest)this).getProtocol();
- return var1 == null ? "http" : var1;
- }
-
- public String[] getParameterValues(String var1) {
- if (super.i_parms == null) {
- this.loadParameters();
- }
-
- return (String[])super.i_parms.get(var1);
- }
-
- public String getAuthType() {
- try {
- return super.i_api.extract("AUTH_TYPE");
- } catch (NativeStubException var2) {
- ((Throwable)var2).printStackTrace();
- return null;
- }
- }
-
- public void loadParameters() {
- String var2 = this.getMethod().toUpperCase();
-
- try {
- String var1;
- if (var2.equals("POST")) {
- if (super.i_inStr == null) {
- super.i_inStr = ((DominoServletRequest)this).getInputStream();
- }
-
- byte[] var3 = new byte[super.i_inStr.available()];
- super.i_inStr.read(var3, 0, var3.length);
- var1 = new String(var3);
- } else {
- var1 = this.getQueryString();
- }
-
- if (var1 == null) {
- var1 = "";
- }
-
- super.i_parms = HttpUtils.parseQueryString(var1);
- } catch (IOException var4) {
- ((Throwable)var4).printStackTrace();
- }
- }
-
- public String getParameter(String var1) {
- Object var2 = null;
- if (super.i_parms == null) {
- this.loadParameters();
- }
-
- if (super.i_parms != null) {
- String[] var3 = (String[])super.i_parms.get(var1);
- if (var3 == null) {
- return null;
- } else {
- String var5 = "";
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- if (!var5.equals("")) {
- var5 = var5 + ",";
- }
-
- var5 = var5 + var3[var4];
- }
-
- return var5;
- }
- } else {
- return null;
- }
- }
-
- public String getHeader(String var1) {
- return var1 == null ? null : (String)this.headers.get(var1.toUpperCase());
- }
-
- public int getIntHeader(String var1) {
- if (var1 == null) {
- return -1;
- } else {
- try {
- String var2 = (String)this.headers.get(var1.toUpperCase());
- return var2 == null ? -1 : Integer.parseInt(var2);
- } catch (NumberFormatException var3) {
- return -1;
- }
- }
- }
-
- public long getDateHeader(String var1) {
- try {
- String var2 = (String)this.headers.get(var1.toUpperCase());
- return var2 == null ? -1L : Date.parse(var2);
- } catch (IllegalArgumentException var3) {
- return -1L;
- } catch (Exception var4) {
- return -1L;
- }
- }
-
- public Enumeration getHeaderNames() {
- return this.headers != null ? this.headers.keys() : null;
- }
-
- public HttpSession getSession(boolean var1) {
- this.getRequestedSessionId();
- if (var1) {
- if (this.i_sessionId == null && this.i_response != null) {
- Date var2 = new Date();
- String var3 = Long.toHexString(var2.getTime());
- String var4 = Long.toHexString(c_randGenerator.nextLong());
- this.i_sessionId = var3.toUpperCase() + var4.toUpperCase();
- Cookie var5 = new Cookie("SessionID", this.i_sessionId);
- var5.setPath("/");
-
- try {
- this.i_response.addCookie(var5);
- } catch (Exception var7) {
- ((Throwable)var7).printStackTrace(System.err);
- return null;
- }
- }
-
- if (this.i_sessionId != null && !this.i_sessionId.equals("")) {
- ServletManager.getSessionContext().registerSession(this.i_sessionId);
- }
- }
-
- return this.i_sessionId == null ? null : ServletManager.getSessionContext().getSession(this.i_sessionId);
- }
-
- public String getRequestedSessionId() {
- if (this.i_sessionId == null) {
- this.i_sessionId = this.getSessionId();
- }
-
- return this.i_sessionId;
- }
-
- private String getSessionId() {
- String var1 = this.getParameter("SessionID");
- String var2 = null;
- Object var3 = null;
- Cookie[] var5;
- if ((var5 = this.getCookies()) != null) {
- for(int var4 = 0; var4 < var5.length; ++var4) {
- if (var5[var4].getName().equals("SessionID")) {
- var2 = var5[var4].getValue();
- break;
- }
- }
- }
-
- this.i_sessionIdFromURL = var1 != null;
- this.i_sessionIdFromCookie = var2 != null;
- return var1 == null ? var2 : var1;
- }
-
- public boolean isRequestedSessionIdValid() {
- return true;
- }
-
- public boolean isRequestedSessionIdFromCookie() {
- return this.i_sessionIdFromCookie;
- }
-
- public boolean isRequestedSessionIdFromUrl() {
- return this.i_sessionIdFromURL;
- }
-
- public void setResponse(DominoHttpServletResponse var1) {
- this.i_response = var1;
- }
- }
-