Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You 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.catalina.connector;
 
 import static org.jboss.web.CatalinaMessages.MESSAGES;
 
Coyote implementation of the buffred reader.

Author(s):
Remy Maucherat
 
 public class CoyoteReader
     extends BufferedReader {
 
 
     // -------------------------------------------------------------- Constants
 
 
     private static final char[] LINE_SEP = { '\r''\n' };
     private static final int MAX_LINE_LENGTH = 4096;
 
 
     // ----------------------------------------------------- Instance Variables
 
 
     protected InputBuffer ib;
 
 
     protected char[] lineBuffer = null;
 
 
     // ----------------------------------------------------------- Constructors
 
 
     public CoyoteReader(InputBuffer ib) {
         super(ib, 1);
         this. = ib;
     }
 
 
     // --------------------------------------------------------- Public Methods
 

    
Prevent cloning the facade.
 
     protected Object clone()
         throws CloneNotSupportedException {
         throw new CloneNotSupportedException();
     }
 
 
     // -------------------------------------------------------- Package Methods
 

    
Clear facade.
 
     void clear() {
          = null;
     }
 
 
     // --------------------------------------------------------- Reader Methods
 
 
     public void close()
         throws IOException {
         .close();
     }
 
 
     public int read()
         throws IOException {
         return .read();
     }
 
 
     public int read(char[] cbuf)
        throws IOException {
        return .read(cbuf, 0, cbuf.length);
    }
    public int read(char[] cbufint offint len)
        throws IOException {
        return .read(cbufofflen);
    }
    public long skip(long n)
        throws IOException {
        return .skip(n);
    }
    public boolean ready()
        throws IOException {
        return .ready();
    }
    public boolean markSupported() {
        return .markSupported();
    }
    public void mark(int readAheadLimit)
        throws IOException {
        // See BufferedReader#mark(int) JavaDoc
        if (readAheadLimit < 0) {
            throw .invalidReadAhead(readAheadLimit);
        }
        .mark(readAheadLimit);
    }
    public void reset()
        throws IOException {
        .reset();
    }
    public String readLine()
        throws IOException {
        if ( == null) {
             = new char[];
       }
        String result = null;
        int pos = 0;
        int end = -1;
        int skip = -1;
        StringBuilder aggregator = null;
        while (end < 0) {
            mark();
            while ((pos < ) && (end < 0)) {
                int nRead = read(pos - pos);
                if (nRead < 0) {
                    if (pos == 0 && aggregator == null) {
                        return null;
                    }
                    end = pos;
                    skip = pos;
                }
                for (int i = pos; (i < (pos + nRead)) && (end < 0); i++) {
                    if ([i] == [0]) {
                        end = i;
                        skip = i + 1;
                        char nextchar;
                        if (i == (pos + nRead - 1)) {
                            nextchar = (charread();
                        } else {
                            nextchar = [i+1];
                        }
                        if (nextchar == [1]) {
                            skip++;
                        }
                    } else if ([i] == [1]) {
                        end = i;
                        skip = i + 1;
                    }
                }
                if (nRead > 0) {
                    pos += nRead;
                }
            }
            if (end < 0) {
                if (aggregator == null) {
                    aggregator = new StringBuilder();
                }
                aggregator.append();
                pos = 0;
            } else {
                reset();
                skip(skip);
            }
        }
        if (aggregator == null) {
            result = new String(, 0, end);
        } else {
            aggregator.append(, 0, end);
            result = aggregator.toString();
        }
        return result;
    }
New to GrepCode? Check out our FAQ X