home *** CD-ROM | disk | FTP | other *** search
- package javax.servlet.http;
-
- import java.io.IOException;
- import java.io.OutputStream;
- import java.io.Serializable;
- import java.lang.reflect.Method;
- import java.util.Enumeration;
- import javax.servlet.GenericServlet;
- import javax.servlet.ServletException;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
-
- public abstract class HttpServlet extends GenericServlet implements Serializable {
- protected void doGet(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
- var2.sendError(400, "GET is not supported by this URL");
- }
-
- protected long getLastModified(HttpServletRequest var1) {
- return -1L;
- }
-
- private void doHead(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
- NoBodyResponse var3 = new NoBodyResponse(var2);
- this.doGet(var1, var3);
- var3.setContentLength();
- }
-
- protected void doPost(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
- var2.sendError(400, "POST is not supported by this URL");
- }
-
- protected void doPut(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
- var2.sendError(400, "PUT is not supported by this URL");
- }
-
- protected void doDelete(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
- var2.sendError(400, "DELETE is not supported by this URL");
- }
-
- private Method[] getAllDeclaredMethods(Class var1) {
- if (var1.getName().equals("javax.servlet.http.HttpServlet")) {
- return null;
- } else {
- int var2 = 0;
- Method[] var3 = this.getAllDeclaredMethods(var1.getSuperclass());
- Method[] var4 = var1.getDeclaredMethods();
- if (var3 == null) {
- return var4;
- } else {
- Method[] var5 = new Method[var3.length + var4.length];
-
- for(int var6 = 0; var6 < var3.length; var2 = var6++) {
- var5[var6] = var3[var6];
- }
-
- ++var2;
-
- for(int var7 = var2; var7 < var4.length + var2; ++var7) {
- var5[var7] = var4[var7 - var2];
- }
-
- return var5;
- }
- }
- }
-
- protected void doOptions(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
- Method[] var3 = this.getAllDeclaredMethods(this.getClass());
- boolean var4 = false;
- boolean var5 = false;
- boolean var6 = false;
- boolean var7 = false;
- boolean var8 = false;
- boolean var9 = true;
- boolean var10 = true;
-
- for(int var11 = 0; var11 < var3.length; ++var11) {
- Method var12 = var3[var11];
- if (var12.getName().equals("doGet")) {
- var4 = true;
- var5 = true;
- }
-
- if (var12.getName().equals("doPost")) {
- var6 = true;
- }
-
- if (var12.getName().equals("doPut")) {
- var7 = true;
- }
-
- if (var12.getName().equals("doDelete")) {
- var8 = true;
- }
- }
-
- String var13 = null;
- if (var4 && var13 == null) {
- var13 = "GET";
- }
-
- if (var5) {
- if (var13 == null) {
- var13 = "HEAD";
- } else {
- var13 = var13 + ", HEAD";
- }
- }
-
- if (var6) {
- if (var13 == null) {
- var13 = "POST";
- } else {
- var13 = var13 + ", POST";
- }
- }
-
- if (var7) {
- if (var13 == null) {
- var13 = "PUT";
- } else {
- var13 = var13 + ", PUT";
- }
- }
-
- if (var8) {
- if (var13 == null) {
- var13 = "DELETE";
- } else {
- var13 = var13 + ", DELETE";
- }
- }
-
- if (var9) {
- if (var13 == null) {
- var13 = "TRACE";
- } else {
- var13 = var13 + ", TRACE";
- }
- }
-
- if (var10) {
- if (var13 == null) {
- var13 = "OPTIONS";
- } else {
- var13 = var13 + ", OPTIONS";
- }
- }
-
- var2.setHeader("Allow", var13);
- }
-
- protected void doTrace(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
- String var4 = "\r\n";
- String var5 = "TRACE " + var1.getRequestURI() + " " + var1.getProtocol();
-
- String var7;
- for(Enumeration var6 = var1.getHeaderNames(); var6.hasMoreElements(); var5 = var5 + var4 + var7 + ": " + var1.getHeader(var7)) {
- var7 = (String)var6.nextElement();
- }
-
- var5 = var5 + var4;
- int var3 = var5.length();
- var2.setContentType("message/http");
- var2.setContentLength(var3);
- ServletOutputStream var9 = var2.getOutputStream();
- var9.print(var5);
- ((OutputStream)var9).close();
- }
-
- protected void service(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
- String var3 = var1.getMethod();
- if (var3.equals("GET")) {
- long var10 = var1.getDateHeader("If-Modified-Since");
- long var6 = this.getLastModified(var1);
- this.maybeSetLastModified(var2, var6);
- if (var10 != -1L && var6 != -1L) {
- long var8 = System.currentTimeMillis();
- if (var8 >= var10 && var10 >= var6) {
- var2.sendError(304);
- } else {
- this.doGet(var1, var2);
- }
- } else {
- this.doGet(var1, var2);
- }
- } else if (var3.equals("HEAD")) {
- long var4 = this.getLastModified(var1);
- this.maybeSetLastModified(var2, var4);
- this.doHead(var1, var2);
- } else if (var3.equals("POST")) {
- this.doPost(var1, var2);
- } else if (var3.equals("PUT")) {
- this.doPut(var1, var2);
- } else if (var3.equals("DELETE")) {
- this.doDelete(var1, var2);
- } else if (var3.equals("OPTIONS")) {
- this.doOptions(var1, var2);
- } else if (var3.equals("TRACE")) {
- this.doTrace(var1, var2);
- } else {
- var2.sendError(501, "Method '" + var3 + "' is not defined in RFC 2068");
- }
- }
-
- private void maybeSetLastModified(HttpServletResponse var1, long var2) {
- if (!var1.containsHeader("Last-Modified")) {
- if (var2 >= 0L) {
- var1.setDateHeader("Last-Modified", var2);
- }
-
- }
- }
-
- public void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException {
- HttpServletRequest var3;
- HttpServletResponse var4;
- try {
- var3 = (HttpServletRequest)var1;
- var4 = (HttpServletResponse)var2;
- } catch (ClassCastException var5) {
- throw new ServletException("non-HTTP request or response");
- }
-
- this.service(var3, var4);
- }
- }
-