You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2010/05/20 20:16:34 UTC
svn commit: r946740 - in
/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf: B2CConverter.java
UDecoder.java
Author: kkolinko
Date: Thu May 20 18:16:34 2010
New Revision: 946740
URL: http://svn.apache.org/viewvc?rev=946740&view=rev
Log:
CTR: Tabs to 8 spaces. No functional change.
Technically, it is a merge of r451510 and r519362 from tc5.5.x.
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/UDecoder.java
Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java?rev=946740&r1=946739&r2=946740&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java Thu May 20 18:16:34 2010
@@ -50,10 +50,10 @@ public class B2CConverter {
/** Create a converter, with bytes going to a byte buffer
*/
public B2CConverter(String encoding)
- throws IOException
+ throws IOException
{
- this.encoding=encoding;
- reset();
+ this.encoding=encoding;
+ reset();
}
@@ -61,7 +61,7 @@ public class B2CConverter {
* The encoding remain in effect, the internal buffers remain allocated.
*/
public void recycle() {
- conv.recycle();
+ conv.recycle();
}
static final int BUFFER_SIZE=8192;
@@ -71,10 +71,10 @@ public class B2CConverter {
* @deprecated
*/
public void convert( ByteChunk bb, CharChunk cb )
- throws IOException
+ throws IOException
{
- // Set the ByteChunk as input to the Intermediate reader
- convert(bb, cb, cb.getBuffer().length - cb.getEnd());
+ // Set the ByteChunk as input to the Intermediate reader
+ convert(bb, cb, cb.getBuffer().length - cb.getEnd());
}
@@ -82,39 +82,39 @@ public class B2CConverter {
throws IOException
{
iis.setByteChunk( bb );
- try {
- // read from the reader
- int bbLengthBeforeRead = 0;
- while( limit > 0 ) { // conv.ready() ) {
+ try {
+ // read from the reader
+ int bbLengthBeforeRead = 0;
+ while( limit > 0 ) { // conv.ready() ) {
int size = limit < BUFFER_SIZE ? limit : BUFFER_SIZE;
- bbLengthBeforeRead = bb.getLength();
- int cnt=conv.read( result, 0, size );
- if( cnt <= 0 ) {
- // End of stream ! - we may be in a bad state
- if( debug>0)
- log( "EOF" );
- return;
- }
- if( debug > 1 )
- log("Converted: " + new String( result, 0, cnt ));
- cb.append( result, 0, cnt );
+ bbLengthBeforeRead = bb.getLength();
+ int cnt=conv.read( result, 0, size );
+ if( cnt <= 0 ) {
+ // End of stream ! - we may be in a bad state
+ if( debug>0)
+ log( "EOF" );
+ return;
+ }
+ if( debug > 1 )
+ log("Converted: " + new String( result, 0, cnt ));
+ cb.append( result, 0, cnt );
limit = limit - (bbLengthBeforeRead - bb.getLength());
- }
- } catch( IOException ex) {
- if( debug>0)
- log( "Reseting the converter " + ex.toString() );
- reset();
- throw ex;
- }
+ }
+ } catch( IOException ex) {
+ if( debug>0)
+ log( "Reseting the converter " + ex.toString() );
+ reset();
+ throw ex;
+ }
}
public void reset()
- throws IOException
+ throws IOException
{
- // destroy the reader/iis
- iis=new IntermediateInputStream();
- conv=new ReadConvertor( iis, encoding );
+ // destroy the reader/iis
+ iis=new IntermediateInputStream();
+ conv=new ReadConvertor( iis, encoding );
}
private final int debug=0;
@@ -135,45 +135,45 @@ public class B2CConverter {
private static String decodeString(ByteChunk mb, String enc)
- throws IOException
+ throws IOException
{
- byte buff=mb.getBuffer();
- int start=mb.getStart();
- int end=mb.getEnd();
- if( useNewString ) {
- if( enc==null) enc="UTF8";
- return new String( buff, start, end-start, enc );
- }
- B2CConverter b2c=null;
- if( useSpecialDecoders &&
- (enc==null || "UTF8".equalsIgnoreCase(enc))) {
- if( utfD==null ) utfD=new UTF8Decoder();
- b2c=utfD;
- }
- if(decoders == null ) decoders=new Hashtable();
- if( enc==null ) enc="UTF8";
- b2c=(B2CConverter)decoders.get( enc );
- if( b2c==null ) {
- if( useSpecialDecoders ) {
- if( "UTF8".equalsIgnoreCase( enc ) ) {
- b2c=new UTF8Decoder();
- }
- }
- if( b2c==null )
- b2c=new B2CConverter( enc );
- decoders.put( enc, b2c );
- }
- if( conversionBuf==null ) conversionBuf=new CharChunk(1024);
-
- try {
- conversionBuf.recycle();
- b2c.convert( this, conversionBuf );
- //System.out.println("XXX 1 " + conversionBuf );
- return conversionBuf.toString();
- } catch( IOException ex ) {
- ex.printStackTrace();
- return null;
- }
+ byte buff=mb.getBuffer();
+ int start=mb.getStart();
+ int end=mb.getEnd();
+ if( useNewString ) {
+ if( enc==null) enc="UTF8";
+ return new String( buff, start, end-start, enc );
+ }
+ B2CConverter b2c=null;
+ if( useSpecialDecoders &&
+ (enc==null || "UTF8".equalsIgnoreCase(enc))) {
+ if( utfD==null ) utfD=new UTF8Decoder();
+ b2c=utfD;
+ }
+ if(decoders == null ) decoders=new Hashtable();
+ if( enc==null ) enc="UTF8";
+ b2c=(B2CConverter)decoders.get( enc );
+ if( b2c==null ) {
+ if( useSpecialDecoders ) {
+ if( "UTF8".equalsIgnoreCase( enc ) ) {
+ b2c=new UTF8Decoder();
+ }
+ }
+ if( b2c==null )
+ b2c=new B2CConverter( enc );
+ decoders.put( enc, b2c );
+ }
+ if( conversionBuf==null ) conversionBuf=new CharChunk(1024);
+
+ try {
+ conversionBuf.recycle();
+ b2c.convert( this, conversionBuf );
+ //System.out.println("XXX 1 " + conversionBuf );
+ return conversionBuf.toString();
+ } catch( IOException ex ) {
+ ex.printStackTrace();
+ return null;
+ }
}
*/
@@ -195,24 +195,24 @@ final class ReadConvertor extends Input
/** Create a converter.
*/
public ReadConvertor( IntermediateInputStream in, String enc )
- throws UnsupportedEncodingException
+ throws UnsupportedEncodingException
{
- super( in, enc );
- iis=in;
+ super( in, enc );
+ iis=in;
}
/** Overriden - will do nothing but reset internal state.
*/
public final void close() throws IOException {
- // NOTHING
- // Calling super.close() would reset out and cb.
+ // NOTHING
+ // Calling super.close() would reset out and cb.
}
public final int read(char cbuf[], int off, int len)
- throws IOException
+ throws IOException
{
- // will do the conversion and call write on the output stream
- return super.read( cbuf, off, len );
+ // will do the conversion and call write on the output stream
+ return super.read( cbuf, off, len );
}
/** Reset the buffer
@@ -243,16 +243,16 @@ final class IntermediateInputStream exte
}
public final void close() throws IOException {
- // shouldn't be called - we filter it out in writer
- throw new IOException("close() called - shouldn't happen ");
+ // shouldn't be called - we filter it out in writer
+ throw new IOException("close() called - shouldn't happen ");
}
public final int read(byte cbuf[], int off, int len) throws IOException {
- return bc.substract(cbuf, off, len);
+ return bc.substract(cbuf, off, len);
}
public final int read() throws IOException {
- return bc.substract();
+ return bc.substract();
}
// -------------------- Internal methods --------------------
Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/UDecoder.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/UDecoder.java?rev=946740&r1=946739&r2=946740&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/UDecoder.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/buf/UDecoder.java Thu May 20 18:16:34 2010
@@ -52,53 +52,53 @@ public final class UDecoder {
/** URLDecode, will modify the source.
*/
public void convert( ByteChunk mb, boolean query )
- throws IOException
+ throws IOException
{
- int start=mb.getOffset();
- byte buff[]=mb.getBytes();
- int end=mb.getEnd();
+ int start=mb.getOffset();
+ byte buff[]=mb.getBytes();
+ int end=mb.getEnd();
- int idx= ByteChunk.indexOf( buff, start, end, '%' );
+ int idx= ByteChunk.indexOf( buff, start, end, '%' );
int idx2=-1;
if( query )
idx2= ByteChunk.indexOf( buff, start, end, '+' );
- if( idx<0 && idx2<0 ) {
- return;
- }
-
- // idx will be the smallest positive inxes ( first % or + )
- if( idx2 >= 0 && idx2 < idx ) idx=idx2;
- if( idx < 0 ) idx=idx2;
+ if( idx<0 && idx2<0 ) {
+ return;
+ }
+
+ // idx will be the smallest positive inxes ( first % or + )
+ if( idx2 >= 0 && idx2 < idx ) idx=idx2;
+ if( idx < 0 ) idx=idx2;
boolean noSlash = !(ALLOW_ENCODED_SLASH || query);
- for( int j=idx; j<end; j++, idx++ ) {
- if( buff[ j ] == '+' && query) {
- buff[idx]= (byte)' ' ;
- } else if( buff[ j ] != '%' ) {
- buff[idx]= buff[j];
- } else {
- // read next 2 digits
- if( j+2 >= end ) {
- throw new CharConversionException("EOF");
- }
- byte b1= buff[j+1];
- byte b2=buff[j+2];
- if( !isHexDigit( b1 ) || ! isHexDigit(b2 ))
- throw new CharConversionException( "isHexDigit");
-
- j+=2;
- int res=x2c( b1, b2 );
+ for( int j=idx; j<end; j++, idx++ ) {
+ if( buff[ j ] == '+' && query) {
+ buff[idx]= (byte)' ' ;
+ } else if( buff[ j ] != '%' ) {
+ buff[idx]= buff[j];
+ } else {
+ // read next 2 digits
+ if( j+2 >= end ) {
+ throw new CharConversionException("EOF");
+ }
+ byte b1= buff[j+1];
+ byte b2=buff[j+2];
+ if( !isHexDigit( b1 ) || ! isHexDigit(b2 ))
+ throw new CharConversionException( "isHexDigit");
+
+ j+=2;
+ int res=x2c( b1, b2 );
if (noSlash && (res == '/')) {
throw new CharConversionException( "noSlash");
}
- buff[idx]=(byte)res;
- }
- }
-
- mb.setEnd( idx );
-
- return;
+ buff[idx]=(byte)res;
+ }
+ }
+
+ mb.setEnd( idx );
+
+ return;
}
// -------------------- Additional methods --------------------
@@ -108,7 +108,7 @@ public final class UDecoder {
* Includes converting '+' to ' '.
*/
public void convert( CharChunk mb )
- throws IOException
+ throws IOException
{
convert(mb, true);
}
@@ -116,53 +116,53 @@ public final class UDecoder {
/** In-buffer processing - the buffer will be modified
*/
public void convert( CharChunk mb, boolean query )
- throws IOException
+ throws IOException
{
- // log( "Converting a char chunk ");
- int start=mb.getOffset();
- char buff[]=mb.getBuffer();
- int cend=mb.getEnd();
+ // log( "Converting a char chunk ");
+ int start=mb.getOffset();
+ char buff[]=mb.getBuffer();
+ int cend=mb.getEnd();
- int idx= CharChunk.indexOf( buff, start, cend, '%' );
+ int idx= CharChunk.indexOf( buff, start, cend, '%' );
int idx2=-1;
if( query )
idx2= CharChunk.indexOf( buff, start, cend, '+' );
- if( idx<0 && idx2<0 ) {
- return;
- }
-
- if( idx2 >= 0 && idx2 < idx ) idx=idx2;
- if( idx < 0 ) idx=idx2;
-
- for( int j=idx; j<cend; j++, idx++ ) {
- if( buff[ j ] == '+' && query ) {
- buff[idx]=( ' ' );
- } else if( buff[ j ] != '%' ) {
- buff[idx]=buff[j];
- } else {
- // read next 2 digits
- if( j+2 >= cend ) {
- // invalid
- throw new CharConversionException("EOF");
- }
- char b1= buff[j+1];
- char b2=buff[j+2];
- if( !isHexDigit( b1 ) || ! isHexDigit(b2 ))
- throw new CharConversionException("isHexDigit");
-
- j+=2;
- int res=x2c( b1, b2 );
- buff[idx]=(char)res;
- }
- }
- mb.setEnd( idx );
+ if( idx<0 && idx2<0 ) {
+ return;
+ }
+
+ if( idx2 >= 0 && idx2 < idx ) idx=idx2;
+ if( idx < 0 ) idx=idx2;
+
+ for( int j=idx; j<cend; j++, idx++ ) {
+ if( buff[ j ] == '+' && query ) {
+ buff[idx]=( ' ' );
+ } else if( buff[ j ] != '%' ) {
+ buff[idx]=buff[j];
+ } else {
+ // read next 2 digits
+ if( j+2 >= cend ) {
+ // invalid
+ throw new CharConversionException("EOF");
+ }
+ char b1= buff[j+1];
+ char b2=buff[j+2];
+ if( !isHexDigit( b1 ) || ! isHexDigit(b2 ))
+ throw new CharConversionException("isHexDigit");
+
+ j+=2;
+ int res=x2c( b1, b2 );
+ buff[idx]=(char)res;
+ }
+ }
+ mb.setEnd( idx );
}
/** URLDecode, will modify the source
* Includes converting '+' to ' '.
*/
public void convert(MessageBytes mb)
- throws IOException
+ throws IOException
{
convert(mb, true);
}
@@ -170,24 +170,24 @@ public final class UDecoder {
/** URLDecode, will modify the source
*/
public void convert(MessageBytes mb, boolean query)
- throws IOException
+ throws IOException
{
-
- switch (mb.getType()) {
- case MessageBytes.T_STR:
- String strValue=mb.toString();
- if( strValue==null ) return;
- mb.setString( convert( strValue, query ));
- break;
- case MessageBytes.T_CHARS:
- CharChunk charC=mb.getCharChunk();
- convert( charC, query );
- break;
- case MessageBytes.T_BYTES:
- ByteChunk bytesC=mb.getByteChunk();
- convert( bytesC, query );
- break;
- }
+
+ switch (mb.getType()) {
+ case MessageBytes.T_STR:
+ String strValue=mb.toString();
+ if( strValue==null ) return;
+ mb.setString( convert( strValue, query ));
+ break;
+ case MessageBytes.T_CHARS:
+ CharChunk charC=mb.getCharChunk();
+ convert( charC, query );
+ break;
+ case MessageBytes.T_BYTES:
+ ByteChunk bytesC=mb.getByteChunk();
+ convert( bytesC, query );
+ break;
+ }
}
// XXX Old code, needs to be replaced !!!!
@@ -200,10 +200,10 @@ public final class UDecoder {
public final String convert(String str, boolean query)
{
if (str == null) return null;
-
- if( (!query || str.indexOf( '+' ) < 0) && str.indexOf( '%' ) < 0 )
- return str;
-
+
+ if( (!query || str.indexOf( '+' ) < 0) && str.indexOf( '%' ) < 0 )
+ return str;
+
StringBuffer dec = new StringBuffer(); // decoded string output
int strPos = 0;
int strLen = str.length();
@@ -238,11 +238,11 @@ public final class UDecoder {
strPos++;
continue;
} else if (metaChar == '%') {
- // We throw the original exception - the super will deal with
- // it
- // try {
- dec.append((char)Integer.
- parseInt(str.substring(strPos + 1, strPos + 3),16));
+ // We throw the original exception - the super will deal with
+ // it
+ // try {
+ dec.append((char)Integer.
+ parseInt(str.substring(strPos + 1, strPos + 3),16));
strPos += 3;
}
}
@@ -253,27 +253,27 @@ public final class UDecoder {
private static boolean isHexDigit( int c ) {
- return ( ( c>='0' && c<='9' ) ||
- ( c>='a' && c<='f' ) ||
- ( c>='A' && c<='F' ));
+ return ( ( c>='0' && c<='9' ) ||
+ ( c>='a' && c<='f' ) ||
+ ( c>='A' && c<='F' ));
}
private static int x2c( byte b1, byte b2 ) {
- int digit= (b1>='A') ? ( (b1 & 0xDF)-'A') + 10 :
- (b1 -'0');
- digit*=16;
- digit +=(b2>='A') ? ( (b2 & 0xDF)-'A') + 10 :
- (b2 -'0');
- return digit;
+ int digit= (b1>='A') ? ( (b1 & 0xDF)-'A') + 10 :
+ (b1 -'0');
+ digit*=16;
+ digit +=(b2>='A') ? ( (b2 & 0xDF)-'A') + 10 :
+ (b2 -'0');
+ return digit;
}
private static int x2c( char b1, char b2 ) {
- int digit= (b1>='A') ? ( (b1 & 0xDF)-'A') + 10 :
- (b1 -'0');
- digit*=16;
- digit +=(b2>='A') ? ( (b2 & 0xDF)-'A') + 10 :
- (b2 -'0');
- return digit;
+ int digit= (b1>='A') ? ( (b1 & 0xDF)-'A') + 10 :
+ (b1 -'0');
+ digit*=16;
+ digit +=(b2>='A') ? ( (b2 & 0xDF)-'A') + 10 :
+ (b2 -'0');
+ return digit;
}
private final static int debug=0;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org