tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From billbar...@apache.org
Subject cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/modules/generators StaticInterceptor.java
Date Sat, 27 Apr 2002 03:45:19 GMT
billbarker    02/04/26 20:45:19

  Modified:    src/facade22/org/apache/tomcat/facade
                        HttpServletRequestFacade.java
               src/share/org/apache/tomcat/core Request.java
               src/share/org/apache/tomcat/modules/generators
                        StaticInterceptor.java
  Log:
  Move the DateFormatters from the Facade to the core Request.
  
  This makes them available for non-servlet Handlers (i.e. StaticInterceptor) as well.
  
  Fix for bug #8562.
  Reported By: Pierre OBLIN pierre.oblin@francetelecom.com
  
  Revision  Changes    Path
  1.33      +1 -17     jakarta-tomcat/src/facade22/org/apache/tomcat/facade/HttpServletRequestFacade.java
  
  Index: HttpServletRequestFacade.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/facade22/org/apache/tomcat/facade/HttpServletRequestFacade.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- HttpServletRequestFacade.java	22 Mar 2002 02:54:34 -0000	1.32
  +++ HttpServletRequestFacade.java	27 Apr 2002 03:45:18 -0000	1.33
  @@ -96,7 +96,6 @@
       ServletInputStreamFacade isFacade=new ServletInputStreamFacade();
       boolean isFacadeInitialized=false;
       BufferedReader reader=null;
  -    DateFormat []dateFormats;
       UEncoder uencoder;
   
       private boolean usingStream = false;
  @@ -111,13 +110,6 @@
   	isFacade.setRequest( request );
   	try {
   	    // we may create facades more often than requests
  -	    if( dateFormats==null ) {
  -		dateFormats=new DateFormat[] {
  -		    new SimpleDateFormat(DateTool.RFC1123_PATTERN, Locale.US),
  -		    new SimpleDateFormat(DateTool.rfc1036Pattern, Locale.US),
  -		    new SimpleDateFormat(DateTool.asctimePattern, Locale.US)
  -		};
  -	    }
   	    if( uencoder==null ) {
   		uencoder=new UEncoder();
   		uencoder.addSafeCharacter(';');
  @@ -216,15 +208,7 @@
        *  We delegate this to RequestUtil. ( adapter function )
        */
       public long getDateHeader(String name) {
  -	String value=request.getHeader( name );
  -	if( value==null) return -1;
  -
  -	long date=DateTool.parseDate(value,dateFormats);
  -	if( date==-1) {
  -	    String msg = sm.getString("httpDate.pe", value);
  -	    throw new IllegalArgumentException(msg);
  -	}
  -	return date;
  +	return request.getDateHeader( name );
       }
   
       public String getHeader(String name) {
  
  
  
  1.115     +26 -0     jakarta-tomcat/src/share/org/apache/tomcat/core/Request.java
  
  Index: Request.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Request.java,v
  retrieving revision 1.114
  retrieving revision 1.115
  diff -u -r1.114 -r1.115
  --- Request.java	21 Apr 2002 05:56:10 -0000	1.114
  +++ Request.java	27 Apr 2002 03:45:18 -0000	1.115
  @@ -75,6 +75,9 @@
   import java.io.CharConversionException;
   import java.util.Enumeration;
   import java.util.Hashtable;
  +import java.util.Locale;
  +import java.text.DateFormat;
  +import java.text.SimpleDateFormat;
   
   /**
    * This is a low-level, efficient representation of a server request. Most fields
  @@ -219,6 +222,7 @@
       protected Request parent;
       protected Request child;
   
  +    protected DateFormat []dateFormats = null;
       protected UDecoder urlDecoder;
       
       // Error handling support
  @@ -891,6 +895,28 @@
       }
   
       // -------------------- Facade for MimeHeaders
  +    /**
  +     * Utility method to parse dates.
  +     */
  +    public long getDateHeader(String name) {
  +	MessageBytes value=getMimeHeaders().getValue( name );
  +	if( value==null || value.isNull() ) return -1;
  +
  +	// By delaying until here, we don't have to create them on sub-requests
  +	if( dateFormats == null) {
  +	    dateFormats=new DateFormat[] {
  +		    new SimpleDateFormat(DateTool.RFC1123_PATTERN, Locale.US),
  +		    new SimpleDateFormat(DateTool.rfc1036Pattern, Locale.US),
  +		    new SimpleDateFormat(DateTool.asctimePattern, Locale.US)
  +		};
  +	}
  +	long date=DateTool.parseDate(value.toString(),dateFormats);
  +	if( date==-1) {
  +	    String msg = response.sm.getString("httpDate.pe", value);
  +	    throw new IllegalArgumentException(msg);
  +	}
  +	return date;
  +    }
       /** @deprecated
        */
       public Enumeration getHeaders(String name) {
  
  
  
  1.23      +7 -14     jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java
  
  Index: StaticInterceptor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- StaticInterceptor.java	27 Apr 2002 01:55:18 -0000	1.22
  +++ StaticInterceptor.java	27 Apr 2002 03:45:19 -0000	1.23
  @@ -335,21 +335,14 @@
   	File file = new File( absPath );
   	// If we are included, the If-Modified-Since isn't for us.
   	if( ! res.isIncluded() ) {
  -	    MessageBytes imsMB=req.getMimeHeaders().getValue("If-Modified-Since");
  -
  -	    if (imsMB != null) {
  -
  -		long date = imsMB.getTime();
  -		
  -		if ((file.lastModified() <= (date + 1000)) ) {
  -		    // The entity has not been modified since the date
  -		    // specified by the client. This is not an error case.
  -		    context.getContextManager().handleStatus( req, res, 304);
  -		    return;
  -		}
  -
  -
  +	    long date = req.getDateHeader("If-Modified-Since");
  +	    if ((file.lastModified() <= (date + 1000)) ) {
  +		// The entity has not been modified since the date
  +		// specified by the client. This is not an error case.
  +		context.getContextManager().handleStatus( req, res, 304);
  +		return;
   	    }
  +
   	}
   	if( debug>0) log( "After paranoic checks = " + absPath);
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@jakarta.apache.org>


Mime
View raw message