tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ma...@apache.org
Subject svn commit: r557469 - /tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/http/Cookies.java
Date Thu, 19 Jul 2007 02:48:57 GMT
Author: markt
Date: Wed Jul 18 19:48:57 2007
New Revision: 557469

URL: http://svn.apache.org/viewvc?view=rev&rev=557469
Log:
Tabs -> 8 spaces
No functional change

Modified:
    tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/http/Cookies.java

Modified: tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/http/Cookies.java
URL: http://svn.apache.org/viewvc/tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/http/Cookies.java?view=diff&rev=557469&r1=557468&r2=557469
==============================================================================
--- tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/http/Cookies.java
(original)
+++ tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/http/Cookies.java
Wed Jul 18 19:48:57 2007
@@ -50,7 +50,7 @@
      *     information from the provided headers.
      */
     public Cookies(MimeHeaders headers) {
-	this.headers=headers;
+        this.headers=headers;
     }
 
     /**
@@ -80,12 +80,12 @@
      * Recycle.
      */
     public void recycle() {
-    	for( int i=0; i< cookieCount; i++ ) {
-	    if( scookies[i]!=null )
-		scookies[i].recycle();
-	}
-	cookieCount=0;
-	unprocessed=true;
+            for( int i=0; i< cookieCount; i++ ) {
+            if( scookies[i]!=null )
+                scookies[i].recycle();
+        }
+        cookieCount=0;
+        unprocessed=true;
     }
 
     /**
@@ -105,18 +105,18 @@
     // -------------------- Indexed access --------------------
     
     public ServerCookie getCookie( int idx ) {
-	if( unprocessed ) {
-	    getCookieCount(); // will also update the cookies
-	}
-	return scookies[idx];
+        if( unprocessed ) {
+            getCookieCount(); // will also update the cookies
+        }
+        return scookies[idx];
     }
 
     public int getCookieCount() {
-	if( unprocessed ) {
-	    unprocessed=false;
-	    processCookies(headers);
-	}
-	return cookieCount;
+        if( unprocessed ) {
+            unprocessed=false;
+            processCookies(headers);
+        }
+        return cookieCount;
     }
 
     // -------------------- Adding cookies --------------------
@@ -126,19 +126,19 @@
      *  The caller can set the name/value and attributes for the cookie
      */
     public ServerCookie addCookie() {
-	if( cookieCount >= scookies.length  ) {
-	    ServerCookie scookiesTmp[]=new ServerCookie[2*cookieCount];
-	    System.arraycopy( scookies, 0, scookiesTmp, 0, cookieCount);
-	    scookies=scookiesTmp;
-	}
-	
-	ServerCookie c = scookies[cookieCount];
-	if( c==null ) {
-	    c= new ServerCookie();
-	    scookies[cookieCount]=c;
-	}
-	cookieCount++;
-	return c;
+        if( cookieCount >= scookies.length  ) {
+            ServerCookie scookiesTmp[]=new ServerCookie[2*cookieCount];
+            System.arraycopy( scookies, 0, scookiesTmp, 0, cookieCount);
+            scookies=scookiesTmp;
+        }
+        
+        ServerCookie c = scookies[cookieCount];
+        if( c==null ) {
+            c= new ServerCookie();
+            scookies[cookieCount]=c;
+        }
+        cookieCount++;
+        return c;
     }
 
 
@@ -147,32 +147,32 @@
     /** Add all Cookie found in the headers of a request.
      */
     public  void processCookies( MimeHeaders headers ) {
-	if( headers==null )
-	    return;// nothing to process
-	// process each "cookie" header
-	int pos=0;
-	while( pos>=0 ) {
-	    // Cookie2: version ? not needed
-	    pos=headers.findHeader( "Cookie", pos );
-	    // no more cookie headers headers
-	    if( pos<0 ) break;
-
-	    MessageBytes cookieValue=headers.getValue( pos );
-	    if( cookieValue==null || cookieValue.isNull() ) continue;
-
-	    // Uncomment to test the new parsing code
-	    if( cookieValue.getType() == MessageBytes.T_BYTES ) {
-		if( dbg>0 ) log( "Parsing b[]: " + cookieValue.toString());
-		ByteChunk bc=cookieValue.getByteChunk();
-		processCookieHeader( bc.getBytes(),
-				     bc.getOffset(),
-				     bc.getLength());
-	    } else {
-		if( dbg>0 ) log( "Parsing S: " + cookieValue.toString());
-		processCookieHeader( cookieValue.toString() );
-	    }
-	    pos++;// search from the next position
-	}
+        if( headers==null )
+            return;// nothing to process
+        // process each "cookie" header
+        int pos=0;
+        while( pos>=0 ) {
+            // Cookie2: version ? not needed
+            pos=headers.findHeader( "Cookie", pos );
+            // no more cookie headers headers
+            if( pos<0 ) break;
+
+            MessageBytes cookieValue=headers.getValue( pos );
+            if( cookieValue==null || cookieValue.isNull() ) continue;
+
+            // Uncomment to test the new parsing code
+            if( cookieValue.getType() == MessageBytes.T_BYTES ) {
+                if( dbg>0 ) log( "Parsing b[]: " + cookieValue.toString());
+                ByteChunk bc=cookieValue.getByteChunk();
+                processCookieHeader( bc.getBytes(),
+                                     bc.getOffset(),
+                                     bc.getLength());
+            } else {
+                if( dbg>0 ) log( "Parsing S: " + cookieValue.toString());
+                processCookieHeader( cookieValue.toString() );
+            }
+            pos++;// search from the next position
+        }
     }
 
     /** Process a byte[] header - allowing fast processing of the
@@ -180,182 +180,182 @@
      */
     void processCookieHeader(  byte bytes[], int off, int len )
     {
-	if( len<=0 || bytes==null ) return;
-	int end=off+len;
-	int pos=off;
-	
-	int version=0; //sticky
-	ServerCookie sc=null;
-	
-
-	while( pos<end ) {
-	    byte cc;
-	    // [ skip_spaces name skip_spaces "=" skip_spaces value EXTRA ; ] *
-	    if( dbg>0 ) log( "Start: " + pos + " " + end );
-	    
-	    pos=skipSpaces(bytes, pos, end);
-	    if( pos>=end )
-		return; // only spaces
-	    int startName=pos;
-	    if( dbg>0 ) log( "SN: " + pos );
-	    
-	    // Version should be the first token
-	    boolean isSpecial=false;
-	    if(bytes[pos]=='$') { pos++; isSpecial=true; }
-
-	    pos= findDelim1( bytes, startName, end); // " =;,"
-	    int endName=pos;
-	    // current = "=" or " " or DELIM
-	    pos= skipSpaces( bytes, endName, end ); 
-	    if( dbg>0 ) log( "DELIM: " + endName + " " + (char)bytes[pos]);
-
-	    if(pos >= end ) {
-		// it's a name-only cookie ( valid in RFC2109 )
-		if( ! isSpecial ) {
-		    sc=addCookie();
-		    sc.getName().setBytes( bytes, startName,
-					   endName-startName );
-		    sc.getValue().setString("");
-		    sc.setVersion( version );
-		    if( dbg>0 ) log( "Name only, end: " + startName + " " +
-				     endName);
-		}
-		return;
-	    }
-
-	    cc=bytes[pos];
-	    pos++;
-	    if( cc==';' || cc==',' ) {
-		if( ! isSpecial && startName!= endName ) {
-		    sc=addCookie();
-		    sc.getName().setBytes( bytes, startName,
-					   endName-startName );
-		    sc.getValue().setString("");
-		    sc.setVersion( version );
-		    if( dbg>0 ) log( "Name only: " + startName + " " + endName);
-		}
-		continue;
-	    }
-	    
-	    // we should have "=" ( tested all other alternatives )
-	    int startValue=skipSpaces( bytes, pos, end);
-	    int endValue=startValue;
-	    
-	    // quote is valid only in version=1 cookies
-	    cc=bytes[pos];
-	    if( ( version == 1 || isSpecial ) && ( cc== '\'' || cc=='"' ) ) {
-		startValue++;
-		endValue=indexOf( bytes, startValue, end, cc );
-		pos=endValue+1; // to skip to next cookie
- 	    } else {
-		endValue=findDelim2( bytes, startValue, end );
-		pos=endValue+1;
-	    }
-	    
-	    // if not $Version, etc
-	    if( ! isSpecial ) {
-		sc=addCookie();
-		sc.getName().setBytes( bytes, startName, endName-startName );
-		sc.getValue().setBytes( bytes, startValue, endValue-startValue);
-		sc.setVersion( version );
-		if( dbg>0 ) log( "New: " + sc.getName() + "X=X" + sc.getValue());
-		continue;
-	    }
-	    
-	    // special - Path, Version, Domain, Port
-	    if( dbg>0 ) log( "Special: " + startName + " " + endName);
-	    // XXX TODO
-	    if( equals( "$Version", bytes, startName, endName ) ) {
-		if(dbg>0 ) log( "Found version " );
-		if( bytes[startValue]=='1' && endValue==startValue+1 ) {
-		    version=1;
-		    if(dbg>0 ) log( "Found version=1" );
-		}
-		continue;
-	    }
-	    if( sc==null ) {
-		// Path, etc without a previous cookie
-		continue;
-	    }
-	    if( equals( "$Path", bytes, startName, endName ) ) {
-		sc.getPath().setBytes( bytes, startValue, endValue-startValue );
-	    }
-	    if( equals( "$Domain", bytes, startName, endName ) ) {
-		sc.getDomain().setBytes( bytes, startValue, endValue-startValue );
-	    }
-	    if( equals( "$Port", bytes, startName, endName ) ) {
-		// sc.getPort().setBytes( bytes, startValue, endValue-startValue );
-	    }
-	}
+        if( len<=0 || bytes==null ) return;
+        int end=off+len;
+        int pos=off;
+        
+        int version=0; //sticky
+        ServerCookie sc=null;
+        
+
+        while( pos<end ) {
+            byte cc;
+            // [ skip_spaces name skip_spaces "=" skip_spaces value EXTRA ; ] *
+            if( dbg>0 ) log( "Start: " + pos + " " + end );
+            
+            pos=skipSpaces(bytes, pos, end);
+            if( pos>=end )
+                return; // only spaces
+            int startName=pos;
+            if( dbg>0 ) log( "SN: " + pos );
+            
+            // Version should be the first token
+            boolean isSpecial=false;
+            if(bytes[pos]=='$') { pos++; isSpecial=true; }
+
+            pos= findDelim1( bytes, startName, end); // " =;,"
+            int endName=pos;
+            // current = "=" or " " or DELIM
+            pos= skipSpaces( bytes, endName, end ); 
+            if( dbg>0 ) log( "DELIM: " + endName + " " + (char)bytes[pos]);
+
+            if(pos >= end ) {
+                // it's a name-only cookie ( valid in RFC2109 )
+                if( ! isSpecial ) {
+                    sc=addCookie();
+                    sc.getName().setBytes( bytes, startName,
+                                           endName-startName );
+                    sc.getValue().setString("");
+                    sc.setVersion( version );
+                    if( dbg>0 ) log( "Name only, end: " + startName + " " +
+                                     endName);
+                }
+                return;
+            }
+
+            cc=bytes[pos];
+            pos++;
+            if( cc==';' || cc==',' ) {
+                if( ! isSpecial && startName!= endName ) {
+                    sc=addCookie();
+                    sc.getName().setBytes( bytes, startName,
+                                           endName-startName );
+                    sc.getValue().setString("");
+                    sc.setVersion( version );
+                    if( dbg>0 ) log( "Name only: " + startName + " " + endName);
+                }
+                continue;
+            }
+            
+            // we should have "=" ( tested all other alternatives )
+            int startValue=skipSpaces( bytes, pos, end);
+            int endValue=startValue;
+            
+            // quote is valid only in version=1 cookies
+            cc=bytes[pos];
+            if( ( version == 1 || isSpecial ) && ( cc== '\'' || cc=='"' ) ) {
+                startValue++;
+                endValue=indexOf( bytes, startValue, end, cc );
+                pos=endValue+1; // to skip to next cookie
+             } else {
+                endValue=findDelim2( bytes, startValue, end );
+                pos=endValue+1;
+            }
+            
+            // if not $Version, etc
+            if( ! isSpecial ) {
+                sc=addCookie();
+                sc.getName().setBytes( bytes, startName, endName-startName );
+                sc.getValue().setBytes( bytes, startValue, endValue-startValue);
+                sc.setVersion( version );
+                if(dbg>0) log("New: " + sc.getName() + "X=X" + sc.getValue());
+                continue;
+            }
+            
+            // special - Path, Version, Domain, Port
+            if( dbg>0 ) log( "Special: " + startName + " " + endName);
+            // XXX TODO
+            if( equals( "$Version", bytes, startName, endName ) ) {
+                if(dbg>0 ) log( "Found version " );
+                if( bytes[startValue]=='1' && endValue==startValue+1 ) {
+                    version=1;
+                    if(dbg>0 ) log( "Found version=1" );
+                }
+                continue;
+            }
+            if( sc==null ) {
+                // Path, etc without a previous cookie
+                continue;
+            }
+            if(equals("$Path", bytes, startName, endName)) {
+                sc.getPath().setBytes(bytes, startValue, endValue-startValue);
+            }
+            if(equals("$Domain", bytes, startName, endName)) {
+                sc.getDomain().setBytes(bytes, startValue, endValue-startValue);
+            }
+            if(equals("$Port", bytes, startName, endName)) {
+                //sc.getPort().setBytes(bytes, startValue, endValue-startValue);
+            }
+        }
     }
 
     // -------------------- Utils --------------------
     public static int skipSpaces(  byte bytes[], int off, int end ) {
-	while( off < end ) {
-	    byte b=bytes[off];
-	    if( b!= ' ' ) return off;
-	    off ++;
-	}
-	return off;
+        while( off < end ) {
+            byte b=bytes[off];
+            if( b!= ' ' ) return off;
+            off ++;
+        }
+        return off;
     }
 
     public static int findDelim1( byte bytes[], int off, int end )
     {
-	while( off < end ) {
-	    byte b=bytes[off];
-	    if( b==' ' || b=='=' || b==';' || b==',' )
-		return off;
-	    off++;
-	}
-	return off;
+        while( off < end ) {
+            byte b=bytes[off];
+            if( b==' ' || b=='=' || b==';' || b==',' )
+                return off;
+            off++;
+        }
+        return off;
     }
 
     public static int findDelim2( byte bytes[], int off, int end )
     {
-	while( off < end ) {
-	    byte b=bytes[off];
-	    if( b==';' || b==',' )
-		return off;
-	    off++;
-	}
-	return off;
+        while( off < end ) {
+            byte b=bytes[off];
+            if( b==';' || b==',' )
+                return off;
+            off++;
+        }
+        return off;
     }
 
     public static int indexOf( byte bytes[], int off, int end, byte qq )
     {
-	while( off < end ) {
-	    byte b=bytes[off];
-	    if( b==qq )
-		return off;
-	    off++;
-	}
-	return off;
+        while( off < end ) {
+            byte b=bytes[off];
+            if( b==qq )
+                return off;
+            off++;
+        }
+        return off;
     }
 
     public static int indexOf( byte bytes[], int off, int end, char qq )
     {
-	while( off < end ) {
-	    byte b=bytes[off];
-	    if( b==qq )
-		return off;
-	    off++;
-	}
-	return off;
+        while( off < end ) {
+            byte b=bytes[off];
+            if( b==qq )
+                return off;
+            off++;
+        }
+        return off;
     }
     
     // XXX will be refactored soon!
     public static boolean equals( String s, byte b[], int start, int end) {
-	int blen = end-start;
-	if (b == null || blen != s.length()) {
-	    return false;
-	}
-	int boff = start;
-	for (int i = 0; i < blen; i++) {
-	    if (b[boff++] != s.charAt(i)) {
-		return false;
-	    }
-	}
-	return true;
+        int blen = end-start;
+        if (b == null || blen != s.length()) {
+            return false;
+        }
+        int boff = start;
+        for (int i = 0; i < blen; i++) {
+            if (b[boff++] != s.charAt(i)) {
+                return false;
+            }
+        }
+        return true;
     }
     
 
@@ -364,35 +364,35 @@
     
     private void processCookieHeader(  String cookieString )
     {
-	if( dbg>0 ) log( "Parsing cookie header " + cookieString );
-	// normal cookie, with a string value.
-	// This is the original code, un-optimized - it shouldn't
-	// happen in normal case
-
-	StringTokenizer tok = new StringTokenizer(cookieString,
-						  ";", false);
-	while (tok.hasMoreTokens()) {
-	    String token = tok.nextToken();
-	    int i = token.indexOf("=");
-	    if (i > -1) {
-		
-		// XXX
-		// the trims here are a *hack* -- this should
-		// be more properly fixed to be spec compliant
-		
-		String name = token.substring(0, i).trim();
-		String value = token.substring(i+1, token.length()).trim();
-		// RFC 2109 and bug 
-		value=stripQuote( value );
-		ServerCookie cookie = addCookie();
-		
-		cookie.getName().setString(name);
-		cookie.getValue().setString(value);
-		if( dbg > 0 ) log( "Add cookie " + name + "=" + value);
-	    } else {
-		// we have a bad cookie.... just let it go
-	    }
-	}
+        if( dbg>0 ) log( "Parsing cookie header " + cookieString );
+        // normal cookie, with a string value.
+        // This is the original code, un-optimized - it shouldn't
+        // happen in normal case
+
+        StringTokenizer tok = new StringTokenizer(cookieString,
+                                                  ";", false);
+        while (tok.hasMoreTokens()) {
+            String token = tok.nextToken();
+            int i = token.indexOf("=");
+            if (i > -1) {
+                
+                // XXX
+                // the trims here are a *hack* -- this should
+                // be more properly fixed to be spec compliant
+                
+                String name = token.substring(0, i).trim();
+                String value = token.substring(i+1, token.length()).trim();
+                // RFC 2109 and bug 
+                value=stripQuote( value );
+                ServerCookie cookie = addCookie();
+                
+                cookie.getName().setString(name);
+                cookie.getValue().setString(value);
+                if( dbg > 0 ) log( "Add cookie " + name + "=" + value);
+            } else {
+                // we have a bad cookie.... just let it go
+            }
+        }
     }
 
     /**
@@ -408,59 +408,59 @@
      */
     private static String stripQuote( String value )
     {
-	//	log("Strip quote from " + value );
-	if (((value.startsWith("\"")) && (value.endsWith("\""))) ||
-	    ((value.startsWith("'") && (value.endsWith("'"))))) {
-	    try {
-		return value.substring(1,value.length()-1);
-	    } catch (Exception ex) { 
-	    }
-	}
-	return value;
+        //        log("Strip quote from " + value );
+        if (((value.startsWith("\"")) && (value.endsWith("\""))) ||
+            ((value.startsWith("'") && (value.endsWith("'"))))) {
+            try {
+                return value.substring(1,value.length()-1);
+            } catch (Exception ex) { 
+            }
+        }
+        return value;
     }  
 
 
     // log
     static final int dbg=0;
     public void log(String s ) {
-	System.out.println("Cookies: " + s);
+        System.out.println("Cookies: " + s);
     }
 
     /*
     public static void main( String args[] ) {
-	test("foo=bar; a=b");
-	test("foo=bar;a=b");
-	test("foo=bar;a=b;");
-	test("foo=bar;a=b; ");
-	test("foo=bar;a=b; ;");
-	test("foo=;a=b; ;");
-	test("foo;a=b; ;");
-	// v1 
-	test("$Version=1; foo=bar;a=b"); 
+        test("foo=bar; a=b");
+        test("foo=bar;a=b");
+        test("foo=bar;a=b;");
+        test("foo=bar;a=b; ");
+        test("foo=bar;a=b; ;");
+        test("foo=;a=b; ;");
+        test("foo;a=b; ;");
+        // v1 
+        test("$Version=1; foo=bar;a=b"); 
         test("$Version=\"1\"; foo='bar'; $Path=/path; $Domain=\"localhost\"");
-	test("$Version=1;foo=bar;a=b; ; ");
-	test("$Version=1;foo=;a=b; ; ");
-	test("$Version=1;foo= ;a=b; ; ");
-	test("$Version=1;foo;a=b; ; ");
-	test("$Version=1;foo=\"bar\";a=b; ; ");
-	test("$Version=1;foo=\"bar\";$Path=/examples;a=b; ; ");
-	test("$Version=1;foo=\"bar\";$Domain=apache.org;a=b");
-	test("$Version=1;foo=\"bar\";$Domain=apache.org;a=b;$Domain=yahoo.com");
-	// rfc2965
-	test("$Version=1;foo=\"bar\";$Domain=apache.org;$Port=8080;a=b");
+        test("$Version=1;foo=bar;a=b; ; ");
+        test("$Version=1;foo=;a=b; ; ");
+        test("$Version=1;foo= ;a=b; ; ");
+        test("$Version=1;foo;a=b; ; ");
+        test("$Version=1;foo=\"bar\";a=b; ; ");
+        test("$Version=1;foo=\"bar\";$Path=/examples;a=b; ; ");
+        test("$Version=1;foo=\"bar\";$Domain=apache.org;a=b");
+        test("$Version=1;foo=\"bar\";$Domain=apache.org;a=b;$Domain=yahoo.com");
+        // rfc2965
+        test("$Version=1;foo=\"bar\";$Domain=apache.org;$Port=8080;a=b");
 
-	// wrong
-	test("$Version=1;foo=\"bar\";$Domain=apache.org;$Port=8080;a=b");
+        // wrong
+        test("$Version=1;foo=\"bar\";$Domain=apache.org;$Port=8080;a=b");
     }
 
     public static void test( String s ) {
-	System.out.println("Processing " + s );
-	Cookies cs=new Cookies(null);
-	cs.processCookieHeader( s.getBytes(), 0, s.length());
-	for( int i=0; i< cs.getCookieCount() ; i++ ) {
-	    System.out.println("Cookie: " + cs.getCookie( i ));
-	}
-	    
+        System.out.println("Processing " + s );
+        Cookies cs=new Cookies(null);
+        cs.processCookieHeader( s.getBytes(), 0, s.length());
+        for( int i=0; i< cs.getCookieCount() ; i++ ) {
+            System.out.println("Cookie: " + cs.getCookie( i ));
+        }
+            
     }
     */
 



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


Mime
View raw message