tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ma...@apache.org
Subject cvs commit: jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters SavedRequestInputFilter.java
Date Sun, 22 May 2005 17:14:29 GMT
markt       2005/05/22 10:14:29

  Added:       http11/src/java/org/apache/coyote/http11/filters
                        SavedRequestInputFilter.java
  Log:
  Implement request body replay action.
  New input filter used to insert the request body.
  
  Revision  Changes    Path
  1.1                  jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java
  
  Index: SavedRequestInputFilter.java
  ===================================================================
  /*
   *  Copyright 1999-2005 The Apache Software Foundation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.coyote.http11.filters;
  
  import java.io.IOException;
  
  import org.apache.coyote.InputBuffer;
  import org.apache.coyote.http11.InputFilter;
  import org.apache.tomcat.util.buf.ByteChunk;
  
  /**
   * Input filter responsible for replaying the request body when restoring the
   * saved request after FORM authentication.
   */
  public class SavedRequestInputFilter implements InputFilter {
  
  	/**
       * The original request body.
  	 */
      protected ByteChunk input = null;
  
      /**
       * Create a new SavedRequestInputFilter.
       * 
       * @param input The saved request body to be replayed.
       */
      public SavedRequestInputFilter(ByteChunk input) {
          this.input = input;
      }
  
      /**
       * Read bytes.
       */
      public int doRead(ByteChunk chunk, org.apache.coyote.Request request)
              throws IOException {
          int writeLength = 0;
          
          if (chunk.getLimit() > 0 && chunk.getLimit() < input.getLength())
{
              writeLength = chunk.getLimit();
          } else {
          	writeLength = input.getLength();
          }
          
          input.substract(chunk.getBuffer(), 0, writeLength);
          chunk.setOffset(0);
          chunk.setEnd(writeLength);
          
          return writeLength;
      }
  
      /**
       * Set the content length on the request.
       */
      public void setRequest(org.apache.coyote.Request request) {
          request.setContentLength(input.getLength());
      }
  
      /**
       * Make the filter ready to process the next request.
       */
      public void recycle() {
          input = null;
      }
  
      /**
       * Return the name of the associated encoding; here, the value is null.
       */
      public ByteChunk getEncodingName() {
          return null;
      }
  
      /**
       * Set the next buffer in the filter pipeline (has no effect).
       */
      public void setBuffer(InputBuffer buffer) {
      }
  
      /**
       * End the current request (has no effect).
       */
      public long end() throws IOException {
          return 0;
      }
  
  }
  
  
  

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


Mime
View raw message