You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@locus.apache.org on 2000/02/01 22:39:40 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/service/http HttpRequestAdapter.java
costin 00/02/01 13:39:40
Modified: src/share/org/apache/tomcat/core
HttpServletResponseFacade.java RequestImpl.java
Response.java ResponseImpl.java
src/share/org/apache/tomcat/request FixHeaders.java
SessionInterceptor.java
src/share/org/apache/tomcat/service/http
HttpRequestAdapter.java
Log:
- Removed "error" methods from Response interface, the methods are just
re-directs to the Error servlet ( the code is in ResponseFacade)
- Removed "systemCookies" - the only system cookie was the session id,
and it's simpler to use the session id property ( usefull for URL rewriting
too). SessionInterceptor is now responsable for setting the header ( in
"beforeBody" ) - that allow non-cookie based session managers to work
without hardcoded cookie code in Request.
Revision Changes Path
1.3 +20 -6 jakarta-tomcat/src/share/org/apache/tomcat/core/HttpServletResponseFacade.java
Index: HttpServletResponseFacade.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/HttpServletResponseFacade.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- HttpServletResponseFacade.java 2000/02/01 07:37:36 1.2
+++ HttpServletResponseFacade.java 2000/02/01 21:39:38 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/HttpServletResponseFacade.java,v 1.2 2000/02/01 07:37:36 costin Exp $
- * $Revision: 1.2 $
- * $Date: 2000/02/01 07:37:36 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/HttpServletResponseFacade.java,v 1.3 2000/02/01 21:39:38 costin Exp $
+ * $Revision: 1.3 $
+ * $Date: 2000/02/01 21:39:38 $
*
* ====================================================================
*
@@ -151,11 +151,24 @@
}
public void sendError(int sc) throws IOException {
- response.sendError(sc, "No detailed message");
+ sendError(sc, "No detailed message");
}
public void sendError(int sc, String msg) throws IOException {
- response.sendError(sc, msg);
+ setStatus( sc );
+ Request request=response.getRequest();
+ request.setAttribute("javax.servlet.error.status_code",
+ String.valueOf(sc));
+ request.setAttribute("javax.servlet.error.message", msg);
+
+ // XXX need to customize it
+ Servlet errorP=new org.apache.tomcat.servlets.DefaultErrorPage();
+ try {
+ errorP.service(request.getFacade(),this);
+ } catch (ServletException ex ) {
+ // shouldn't happen!
+ ex.printStackTrace();
+ }
}
public void sendRedirect(String location)
@@ -165,7 +178,8 @@
String msg = sm.getString("hsrf.redirect.iae");
throw new IllegalArgumentException(msg);
}
- response.sendRedirect(location);
+ sendError(HttpServletResponse.SC_MOVED_TEMPORARILY,
+ location);
}
public void setContentLength(int len) {
1.11 +5 -10 jakarta-tomcat/src/share/org/apache/tomcat/core/RequestImpl.java
Index: RequestImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestImpl.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- RequestImpl.java 2000/02/01 07:37:36 1.10
+++ RequestImpl.java 2000/02/01 21:39:38 1.11
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestImpl.java,v 1.10 2000/02/01 07:37:36 costin Exp $
- * $Revision: 1.10 $
- * $Date: 2000/02/01 07:37:36 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestImpl.java,v 1.11 2000/02/01 21:39:38 costin Exp $
+ * $Revision: 1.11 $
+ * $Date: 2000/02/01 21:39:38 $
*
* ====================================================================
*
@@ -424,13 +424,8 @@
// SessionManager is just a repository and doesn't deal with
// request internals.
// hardcoded - will change!
- Cookie cookie = new Cookie(Constants.SESSION_COOKIE_NAME,
- reqSessionId);
- cookie.setMaxAge(-1);
- cookie.setPath("/");
- cookie.setVersion(1);
- response.addSystemCookie(cookie);
-
+ response.setSessionId( reqSessionId );
+
return serverSession;
}
1.13 +21 -10 jakarta-tomcat/src/share/org/apache/tomcat/core/Response.java
Index: Response.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Response.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Response.java 2000/02/01 07:37:36 1.12
+++ Response.java 2000/02/01 21:39:38 1.13
@@ -137,13 +137,12 @@
public void addCookie(Cookie cookie) ;
- public void addSystemCookie(Cookie cookie) ;
-
public Enumeration getCookies();
- public Enumeration getSystemCookies();
-
// -------------------- Response properties --------------------
+ // Note: headers are not set when you invoke the methods, but
+ // later, when final fixHeaders happens ( before sending the body )
+
public Locale getLocale() ;
public void setLocale(Locale locale) ;
@@ -152,6 +151,8 @@
*/
public String getCharacterEncoding() ;
+ /** Set content type - this might also set encoding, if specified
+ */
public void setContentType(String contentType) ;
public String getContentType();
@@ -163,20 +164,30 @@
public void setStatus(int status);
public int getStatus() ;
-
- // -------------------- Error --------------------
- // XXX, not needed, can be in Facade!!
- public void sendError(int sc, String msg) throws IOException ;
-
- public void sendRedirect(String location) throws IOException ;
+ /** Will set the session id. The session interceptor might
+ * process it and add a Cookie header, and it can be used to
+ * rewrite URLs.
+ * This replace "system cookies" ( it was the only use for them )
+ */
+ public void setSessionId(String sId );
+
+ public String getSessionId( );
+
// -------------------- Internal methods --------------------
+ /** One-to-one with Facade.
+ * You can use HttpResponseFacade.
+ */
public HttpServletResponseFacade getFacade() ;
+ /** One-to-one relation with Request
+ */
public void setRequest(Request request) ;
public Request getRequest() ;
+ /** Response objects will be pool-able
+ */
public void recycle() ;
1.11 +10 -30 jakarta-tomcat/src/share/org/apache/tomcat/core/ResponseImpl.java
Index: ResponseImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ResponseImpl.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ResponseImpl.java 2000/02/01 07:37:36 1.10
+++ ResponseImpl.java 2000/02/01 21:39:39 1.11
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ResponseImpl.java,v 1.10 2000/02/01 07:37:36 costin Exp $
- * $Revision: 1.10 $
- * $Date: 2000/02/01 07:37:36 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ResponseImpl.java,v 1.11 2000/02/01 21:39:39 costin Exp $
+ * $Revision: 1.11 $
+ * $Date: 2000/02/01 21:39:39 $
*
* ====================================================================
*
@@ -85,10 +85,10 @@
protected Request request;
protected HttpServletResponseFacade responseFacade;
protected Vector userCookies = new Vector();
- protected Vector systemCookies = new Vector();
protected String contentType = Constants.ContentType.Default;
protected String contentLanguage = null;
protected String characterEncoding = Constants.CharacterEncoding.Default;
+ protected String sessionId;
protected int contentLength = -1;
protected int status = 200;
private Locale locale = new Locale(Constants.LOCALE_DEFAULT, "");
@@ -130,7 +130,6 @@
public void recycle() {
userCookies.removeAllElements();
- systemCookies.removeAllElements();
contentType = Constants.ContentType.Default;
locale = new Locale(Constants.LOCALE_DEFAULT, "");
characterEncoding = Constants.CharacterEncoding.Default;
@@ -139,6 +138,7 @@
headers.clear();
usingWriter = false;
usingStream = false;
+ sessionId=null;
writer=null;
out.recycle();
started = false;
@@ -300,14 +300,14 @@
return userCookies.elements();
}
- public Enumeration getSystemCookies() {
- return systemCookies.elements();
+ public void setSessionId( String id ) {
+ sessionId=id;
}
- public void addSystemCookie(Cookie cookie) {
- systemCookies.addElement(cookie);
+ public String getSessionId() {
+ return sessionId;
}
-
+
public Locale getLocale() {
return locale;
}
@@ -376,26 +376,6 @@
return status;
}
- public void sendError(int sc, String msg) throws IOException {
- this.status = sc;
- request.setAttribute("javax.servlet.error.status_code",
- String.valueOf(sc));
- request.setAttribute("javax.servlet.error.message", msg);
-
- // XXX need to customize it
- Servlet errorP=new org.apache.tomcat.servlets.DefaultErrorPage();
- try {
- errorP.service(request.getFacade(),getFacade());
- } catch (ServletException ex ) {
- // shouldn't happen!
- ex.printStackTrace();
- }
- }
-
- public void sendRedirect(String location) throws IOException {
- sendError(HttpServletResponse.SC_MOVED_TEMPORARILY,
- location);
- }
/** Set the response status
*/
1.2 +1 -18 jakarta-tomcat/src/share/org/apache/tomcat/request/FixHeaders.java
Index: FixHeaders.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/request/FixHeaders.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FixHeaders.java 2000/02/01 07:37:38 1.1
+++ FixHeaders.java 2000/02/01 21:39:39 1.2
@@ -107,25 +107,8 @@
response.setHeader("Content-Length", Integer.toString(contentLength));
}
- // write cookies
- Enumeration cookieEnum = null;
- cookieEnum = response.getSystemCookies();
- while (cookieEnum.hasMoreElements()) {
- Cookie c = (Cookie)cookieEnum.nextElement();
- response.addHeader( CookieTools.getCookieHeaderName(c),
- CookieTools.getCookieHeaderValue(c));
- if( c.getVersion() == 1 ) {
- // add a version 0 header too.
- // XXX what if the user set both headers??
- Cookie c0 = (Cookie)c.clone();
- c0.setVersion(0);
- response.addHeader( CookieTools.getCookieHeaderName(c0),
- CookieTools.getCookieHeaderValue(c0));
- }
- }
-
// XXX duplicated code, ugly
- cookieEnum = response.getCookies();
+ Enumeration cookieEnum = response.getCookies();
while (cookieEnum.hasMoreElements()) {
Cookie c = (Cookie)cookieEnum.nextElement();
response.addHeader( CookieTools.getCookieHeaderName(c),
1.6 +16 -0 jakarta-tomcat/src/share/org/apache/tomcat/request/SessionInterceptor.java
Index: SessionInterceptor.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/request/SessionInterceptor.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SessionInterceptor.java 2000/02/01 07:37:38 1.5
+++ SessionInterceptor.java 2000/02/01 21:39:39 1.6
@@ -116,6 +116,22 @@
}
public int beforeBody( Request rrequest, Response response ) {
+ String reqSessionId = response.getSessionId();
+ if( reqSessionId==null)
+ return 0;
+
+ Cookie cookie = new Cookie("JSESSIONID",
+ reqSessionId);
+ cookie.setMaxAge(-1);
+ cookie.setPath("/");
+ cookie.setVersion(1);
+
+ response.addHeader( CookieTools.getCookieHeaderName(cookie),
+ CookieTools.getCookieHeaderValue(cookie));
+ cookie.setVersion(0);
+ response.addHeader( CookieTools.getCookieHeaderName(cookie),
+ CookieTools.getCookieHeaderValue(cookie));
+
return 0;
}
1.6 +4 -4 jakarta-tomcat/src/share/org/apache/tomcat/service/http/HttpRequestAdapter.java
Index: HttpRequestAdapter.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/service/http/HttpRequestAdapter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- HttpRequestAdapter.java 2000/01/15 23:30:26 1.5
+++ HttpRequestAdapter.java 2000/02/01 21:39:40 1.6
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/service/http/HttpRequestAdapter.java,v 1.5 2000/01/15 23:30:26 costin Exp $
- * $Revision: 1.5 $
- * $Date: 2000/01/15 23:30:26 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/service/http/HttpRequestAdapter.java,v 1.6 2000/02/01 21:39:40 costin Exp $
+ * $Revision: 1.6 $
+ * $Date: 2000/02/01 21:39:40 $
*
* ====================================================================
*
@@ -228,7 +228,7 @@
if (requestErrorCode != 0) {
try {
- response.sendError(requestErrorCode, msg);
+ response.getFacade().sendError(requestErrorCode, msg);
} catch (IOException ioe) {
}