You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2002/07/12 20:00:14 UTC
cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/buf MessageBytes.java
costin 2002/07/12 11:00:14
Modified: util/java/org/apache/tomcat/util/buf MessageBytes.java
Log:
Added more comments.
Beter late than never :-)
Revision Changes Path
1.7 +66 -14 jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/buf/MessageBytes.java
Index: MessageBytes.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/buf/MessageBytes.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- MessageBytes.java 31 Dec 2001 18:20:04 -0000 1.6
+++ MessageBytes.java 12 Jul 2002 18:00:14 -0000 1.7
@@ -66,6 +66,11 @@
/**
* This class is used to represent a subarray of bytes in an HTTP message.
+ * It represents all request/response elements. The byte/char conversions are
+ * delayed and cached. Everything is recyclable.
+ *
+ * The object can represent a byte[], a char[], or a (sub) String. All
+ * operations can be made in case sensitive mode or not.
*
* @author dac@eng.sun.com
* @author James Todd [gonzo@eng.sun.com]
@@ -74,35 +79,51 @@
public final class MessageBytes implements Cloneable, Serializable {
// primary type ( whatever is set as original value )
private int type = T_NULL;
-
+
public static final int T_NULL = 0;
+ /** getType() is T_STR if the the object used to create the MessageBytes
+ was a String */
public static final int T_STR = 1;
+ /** getType() is T_STR if the the object used to create the MessageBytes
+ was a byte[] */
public static final int T_BYTES = 2;
+ /** getType() is T_STR if the the object used to create the MessageBytes
+ was a char[] */
public static final int T_CHARS = 3;
private int hashCode=0;
+ // did we computed the hashcode ?
private boolean hasHashCode=false;
+ // Is the represented object case sensitive ?
private boolean caseSensitive=true;
-
- ByteChunk byteC=new ByteChunk();
- CharChunk charC=new CharChunk();
+ // Internal objects to represent array + offset, and specific methods
+ private ByteChunk byteC=new ByteChunk();
+ private CharChunk charC=new CharChunk();
// String
private String strValue;
+ // true if a String value was computed. Probably not needed,
+ // strValue!=null is the same
private boolean hasStrValue=false;
/**
* Creates a new, uninitialized MessageBytes object.
+ * @deprecated. Use static newInstance() in order to allow
+ * future hooks.
*/
public MessageBytes() {
}
+ /** Construct a new MessageBytes instance
+ */
public static MessageBytes newInstance() {
return factory.newInstance();
}
-
+
+ /** Configure the case sensitivity
+ */
public void setCaseSenitive( boolean b ) {
caseSensitive=b;
}
@@ -121,7 +142,7 @@
}
/**
- * Resets the message bytes to an uninitialized state.
+ * Resets the message bytes to an uninitialized (NULL) state.
*/
public void recycle() {
type=T_NULL;
@@ -139,7 +160,8 @@
/**
- * Sets the message bytes to the specified subarray of bytes.
+ * Sets the content 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
@@ -150,6 +172,10 @@
type=T_BYTES;
}
+ /** Set the encoding. If the object was constructed from bytes[]. any
+ * previous conversion is reset.
+ * If no encoding is set, we'll use 8859-1.
+ */
public void setEncoding( String enc ) {
if( !byteC.isNull() ) {
// if the encoding changes we need to reset the converion results
@@ -158,7 +184,9 @@
}
byteC.setEncoding(enc);
}
-
+
+ /** Sets the content to be a char[]
+ */
public void setChars( char[] c, int off, int len ) {
recycle();
charC.setChars( c, off, len );
@@ -166,8 +194,9 @@
}
/** Remove the cached string value. Use it after a conversion on the
- byte[] or after the encoding is changed
- */
+ * byte[] or after the encoding is changed
+ * XXX Is this needed ?
+ */
public void resetStringValue() {
if( type != T_STR ) {
// If this was cread as a byte[] or char[], we remove
@@ -177,6 +206,8 @@
}
}
+ /** Set the content to be a string
+ */
public void setString( String s ) {
recycle();
if (s == null)
@@ -187,6 +218,9 @@
}
// -------------------- Conversion and getters --------------------
+
+ /** Compute the string value
+ */
public String toString() {
if( hasStrValue ) return strValue;
hasStrValue=true;
@@ -203,30 +237,46 @@
}
//----------------------------------------
+ /** Return the type of the original content. Can be
+ * T_STR, T_BYTES, T_CHARS or T_NULL
+ */
public int getType() {
return type;
}
/**
- * Returns the message bytes.
+ * Returns the byte chunk, representing the byte[] and offset/length.
+ * Valid only if T_BYTES or after a conversion was made.
*/
public ByteChunk getByteChunk() {
return byteC;
}
+ /**
+ * Returns the char chunk, representing the char[] and offset/length.
+ * Valid only if T_CHARS or after a conversion was made.
+ */
public CharChunk getCharChunk() {
return charC;
}
+ /**
+ * Returns the string value.
+ * Valid only if T_STR or after a conversion was made.
+ */
public String getString() {
return strValue;
}
- // Convert to bytes !!!
+ /** Unimplemented yet. Do a char->byte conversion.
+ */
public void toBytes() {
- // XXX todo - not used
+ // XXX todo - not used yet
}
+ /** Convert to char[] and fill the CharChunk.
+ * XXX Not optimized - it converts to String first.
+ */
public void toChars() {
if( ! charC.isNull() ) {
return;
@@ -239,7 +289,9 @@
/**
- * Returns the length of the buffer.
+ * Returns the length of the original buffer.
+ * Note that the length in bytes may be different from the length
+ * in chars.
*/
public int getLength() {
if(type==T_BYTES)
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>