cvs: /php4/sapi/servlet servlet.java

From: Date: Sat, 01 Apr 2000 17:58:11 +0000
Subject: cvs: /php4/sapi/servlet servlet.java
Groups: php.version4 
Request: Send a blank email to php-version4+get-12993@lists.php.net to get a copy of this message
rubys Sat Apr 1 09:58:11 2000 EDT Modified files: /php4/sapi/servlet servlet.java Log: Accomodate back level (JSDK 2.0) implementations Index: php4/sapi/servlet/servlet.java diff -u php4/sapi/servlet/servlet.java:1.5 php4/sapi/servlet/servlet.java:1.6 --- php4/sapi/servlet/servlet.java:1.5 Thu Mar 9 05:07:24 2000 +++ php4/sapi/servlet/servlet.java Sat Apr 1 09:57:41 2000 @@ -24,6 +24,8 @@ import javax.servlet.*; import javax.servlet.http.*; +import java.lang.reflect.Method; + public class servlet extends HttpServlet { char slash=System.getProperty("file.separator").charAt(0); @@ -34,6 +36,7 @@ static int startup_count = 0; protected boolean display_source_mode = false; + private Method addHeader; /******************************************************************/ /* native methods */ @@ -78,6 +81,10 @@ } void header(String data) { + + // try to send the header using the most specific servlet API + // as possible (some servlet engines will add a content type + // header unless the setContentType method is called). try { if (data.startsWith("Content-type: ")) { response.setContentType(data.substring(data.indexOf(" ")+1)); @@ -86,22 +93,27 @@ } else { int colon = data.indexOf(": "); if (colon > 0) { - response.addHeader(data.substring(0,colon), - data.substring(colon+2)); + try { + addHeader.invoke(response, new Object[] + { data.substring(0,colon), data.substring(colon+2) } ); + } catch (Exception e) { + e.printStackTrace(System.err); + } } else { response.getWriter().println(data); } } } catch (IOException e) { - System.err.print(data); + e.printStackTrace(System.err); } + } void write(String data) { try { response.getWriter().print(data); } catch (IOException e) { - System.err.print(data); + e.printStackTrace(System.err); } } @@ -112,6 +124,24 @@ public void init(ServletConfig config) throws ServletException { super.init(config); if (0 == startup_count++) startup(); + + // try to find the addHeader method (added in the servlet API 2.2) + // otherwise settle for the setHeader method + try { + Class c = Class.forName("javax.servlet.http.HttpServletResponse"); + Method method[] = c.getDeclaredMethods(); + for (int i=0; i<method.length; i++) { + if (method[i].getName().equals("addHeader")) { + addHeader = method[i]; + break; + } + if (method[i].getName().equals("setHeader")) { + addHeader = method[i]; + } + } + } catch (Exception e) { + e.printStackTrace(System.err); + } } public void service(HttpServletRequest request, @@ -132,7 +162,7 @@ try { if (stream != null) stream.close(); } catch (IOException e) { - throw new ServletException(e); + throw new ServletException(e.toString()); } }

« previous php.version4 (#12993) next »