home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / icsclass.jar / lotus / domino / servlet / DominoHttpServletRequest.class (.txt) next >
Encoding:
Java Class File  |  1998-11-15  |  7.6 KB  |  357 lines

  1. package lotus.domino.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.util.Date;
  5. import java.util.Enumeration;
  6. import java.util.Hashtable;
  7. import java.util.Random;
  8. import java.util.StringTokenizer;
  9. import java.util.Vector;
  10. import javax.servlet.http.Cookie;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpSession;
  13. import javax.servlet.http.HttpUtils;
  14.  
  15. public class DominoHttpServletRequest extends DominoServletRequest implements HttpServletRequest {
  16.    private Hashtable headers;
  17.    private String i_sessionId = null;
  18.    private DominoHttpServletResponse i_response = null;
  19.    private boolean i_sessionIdFromURL = false;
  20.    private boolean i_sessionIdFromCookie = false;
  21.    public static final String AUTH_TYPE = "AUTH_TYPE";
  22.    public static final String PATH_INFO = "PATH_INFO";
  23.    public static final String PATH_TRANSLATED = "PATH_TRANSLATED";
  24.    public static final String REQUEST_METHOD = "REQUEST_METHOD";
  25.    public static final String REMOTE_USER = "REMOTE_USER";
  26.    public static final String REQHDR = "REQHDR";
  27.    public static final String SCRIPT_NAME = "SCRIPT_NAME";
  28.    public static final String URI = "URI";
  29.    public static final String SESSION_ID = "SessionID";
  30.    private static Random c_randGenerator = new Random();
  31.  
  32.    public DominoHttpServletRequest(NativeStubContext var1) {
  33.       super(var1);
  34.       this.parseHeaders();
  35.    }
  36.  
  37.    public Cookie[] getCookies() {
  38.       String var1 = this.getHeader("Cookie");
  39.       if (var1 == null) {
  40.          return null;
  41.       } else {
  42.          Cookie[] var2 = null;
  43.          Vector var3 = new Vector();
  44.          parseCookieString(var1, var3);
  45.          if (var3.size() > 0) {
  46.             var2 = new Cookie[var3.size()];
  47.  
  48.             for(int var4 = 0; var4 < var3.size(); ++var4) {
  49.                var2[var4] = (Cookie)var3.elementAt(var4);
  50.             }
  51.          }
  52.  
  53.          return var2;
  54.       }
  55.    }
  56.  
  57.    private static void parseCookieString(String var0, Vector var1) {
  58.       Cookie var2 = null;
  59.       StringTokenizer var3 = new StringTokenizer(var0, ",;");
  60.  
  61.       while(var3.hasMoreTokens()) {
  62.          Object var4 = null;
  63.          String var5 = null;
  64.          int var6 = 0;
  65.          StringTokenizer var7 = new StringTokenizer(var3.nextToken(), "=");
  66.          String var8 = var7.nextToken().trim();
  67.          if (var7.hasMoreTokens()) {
  68.             var5 = var7.nextToken("").trim();
  69.          }
  70.  
  71.          if (var8.equalsIgnoreCase("$version")) {
  72.             var6 = Integer.parseInt(var5);
  73.             if (var2 != null) {
  74.                var2.setVersion(var6);
  75.             }
  76.          }
  77.  
  78.          if (!var8.startsWith("$")) {
  79.             var2 = new Cookie(var8, var5);
  80.             var2.setVersion(var6);
  81.             var1.addElement(var2);
  82.          } else if (var8.equalsIgnoreCase("$path") && var2 != null) {
  83.             var2.setPath(var5);
  84.          } else if (var8.equalsIgnoreCase("$domain") && var2 != null) {
  85.             var2.setDomain(var5);
  86.          }
  87.       }
  88.  
  89.    }
  90.  
  91.    private void parseHeaders() {
  92.       try {
  93.          String var3 = NativeStub.extract("REQHDR");
  94.          if (var3 == null) {
  95.             this.headers = new Hashtable();
  96.          } else {
  97.             StringTokenizer var4 = new StringTokenizer(var3, "\r\n");
  98.             var4.countTokens();
  99.             this.headers = new Hashtable();
  100.  
  101.             while(var4.hasMoreTokens()) {
  102.                String var2 = var4.nextToken();
  103.                int var1 = var2.indexOf(": ");
  104.                String var5 = var2.substring(0, var1).toUpperCase();
  105.                String var6 = var2.substring(var1 + 2);
  106.                this.headers.put(var5, var6);
  107.             }
  108.  
  109.          }
  110.       } catch (Exception var7) {
  111.          ((Throwable)var7).printStackTrace();
  112.       }
  113.    }
  114.  
  115.    public String getMethod() {
  116.       try {
  117.          return super.i_api.extract("REQUEST_METHOD");
  118.       } catch (NativeStubException var2) {
  119.          ((Throwable)var2).printStackTrace();
  120.          return null;
  121.       }
  122.    }
  123.  
  124.    public String getRequestURI() {
  125.       try {
  126.          return super.i_api.extract("URI");
  127.       } catch (NativeStubException var2) {
  128.          ((Throwable)var2).printStackTrace();
  129.          return null;
  130.       }
  131.    }
  132.  
  133.    public String getServletPath() {
  134.       try {
  135.          return super.i_api.extract("SCRIPT_NAME");
  136.       } catch (NativeStubException var2) {
  137.          ((Throwable)var2).printStackTrace();
  138.          return null;
  139.       }
  140.    }
  141.  
  142.    public String getPathInfo() {
  143.       try {
  144.          return super.i_api.extract("PATH_INFO");
  145.       } catch (NativeStubException var2) {
  146.          ((Throwable)var2).printStackTrace();
  147.          return null;
  148.       }
  149.    }
  150.  
  151.    public String getPathTranslated() {
  152.       try {
  153.          return super.i_api.extract("PATH_TRANSLATED");
  154.       } catch (NativeStubException var2) {
  155.          ((Throwable)var2).printStackTrace();
  156.          return null;
  157.       }
  158.    }
  159.  
  160.    public String getQueryString() {
  161.       try {
  162.          return super.i_api.extract("QUERY_STRING");
  163.       } catch (NativeStubException var2) {
  164.          ((Throwable)var2).printStackTrace();
  165.          return null;
  166.       }
  167.    }
  168.  
  169.    public String getRemoteUser() {
  170.       try {
  171.          return super.i_api.extract("REMOTE_USER");
  172.       } catch (NativeStubException var2) {
  173.          ((Throwable)var2).printStackTrace();
  174.          return null;
  175.       }
  176.    }
  177.  
  178.    public String getScheme() {
  179.       String var1 = ((DominoServletRequest)this).getProtocol();
  180.       return var1 == null ? "http" : var1;
  181.    }
  182.  
  183.    public String[] getParameterValues(String var1) {
  184.       if (super.i_parms == null) {
  185.          this.loadParameters();
  186.       }
  187.  
  188.       return (String[])super.i_parms.get(var1);
  189.    }
  190.  
  191.    public String getAuthType() {
  192.       try {
  193.          return super.i_api.extract("AUTH_TYPE");
  194.       } catch (NativeStubException var2) {
  195.          ((Throwable)var2).printStackTrace();
  196.          return null;
  197.       }
  198.    }
  199.  
  200.    public void loadParameters() {
  201.       String var2 = this.getMethod().toUpperCase();
  202.  
  203.       try {
  204.          String var1;
  205.          if (var2.equals("POST")) {
  206.             if (super.i_inStr == null) {
  207.                super.i_inStr = ((DominoServletRequest)this).getInputStream();
  208.             }
  209.  
  210.             byte[] var3 = new byte[super.i_inStr.available()];
  211.             super.i_inStr.read(var3, 0, var3.length);
  212.             var1 = new String(var3);
  213.          } else {
  214.             var1 = this.getQueryString();
  215.          }
  216.  
  217.          if (var1 == null) {
  218.             var1 = "";
  219.          }
  220.  
  221.          super.i_parms = HttpUtils.parseQueryString(var1);
  222.       } catch (IOException var4) {
  223.          ((Throwable)var4).printStackTrace();
  224.       }
  225.    }
  226.  
  227.    public String getParameter(String var1) {
  228.       Object var2 = null;
  229.       if (super.i_parms == null) {
  230.          this.loadParameters();
  231.       }
  232.  
  233.       if (super.i_parms != null) {
  234.          String[] var3 = (String[])super.i_parms.get(var1);
  235.          if (var3 == null) {
  236.             return null;
  237.          } else {
  238.             String var5 = "";
  239.  
  240.             for(int var4 = 0; var4 < var3.length; ++var4) {
  241.                if (!var5.equals("")) {
  242.                   var5 = var5 + ",";
  243.                }
  244.  
  245.                var5 = var5 + var3[var4];
  246.             }
  247.  
  248.             return var5;
  249.          }
  250.       } else {
  251.          return null;
  252.       }
  253.    }
  254.  
  255.    public String getHeader(String var1) {
  256.       return var1 == null ? null : (String)this.headers.get(var1.toUpperCase());
  257.    }
  258.  
  259.    public int getIntHeader(String var1) {
  260.       if (var1 == null) {
  261.          return -1;
  262.       } else {
  263.          try {
  264.             String var2 = (String)this.headers.get(var1.toUpperCase());
  265.             return var2 == null ? -1 : Integer.parseInt(var2);
  266.          } catch (NumberFormatException var3) {
  267.             return -1;
  268.          }
  269.       }
  270.    }
  271.  
  272.    public long getDateHeader(String var1) {
  273.       try {
  274.          String var2 = (String)this.headers.get(var1.toUpperCase());
  275.          return var2 == null ? -1L : Date.parse(var2);
  276.       } catch (IllegalArgumentException var3) {
  277.          return -1L;
  278.       } catch (Exception var4) {
  279.          return -1L;
  280.       }
  281.    }
  282.  
  283.    public Enumeration getHeaderNames() {
  284.       return this.headers != null ? this.headers.keys() : null;
  285.    }
  286.  
  287.    public HttpSession getSession(boolean var1) {
  288.       this.getRequestedSessionId();
  289.       if (var1) {
  290.          if (this.i_sessionId == null && this.i_response != null) {
  291.             Date var2 = new Date();
  292.             String var3 = Long.toHexString(var2.getTime());
  293.             String var4 = Long.toHexString(c_randGenerator.nextLong());
  294.             this.i_sessionId = var3.toUpperCase() + var4.toUpperCase();
  295.             Cookie var5 = new Cookie("SessionID", this.i_sessionId);
  296.             var5.setPath("/");
  297.  
  298.             try {
  299.                this.i_response.addCookie(var5);
  300.             } catch (Exception var7) {
  301.                ((Throwable)var7).printStackTrace(System.err);
  302.                return null;
  303.             }
  304.          }
  305.  
  306.          if (this.i_sessionId != null && !this.i_sessionId.equals("")) {
  307.             ServletManager.getSessionContext().registerSession(this.i_sessionId);
  308.          }
  309.       }
  310.  
  311.       return this.i_sessionId == null ? null : ServletManager.getSessionContext().getSession(this.i_sessionId);
  312.    }
  313.  
  314.    public String getRequestedSessionId() {
  315.       if (this.i_sessionId == null) {
  316.          this.i_sessionId = this.getSessionId();
  317.       }
  318.  
  319.       return this.i_sessionId;
  320.    }
  321.  
  322.    private String getSessionId() {
  323.       String var1 = this.getParameter("SessionID");
  324.       String var2 = null;
  325.       Object var3 = null;
  326.       Cookie[] var5;
  327.       if ((var5 = this.getCookies()) != null) {
  328.          for(int var4 = 0; var4 < var5.length; ++var4) {
  329.             if (var5[var4].getName().equals("SessionID")) {
  330.                var2 = var5[var4].getValue();
  331.                break;
  332.             }
  333.          }
  334.       }
  335.  
  336.       this.i_sessionIdFromURL = var1 != null;
  337.       this.i_sessionIdFromCookie = var2 != null;
  338.       return var1 == null ? var2 : var1;
  339.    }
  340.  
  341.    public boolean isRequestedSessionIdValid() {
  342.       return true;
  343.    }
  344.  
  345.    public boolean isRequestedSessionIdFromCookie() {
  346.       return this.i_sessionIdFromCookie;
  347.    }
  348.  
  349.    public boolean isRequestedSessionIdFromUrl() {
  350.       return this.i_sessionIdFromURL;
  351.    }
  352.  
  353.    public void setResponse(DominoHttpServletResponse var1) {
  354.       this.i_response = var1;
  355.    }
  356. }
  357.