Author: kkolinko Date: Thu Nov 10 06:24:07 2011 New Revision: 1200181 URL: http://svn.apache.org/viewvc?rev=1200181&view=rev Log: Merged revision 1187753 from tomcat/trunk: Clean-up. No functional change. Part 7.
Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/C2BConverter.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/CharChunk.java Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java?rev=1200181&r1=1200180&r2=1200181&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java Thu Nov 10 06:24:07 2011 @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.tomcat.util.buf; import java.io.IOException; @@ -75,9 +74,9 @@ public final class ByteChunk implements * Same as java.nio.channel.ReadableByteChannel */ public static interface ByteInputChannel { - /** + /** * Read new bytes ( usually the internal conversion buffer ). - * The implementation is allowed to ignore the parameters, + * The implementation is allowed to ignore the parameters, * and mutate the chunk if it wishes to implement its own buffering. */ public int realReadBytes(byte cbuf[], int off, int len) @@ -87,7 +86,7 @@ public final class ByteChunk implements /** Same as java.nio.channel.WrittableByteChannel. */ public static interface ByteOutputChannel { - /** + /** * Send the bytes ( usually the internal conversion buffer ). * Expect 8k output if the buffer is full. */ @@ -99,10 +98,10 @@ public final class ByteChunk implements /** Default encoding used to convert to strings. It should be UTF8, as most standards seem to converge, but the servlet API requires - 8859_1, and this object is used mostly for servlets. + 8859_1, and this object is used mostly for servlets. */ public static final Charset DEFAULT_CHARSET; - + static { Charset c = null; try { @@ -130,7 +129,7 @@ public final class ByteChunk implements private ByteOutputChannel out = null; private boolean optimizedWrite=true; - + /** * Creates a new, uninitialized ByteChunk object. */ @@ -154,7 +153,7 @@ public final class ByteChunk implements public boolean isNull() { return ! isSet; // buff==null; } - + /** * Resets the message buff to an uninitialized state. */ @@ -175,7 +174,7 @@ public final class ByteChunk implements public void allocate( int initial, int limit ) { if( buff==null || buff.length < initial ) { buff=new byte[initial]; - } + } this.limit=limit; start=0; end=0; @@ -184,7 +183,7 @@ public final class ByteChunk implements /** * Sets the message bytes to the specified subarray of bytes. - * + * * @param b the ascii bytes * @param off the start offset of the bytes * @param len the length of the bytes @@ -238,7 +237,9 @@ public final class ByteChunk implements } public void setOffset(int off) { - if (end < off ) end=off; + if (end < off ) { + end=off; + } start=off; } @@ -260,7 +261,7 @@ public final class ByteChunk implements public void setLimit(int limit) { this.limit=limit; } - + public int getLimit() { return limit; } @@ -385,11 +386,13 @@ public final class ByteChunk implements throws IOException { if ((end - start) == 0) { - if (in == null) + if (in == null) { return -1; + } int n = in.realReadBytes( buff, 0, buff.length ); - if (n < 0) + if (n < 0) { return -1; + } } return (buff[start++] & 0xFF); @@ -400,11 +403,13 @@ public final class ByteChunk implements throws IOException { if ((end - start) == 0) { - if (in == null) + if (in == null) { return -1; + } int n = in.realReadBytes( buff, 0, buff.length ); - if (n < 0) + if (n < 0) { return -1; + } } int len = getLength(); @@ -418,11 +423,13 @@ public final class ByteChunk implements throws IOException { if ((end - start) == 0) { - if (in == null) + if (in == null) { return -1; + } int n = in.realReadBytes( buff, 0, buff.length ); - if (n < 0) + if (n < 0) { return -1; + } } int n = len; @@ -471,10 +478,13 @@ public final class ByteChunk implements } if( buff==null ) { - if( desiredSize < 256 ) desiredSize=256; // take a minimum + if( desiredSize < 256 ) + { + desiredSize=256; // take a minimum + } buff=new byte[desiredSize]; } - + // limit < buf.length ( the buffer is already big ) // or we already have space XXX if( desiredSize <= buff.length ) { @@ -484,22 +494,26 @@ public final class ByteChunk implements if( desiredSize < 2 * buff.length ) { newSize= buff.length * 2; if( limit >0 && - newSize > limit ) newSize=limit; + newSize > limit ) { + newSize=limit; + } tmp=new byte[newSize]; } else { newSize= buff.length * 2 + count ; if( limit > 0 && - newSize > limit ) newSize=limit; + newSize > limit ) { + newSize=limit; + } tmp=new byte[newSize]; } - + System.arraycopy(buff, start, tmp, 0, end-start); buff = tmp; tmp = null; end=end-start; start=0; } - + // -------------------- Conversion and getters -------------------- @Override @@ -511,7 +525,7 @@ public final class ByteChunk implements } return StringCache.toString(this); } - + public String toStringInternal() { if (charset == null) { charset = DEFAULT_CHARSET; @@ -544,7 +558,7 @@ public final class ByteChunk implements public boolean equals(String s) { // XXX ENCODING - this only works if encoding is UTF8-compat // ( ok for tomcat, where we compare ascii - header names, etc )!!! - + byte[] b = buff; int blen = end-start; if (b == null || blen != s.length()) { @@ -582,15 +596,18 @@ public final class ByteChunk implements public boolean equals( ByteChunk bb ) { return equals( bb.getBytes(), bb.getStart(), bb.getLength()); } - + public boolean equals( byte b2[], int off2, int len2) { byte b1[]=buff; - if( b1==null && b2==null ) return true; + if( b1==null && b2==null ) { + return true; + } int len=end-start; - if ( len2 != len || b1==null || b2==null ) + if ( len2 != len || b1==null || b2==null ) { return false; - + } + int off1 = start; while ( len-- > 0) { @@ -604,18 +621,20 @@ public final class ByteChunk implements public boolean equals( CharChunk cc ) { return equals( cc.getChars(), cc.getStart(), cc.getLength()); } - + public boolean equals( char c2[], int off2, int len2) { // XXX works only for enc compatible with ASCII/UTF !!! byte b1[]=buff; - if( c2==null && b1==null ) return true; - + if( c2==null && b1==null ) { + return true; + } + if (b1== null || c2==null || end-start != len2 ) { return false; } int off1 = start; int len=end-start; - + while ( len-- > 0) { if ( (char)b1[off1++] != c2[off2++]) { return false; @@ -656,8 +675,9 @@ public final class ByteChunk implements return false; } for (int i = start, j = 0; i < end && j < b2.length;) { - if (b1[i++] != b2[j++]) + if (b1[i++] != b2[j++]) { return false; + } } return true; } @@ -685,17 +705,20 @@ public final class ByteChunk implements public int indexOf( String src, int srcOff, int srcLen, int myOff ) { char first=src.charAt( srcOff ); - // Look for first char + // Look for first char int srcEnd = srcOff + srcLen; - + mainLoop: for( int i=myOff+start; i <= (end - srcLen); i++ ) { - if( buff[i] != first ) continue; + if( buff[i] != first ) { + continue; + } // found first char, now look for a match int myPos=i+1; for( int srcPos=srcOff + 1; srcPos< srcEnd;) { - if( buff[myPos++] != src.charAt( srcPos++ )) + if( buff[myPos++] != src.charAt( srcPos++ )) { continue mainLoop; + } } return i-start; // found it } @@ -704,7 +727,7 @@ public final class ByteChunk implements // -------------------- Hash code -------------------- - // normal hash. + // normal hash. public int hash() { return hashBytes( buff, start, end-start); } @@ -742,7 +765,7 @@ public final class ByteChunk implements * returned. * <br/> * NOTE: This only works for characters in the range 0-127. - * + * * @param c The character * @param starting The start position * @return The position of the first instance of the character or @@ -758,21 +781,22 @@ public final class ByteChunk implements * between the specified start and end. * <br/> * NOTE: This only works for characters in the range 0-127. - * + * * @param bytes The byte array to search * @param start The point to start searching from in the byte array * @param end The point to stop searching in the byte array - * @param c The character to search for + * @param c The character to search for * @return The position of the first instance of the character or -1 * if the character is not found. */ public static int indexOf(byte bytes[], int start, int end, char c) { int offset = start; - + while (offset < end) { byte b=bytes[offset]; - if (b == c) + if (b == c) { return offset; + } offset++; } return -1; @@ -781,11 +805,11 @@ public final class ByteChunk implements /** * Returns the first instance of the given byte in the byte array between * the specified start and end. - * + * * @param bytes The byte array to search * @param start The point to start searching from in the byte array * @param end The point to stop searching in the byte array - * @param b The byte to search for + * @param b The byte to search for * @return The position of the first instance of the byte or -1 if the * byte is not found. */ @@ -803,11 +827,11 @@ public final class ByteChunk implements /** * Returns the first instance of any of the given bytes in the byte array * between the specified start and end. - * + * * @param bytes The byte array to search * @param start The point to start searching from in the byte array * @param end The point to stop searching in the byte array - * @param b The array of bytes to search for + * @param b The array of bytes to search for * @return The position of the first instance of the byte or -1 if the * byte is not found. */ @@ -815,10 +839,11 @@ public final class ByteChunk implements int blen = b.length; int offset = start; while (offset < end) { - for (int i = 0; i < blen; i++) + for (int i = 0; i < blen; i++) { if (bytes[offset] == b[i]) { return offset; } + } offset++; } return -1; @@ -827,11 +852,11 @@ public final class ByteChunk implements /** * Returns the first instance of any byte that is not one of the given bytes * in the byte array between the specified start and end. - * + * * @param bytes The byte array to search * @param start The point to start searching from in the byte array * @param end The point to stop searching in the byte array - * @param b The list of bytes to search for + * @param b The list of bytes to search for * @return The position of the first instance a byte that is not * in the list of bytes to search for or -1 if no such byte * is found. @@ -840,7 +865,7 @@ public final class ByteChunk implements int blen = b.length; int offset = start; boolean found; - + while (offset < end) { found = true; for (int i = 0; i < blen; i++) { @@ -861,7 +886,7 @@ public final class ByteChunk implements /** * Convert specified String to a byte array. This ONLY WORKS for ascii, UTF * chars will be truncated. - * + * * @param value to convert to byte array * @return the byte array value */ Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/C2BConverter.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/C2BConverter.java?rev=1200181&r1=1200180&r2=1200181&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/C2BConverter.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/C2BConverter.java Thu Nov 10 06:24:07 2011 @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.tomcat.util.buf; import java.io.IOException; @@ -23,22 +22,22 @@ import java.io.OutputStreamWriter; import java.nio.charset.Charset; /** Efficient conversion of character to bytes. - * + * * This uses the standard JDK mechanism - a writer - but provides mechanisms * to recycle all the objects that are used. It is compatible with JDK1.1 and up, * ( nio is better, but it's not available even in 1.2 or 1.3 ) - * + * */ public final class C2BConverter { - + private static final org.apache.juli.logging.Log log= org.apache.juli.logging.LogFactory.getLog(C2BConverter.class ); - - private IntermediateOutputStream ios; - private WriteConvertor conv; + + private final IntermediateOutputStream ios; + private final WriteConvertor conv; private ByteChunk bb; - private String enc; - + private final String enc; + /** Create a converter, with bytes going to a byte buffer */ public C2BConverter(ByteChunk output, String encoding) throws IOException { @@ -103,13 +102,14 @@ public final class C2BConverter { */ public final void convert(MessageBytes mb ) throws IOException { int type=mb.getType(); - if( type==MessageBytes.T_BYTES ) + if( type==MessageBytes.T_BYTES ) { return; + } ByteChunk orig=bb; setByteChunk( mb.getByteChunk()); bb.recycle(); bb.allocate( 32, -1 ); - + if( type==MessageBytes.T_STR ) { convert( mb.getString() ); // System.out.println("XXX Converting " + mb.getString() ); @@ -119,11 +119,12 @@ public final class C2BConverter { charC.getOffset(), charC.getLength()); //System.out.println("XXX Converting " + mb.getCharChunk() ); } else { - if (log.isDebugEnabled()) + if (log.isDebugEnabled()) { log.debug("XXX unknowon type " + type ); + } } flushBuffer(); - //System.out.println("C2B: XXX " + bb.getBuffer() + bb.getLength()); + //System.out.println("C2B: XXX " + bb.getBuffer() + bb.getLength()); setByteChunk(orig); } @@ -142,13 +143,13 @@ public final class C2BConverter { /** * Special writer class, where close() is overridden. The default implementation - * would set byteOutputter to null, and the writer can't be recycled. + * would set byteOutputter to null, and the writer can't be recycled. * * Note that the flush method will empty the internal buffers _and_ call * flush on the output stream - that's why we use an intermediary output stream * that overrides flush(). The idea is to have full control: flushing the * char->byte converter should be independent of flushing the OutputStream. - * + * * When a WriteConverter is created, it'll allocate one or 2 byte buffers, * with a 8k size that can't be changed ( at least in JDK1.1 -> 1.4 ). It would * also allocate a ByteOutputter or equivalent - again some internal buffers. @@ -156,23 +157,23 @@ public final class C2BConverter { * It is essential to keep this object around and reuse it. You can use either * pools or per thread data - but given that in most cases a converter will be * needed for every thread and most of the time only 1 ( or 2 ) encodings will - * be used, it is far better to keep it per thread and eliminate the pool + * be used, it is far better to keep it per thread and eliminate the pool * overhead too. - * + * */ final class WriteConvertor extends OutputStreamWriter { // stream with flush() and close(). overridden. - private IntermediateOutputStream ios; - + private final IntermediateOutputStream ios; + // Has a private, internal byte[8192] - + /** Create a converter. */ public WriteConvertor(IntermediateOutputStream out, Charset charset) { super(out, charset); ios=out; } - + /** Overridden - will do nothing but reset internal state. */ @Override @@ -180,23 +181,23 @@ public final class C2BConverter { // NOTHING // Calling super.close() would reset out and cb. } - + /** * Flush the characters only - */ + */ @Override public final void flush() throws IOException { // Will flushBuffer and out() - // flushBuffer put any remaining chars in the byte[] + // flushBuffer put any remaining chars in the byte[] super.flush(); } - + @Override public final void write(char cbuf[], int off, int len) throws IOException { // will do the conversion and call write on the output stream super.write( cbuf, off, len ); } - + /** Reset the buffer */ public final void recycle() { @@ -209,36 +210,36 @@ public final class C2BConverter { } ios.enable(); } - + } /** Special output stream where close() is overridden, so super.close() is never called. - + This allows recycling. It can also be disabled, so callbacks will not be called if recycling the converter and if data was not flushed. */ final class IntermediateOutputStream extends OutputStream { private ByteChunk tbuff; private boolean enabled=true; - + public IntermediateOutputStream(ByteChunk tbuff) { this.tbuff=tbuff; } - + @Override public final void close() throws IOException { // shouldn't be called - we filter it out in writer throw new IOException("close() called - shouldn't happen "); } - + @Override public final void flush() throws IOException { // nothing - write will go directly to the buffer, // we don't keep any state } - + @Override public final void write(byte cbuf[], int off, int len) throws IOException { // will do the conversion and call write on the output stream @@ -246,7 +247,7 @@ final class IntermediateOutputStream ext tbuff.append( cbuf, off, len ); } } - + @Override public final void write( int i ) throws IOException { throw new IOException("write( int ) called - shouldn't happen "); @@ -257,7 +258,7 @@ final class IntermediateOutputStream ext void setByteChunk( ByteChunk bb ) { tbuff=bb; } - + /** Temporary disable - this is used to recycle the converter without * generating an output if the buffers were not flushed */ Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/CharChunk.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/CharChunk.java?rev=1200181&r1=1200180&r2=1200181&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/CharChunk.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/CharChunk.java Thu Nov 10 06:24:07 2011 @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.tomcat.util.buf; import java.io.IOException; @@ -25,7 +24,7 @@ import java.io.Serializable; * the easiest way to manipulate chars ( search, substrings, etc), * it is known to not be the most efficient solution - Strings are * designed as immutable and secure objects. - * + * * @author d...@sun.com * @author James Todd [go...@sun.com] * @author Costin Manolache @@ -37,9 +36,9 @@ public final class CharChunk implements // Input interface, used when the buffer is emptied. public static interface CharInputChannel { - /** + /** * Read new bytes ( usually the internal conversion buffer ). - * The implementation is allowed to ignore the parameters, + * The implementation is allowed to ignore the parameters, * and mutate the chunk if it wishes to implement its own buffering. */ public int realReadChars(char cbuf[], int off, int len) @@ -56,15 +55,15 @@ public final class CharChunk implements public void realWriteChars(char cbuf[], int off, int len) throws IOException; } - - // -------------------- + + // -------------------- // char[] private char buff[]; private int start; private int end; - private boolean isSet=false; // XXX + private boolean isSet=false; // XXX // -1: grow indefinitely // maximum amount to be cached @@ -72,7 +71,7 @@ public final class CharChunk implements private CharInputChannel in = null; private CharOutputChannel out = null; - + private boolean optimizedWrite=true; /** @@ -86,7 +85,7 @@ public final class CharChunk implements } // -------------------- - + public CharChunk getClone() { try { return (CharChunk)this.clone(); @@ -96,10 +95,12 @@ public final class CharChunk implements } public boolean isNull() { - if( end > 0 ) return false; - return !isSet; //XXX + if( end > 0 ) { + return false; + } + return !isSet; //XXX } - + /** * Resets the message bytes to an uninitialized state. */ @@ -148,7 +149,7 @@ public final class CharChunk implements public void setLimit(int limit) { this.limit=limit; } - + public int getLimit() { return limit; } @@ -169,17 +170,17 @@ public final class CharChunk implements this.out=out; } - // compat + // compat public char[] getChars() { return getBuffer(); } - + public char[] getBuffer() { return buff; } - + /** * Returns the start offset of the bytes. * For output this is the end of the buffer. @@ -187,7 +188,7 @@ public final class CharChunk implements public int getStart() { return start; } - + public int getOffset() { return start; } @@ -216,7 +217,7 @@ public final class CharChunk implements } // -------------------- Adding data -------------------- - + public void append( char b ) throws IOException { @@ -228,7 +229,7 @@ public final class CharChunk implements } buff[end++]=b; } - + public void append( CharChunk src ) throws IOException { @@ -258,13 +259,13 @@ public final class CharChunk implements out.realWriteChars( src, off, len ); return; } - + // if we have limit and we're below if( len <= limit - end ) { // makeSpace will grow the buffer to the limit, // so we have space System.arraycopy( src, off, buff, end, len ); - + end+=len; return; } @@ -273,7 +274,7 @@ public final class CharChunk implements // buffer // the buffer is already at ( or bigger than ) limit - + // Optimization: // If len-avail < length ( i.e. after we fill the buffer with // what we can, the remaining will fit in the buffer ) we'll just @@ -289,17 +290,17 @@ public final class CharChunk implements int avail=limit-end; System.arraycopy(src, off, buff, end, avail); end += avail; - + flushBuffer(); - + System.arraycopy(src, off+avail, buff, end, len - avail); end+= len - avail; - + } else { // len > buf.length + avail // long write - flush the buffer and write the rest // directly from source flushBuffer(); - + out.realWriteChars( src, off, len ); } } @@ -331,8 +332,9 @@ public final class CharChunk implements sb.getChars( sbOff, sbOff+d, buff, end); sbOff += d; end += d; - if (end >= limit) + if (end >= limit) { flushBuffer(); + } } } @@ -341,12 +343,14 @@ public final class CharChunk implements public void append(String s) throws IOException { append(s, 0, s.length()); } - + /** Append a string to the buffer */ public void append(String s, int off, int len) throws IOException { - if (s==null) return; - + if (s==null) { + return; + } + // will grow, up to limit makeSpace( len ); @@ -365,22 +369,25 @@ public final class CharChunk implements s.getChars( sOff, sOff+d, buff, end); sOff += d; end += d; - if (end >= limit) + if (end >= limit) { flushBuffer(); + } } } - + // -------------------- Removing data from the buffer -------------------- public int substract() throws IOException { if ((end - start) == 0) { - if (in == null) + if (in == null) { return -1; + } int n = in.realReadChars(buff, end, buff.length - end); - if (n < 0) + if (n < 0) { return -1; + } } return (buff[start++]); @@ -391,11 +398,13 @@ public final class CharChunk implements throws IOException { if ((end - start) == 0) { - if (in == null) + if (in == null) { return -1; + } int n = in.realReadChars( buff, end, buff.length - end); - if (n < 0) + if (n < 0) { return -1; + } } int len = getLength(); @@ -409,11 +418,13 @@ public final class CharChunk implements throws IOException { if ((end - start) == 0) { - if (in == null) + if (in == null) { return -1; + } int n = in.realReadChars( buff, end, buff.length - end); - if (n < 0) + if (n < 0) { return -1; + } } int n = len; @@ -456,7 +467,10 @@ public final class CharChunk implements } if( buff==null ) { - if( desiredSize < 256 ) desiredSize=256; // take a minimum + if( desiredSize < 256 ) + { + desiredSize=256; // take a minimum + } buff=new char[desiredSize]; } @@ -469,20 +483,24 @@ public final class CharChunk implements if( desiredSize < 2 * buff.length ) { newSize= buff.length * 2; if( limit >0 && - newSize > limit ) newSize=limit; + newSize > limit ) { + newSize=limit; + } tmp=new char[newSize]; } else { newSize= buff.length * 2 + count ; if( limit > 0 && - newSize > limit ) newSize=limit; + newSize > limit ) { + newSize=limit; + } tmp=new char[newSize]; } - + System.arraycopy(buff, 0, tmp, 0, end); buff = tmp; tmp = null; } - + // -------------------- Conversion and getters -------------------- @Override @@ -494,7 +512,7 @@ public final class CharChunk implements } return StringCache.toString(this); } - + public String toStringInternal() { return new String(buff, start, end-start); } @@ -504,7 +522,7 @@ public final class CharChunk implements return Ascii.parseInt(buff, start, end-start); } - + // -------------------- equals -------------------- /** @@ -553,8 +571,10 @@ public final class CharChunk implements public boolean equals(char b2[], int off2, int len2) { char b1[]=buff; - if( b1==null && b2==null ) return true; - + if( b1==null && b2==null ) { + return true; + } + if (b1== null || b2==null || end-start != len2) { return false; } @@ -570,14 +590,16 @@ public final class CharChunk implements public boolean equals(byte b2[], int off2, int len2) { char b1[]=buff; - if( b2==null && b1==null ) return true; + if( b2==null && b1==null ) { + return true; + } if (b1== null || b2==null || end-start != len2) { return false; } int off1 = start; int len=end-start; - + while ( len-- > 0) { if ( b1[off1++] != (char)b2[off2++]) { return false; @@ -585,7 +607,7 @@ public final class CharChunk implements } return true; } - + /** * Returns true if the message bytes starts with the specified string. * @param s the string @@ -604,7 +626,7 @@ public final class CharChunk implements } return true; } - + /** * Returns true if the message bytes starts with the specified string. * @param s the string @@ -623,11 +645,11 @@ public final class CharChunk implements } return true; } - + // -------------------- Hash code -------------------- - // normal hash. + // normal hash. public int hash() { int code=0; for (int i = start; i < start + end-start; i++) { @@ -648,7 +670,7 @@ public final class CharChunk implements public int indexOf(char c) { return indexOf( c, start); } - + /** * Returns true if the message bytes starts with the specified string. * @param c the character @@ -662,28 +684,35 @@ public final class CharChunk implements { while( off < cend ) { char b=chars[off]; - if( b==qq ) + if( b==qq ) { return off; + } off++; } return -1; } - + public int indexOf( String src, int srcOff, int srcLen, int myOff ) { char first=src.charAt( srcOff ); - // Look for first char + // Look for first char int srcEnd = srcOff + srcLen; - + for( int i=myOff+start; i <= (end - srcLen); i++ ) { - if( buff[i] != first ) continue; + if( buff[i] != first ) { + continue; + } // found first char, now look for a match int myPos=i+1; for( int srcPos=srcOff + 1; srcPos< srcEnd;) { - if( buff[myPos++] != src.charAt( srcPos++ )) + if( buff[myPos++] != src.charAt( srcPos++ )) { break; - if( srcPos==srcEnd ) return i-start; // found it + } + if( srcPos==srcEnd ) + { + return i-start; // found it + } } } return -1; @@ -691,7 +720,9 @@ public final class CharChunk implements // -------------------- utils private int min(int a, int b) { - if (a < b) return a; + if (a < b) { + return a; + } return b; } @@ -719,5 +750,5 @@ public final class CharChunk implements public int length() { return end - start; } - + } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org