Author: markt Date: Sat Oct 22 19:23:17 2011 New Revision: 1187754 URL: http://svn.apache.org/viewvc?rev=1187754&view=rev Log: Remove unused code. Move utility method that is only usedonce to where it is used.
Removed: tomcat/trunk/java/org/apache/tomcat/util/http/ContentType.java Modified: tomcat/trunk/java/org/apache/coyote/Request.java tomcat/trunk/java/org/apache/tomcat/util/http/MimeHeaders.java tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java Modified: tomcat/trunk/java/org/apache/coyote/Request.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/Request.java?rev=1187754&r1=1187753&r2=1187754&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/Request.java (original) +++ tomcat/trunk/java/org/apache/coyote/Request.java Sat Oct 22 19:23:17 2011 @@ -23,18 +23,17 @@ import java.util.HashMap; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.buf.UDecoder; -import org.apache.tomcat.util.http.ContentType; import org.apache.tomcat.util.http.Cookies; import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.http.Parameters; /** - * This is a low-level, efficient representation of a server request. Most - * fields are GC-free, expensive operations are delayed until the user code + * This is a low-level, efficient representation of a server request. Most + * fields are GC-free, expensive operations are delayed until the user code * needs the information. * * Processing is delegated to modules, using a hook mechanism. - * + * * This class is not intended for user code - it is used internally by tomcat * for processing the request in the most efficient way. Users ( servlets ) can * access the information using a facade, which provides the high-level view @@ -50,7 +49,7 @@ import org.apache.tomcat.util.http.Param * Tomcat defines a number of attributes: * <ul> * <li>"org.apache.tomcat.request" - allows access to the low-level - * request object in trusted applications + * request object in trusted applications * </ul> * * @author James Duncan Davidson [dun...@eng.sun.com] @@ -80,34 +79,34 @@ public final class Request { private int serverPort = -1; - private MessageBytes serverNameMB = MessageBytes.newInstance(); + private final MessageBytes serverNameMB = MessageBytes.newInstance(); private int remotePort; private int localPort; - private MessageBytes schemeMB = MessageBytes.newInstance(); + private final MessageBytes schemeMB = MessageBytes.newInstance(); - private MessageBytes methodMB = MessageBytes.newInstance(); - private MessageBytes unparsedURIMB = MessageBytes.newInstance(); - private MessageBytes uriMB = MessageBytes.newInstance(); - private MessageBytes decodedUriMB = MessageBytes.newInstance(); - private MessageBytes queryMB = MessageBytes.newInstance(); - private MessageBytes protoMB = MessageBytes.newInstance(); + private final MessageBytes methodMB = MessageBytes.newInstance(); + private final MessageBytes unparsedURIMB = MessageBytes.newInstance(); + private final MessageBytes uriMB = MessageBytes.newInstance(); + private final MessageBytes decodedUriMB = MessageBytes.newInstance(); + private final MessageBytes queryMB = MessageBytes.newInstance(); + private final MessageBytes protoMB = MessageBytes.newInstance(); // remote address/host - private MessageBytes remoteAddrMB = MessageBytes.newInstance(); - private MessageBytes localNameMB = MessageBytes.newInstance(); - private MessageBytes remoteHostMB = MessageBytes.newInstance(); - private MessageBytes localAddrMB = MessageBytes.newInstance(); - - private MimeHeaders headers = new MimeHeaders(); + private final MessageBytes remoteAddrMB = MessageBytes.newInstance(); + private final MessageBytes localNameMB = MessageBytes.newInstance(); + private final MessageBytes remoteHostMB = MessageBytes.newInstance(); + private final MessageBytes localAddrMB = MessageBytes.newInstance(); + + private final MimeHeaders headers = new MimeHeaders(); - private MessageBytes instanceId = MessageBytes.newInstance(); + private final MessageBytes instanceId = MessageBytes.newInstance(); /** * Notes. */ - private Object notes[] = new Object[Constants.MAX_NOTES]; + private final Object notes[] = new Object[Constants.MAX_NOTES]; /** @@ -119,7 +118,7 @@ public final class Request { /** * URL decoder. */ - private UDecoder urlDecoder = new UDecoder(); + private final UDecoder urlDecoder = new UDecoder(); /** @@ -128,12 +127,12 @@ public final class Request { private long contentLength = -1; private MessageBytes contentTypeMB = null; private String charEncoding = null; - private Cookies cookies = new Cookies(headers); - private Parameters parameters = new Parameters(); + private final Cookies cookies = new Cookies(headers); + private final Parameters parameters = new Parameters(); - private MessageBytes remoteUser=MessageBytes.newInstance(); - private MessageBytes authType=MessageBytes.newInstance(); - private HashMap<String,Object> attributes=new HashMap<String,Object>(); + private final MessageBytes remoteUser=MessageBytes.newInstance(); + private final MessageBytes authType=MessageBytes.newInstance(); + private final HashMap<String,Object> attributes=new HashMap<String,Object>(); private Response response; private ActionHook hook; @@ -143,7 +142,7 @@ public final class Request { private long startTime = 0L; private int available = 0; - private RequestInfo reqProcessorMX=new RequestInfo(this); + private final RequestInfo reqProcessorMX=new RequestInfo(this); // ------------------------------------------------------------- Properties @@ -151,7 +150,7 @@ public final class Request { * Get the instance id (or JVM route). Currently Ajp is sending it with each * request. In future this should be fixed, and sent only once ( or * 'negotiated' at config time so both tomcat and apache share the same name. - * + * * @return the instance id */ public MessageBytes instanceId() { @@ -174,11 +173,11 @@ public final class Request { public MessageBytes scheme() { return schemeMB; } - + public MessageBytes method() { return methodMB; } - + public MessageBytes unparsedURI() { return unparsedURIMB; } @@ -198,8 +197,8 @@ public final class Request { public MessageBytes protocol() { return protoMB; } - - /** + + /** * Return the buffer holding the server name, if * any. Use isNull() to check if there is no value * set. @@ -213,7 +212,7 @@ public final class Request { public int getServerPort() { return serverPort; } - + public void setServerPort(int serverPort ) { this.serverPort=serverPort; } @@ -228,24 +227,24 @@ public final class Request { public MessageBytes localName() { return localNameMB; - } + } public MessageBytes localAddr() { return localAddrMB; } - + public int getRemotePort(){ return remotePort; } - + public void setRemotePort(int port){ this.remotePort = port; } - + public int getLocalPort(){ return localPort; } - + public void setLocalPort(int port){ this.localPort = port; } @@ -258,10 +257,11 @@ public final class Request { */ public String getCharacterEncoding() { - if (charEncoding != null) + if (charEncoding != null) { return charEncoding; + } - charEncoding = ContentType.getCharsetFromContentType(getContentType()); + charEncoding = getCharsetFromContentType(getContentType()); return charEncoding; } @@ -287,7 +287,9 @@ public final class Request { } public long getContentLengthLong() { - if( contentLength > -1 ) return contentLength; + if( contentLength > -1 ) { + return contentLength; + } MessageBytes clB = headers.getUniqueValue("content-length"); contentLength = (clB == null || clB.isNull()) ? -1 : clB.getLong(); @@ -297,8 +299,9 @@ public final class Request { public String getContentType() { contentType(); - if ((contentTypeMB == null) || contentTypeMB.isNull()) + if ((contentTypeMB == null) || contentTypeMB.isNull()) { return null; + } return contentTypeMB.toString(); } @@ -309,8 +312,9 @@ public final class Request { public MessageBytes contentType() { - if (contentTypeMB == null) + if (contentTypeMB == null) { contentTypeMB = headers.getValue("content-type"); + } return contentTypeMB; } @@ -334,16 +338,18 @@ public final class Request { this.response=response; response.setRequest( this ); } - + public void action(ActionCode actionCode, Object param) { - if( hook==null && response!=null ) + if( hook==null && response!=null ) { hook=response.getHook(); - + } + if (hook != null) { - if( param==null ) + if( param==null ) { hook.action(actionCode, this); - else + } else { hook.action(actionCode, param); + } } } @@ -366,7 +372,7 @@ public final class Request { // -------------------- Other attributes -------------------- // We can use notes for most - need to discuss what is of general interest - + public void setAttribute( String name, Object o ) { attributes.put( name, o ); } @@ -378,7 +384,7 @@ public final class Request { public Object getAttribute(String name ) { return attributes.get(name); } - + public MessageBytes getRemoteUser() { return remoteUser; } @@ -417,7 +423,7 @@ public final class Request { * InputStream, this interface allows the app to process data in place, without copy. * */ - public int doRead(ByteChunk chunk) + public int doRead(ByteChunk chunk) throws IOException { int n = inputBuffer.doRead(chunk, this); if (n > 0) { @@ -445,23 +451,23 @@ public final class Request { // -------------------- Per-Request "notes" -------------------- - /** - * Used to store private data. Thread data could be used instead - but + /** + * Used to store private data. Thread data could be used instead - but * if you have the req, getting/setting a note is just a array access, may * be faster than ThreadLocal for very frequent operations. - * - * Example use: + * + * Example use: * Jk: * HandlerRequest.HOSTBUFFER = 10 CharChunk, buffer for Host decoding * WorkerEnv: SSL_CERT_NOTE=16 - MessageBytes containing the cert - * + * * Catalina CoyoteAdapter: - * ADAPTER_NOTES = 1 - stores the HttpServletRequest object ( req/res) - * - * To avoid conflicts, note in the range 0 - 8 are reserved for the - * servlet container ( catalina connector, etc ), and values in 9 - 16 - * for connector use. - * + * ADAPTER_NOTES = 1 - stores the HttpServletRequest object ( req/res) + * + * To avoid conflicts, note in the range 0 - 8 are reserved for the + * servlet container ( catalina connector, etc ), and values in 9 - 16 + * for connector use. + * * 17-31 range is not allocated or used. */ public final void setNote(int pos, Object value) { @@ -474,7 +480,7 @@ public final class Request { } - // -------------------- Recycling -------------------- + // -------------------- Recycling -------------------- public void recycle() { @@ -494,7 +500,7 @@ public final class Request { parameters.recycle(); unparsedURIMB.recycle(); - uriMB.recycle(); + uriMB.recycle(); decodedUriMB.recycle(); queryMB.recycle(); methodMB.recycle(); @@ -524,4 +530,35 @@ public final class Request { public boolean isProcessing() { return reqProcessorMX.getStage()==org.apache.coyote.Constants.STAGE_SERVICE; } + + /** + * Parse the character encoding from the specified content type header. + * If the content type is null, or there is no explicit character encoding, + * <code>null</code> is returned. + * + * @param contentType a content type header + */ + private static String getCharsetFromContentType(String contentType) { + + if (contentType == null) { + return (null); + } + int start = contentType.indexOf("charset="); + if (start < 0) { + return (null); + } + String encoding = contentType.substring(start + 8); + int end = encoding.indexOf(';'); + if (end >= 0) { + encoding = encoding.substring(0, end); + } + encoding = encoding.trim(); + if ((encoding.length() > 2) && (encoding.startsWith("\"")) + && (encoding.endsWith("\""))) { + encoding = encoding.substring(1, encoding.length() - 1); + } + return (encoding.trim()); + + } + } Modified: tomcat/trunk/java/org/apache/tomcat/util/http/MimeHeaders.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/MimeHeaders.java?rev=1187754&r1=1187753&r2=1187754&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/http/MimeHeaders.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/MimeHeaders.java Sat Oct 22 19:23:17 2011 @@ -253,15 +253,6 @@ public class MimeHeaders { return mhf.getValue(); } - /** Create a new named header using translated char[]. - */ - public MessageBytes addValue(char c[], int startN, int len) - { - MimeHeaderField mhf=createHeader(); - mhf.getName().setChars(c, startN, len); - return mhf.getValue(); - } - /** Allow "set" operations - return a MessageBytes container for the header value ( existing header or new @@ -454,11 +445,6 @@ class ValuesEnumerator implements Enumer } class MimeHeaderField { - // multiple headers with same name - a linked list will - // speed up name enumerations and search ( both cpu and - // GC) - MimeHeaderField next; - MimeHeaderField prev; protected final MessageBytes nameB = MessageBytes.newInstance(); protected final MessageBytes valueB = MessageBytes.newInstance(); @@ -473,7 +459,6 @@ class MimeHeaderField { public void recycle() { nameB.recycle(); valueB.recycle(); - next=null; } public MessageBytes getName() { Modified: tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java?rev=1187754&r1=1187753&r2=1187754&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java Sat Oct 22 19:23:17 2011 @@ -32,13 +32,9 @@ import org.apache.tomcat.util.buf.UDecod */ public final class Parameters { - private static final org.apache.juli.logging.Log log= org.apache.juli.logging.LogFactory.getLog(Parameters.class ); - // Transition: we'll use the same Hashtable( String->String[] ) - // for the beginning. When we are sure all accesses happen through - // this class - we can switch to MultiMap private final Hashtable<String,String[]> paramHashStringArray = new Hashtable<String,String[]>(); private boolean didQueryParameters=false; Modified: tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java?rev=1187754&r1=1187753&r2=1187754&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookie.java Sat Oct 22 19:23:17 2011 @@ -46,11 +46,9 @@ public class ServerCookie implements Ser // Expires - Not stored explicitly. Generated from Max-Age (see V1) private final MessageBytes path=MessageBytes.newInstance(); private final MessageBytes domain=MessageBytes.newInstance(); - private boolean secure; // Version 1 (RFC2109) attributes private final MessageBytes comment=MessageBytes.newInstance(); - private int maxAge = -1; private int version = 0; // Other fields @@ -90,11 +88,9 @@ public class ServerCookie implements Ser name.recycle(); value.recycle(); comment.recycle(); - maxAge=-1; path.recycle(); domain.recycle(); version=0; - secure=false; } public MessageBytes getComment() { @@ -105,26 +101,10 @@ public class ServerCookie implements Ser return domain; } - public void setMaxAge(int expiry) { - maxAge = expiry; - } - - public int getMaxAge() { - return maxAge; - } - public MessageBytes getPath() { return path; } - public void setSecure(boolean flag) { - secure = flag; - } - - public boolean getSecure() { - return secure; - } - public MessageBytes getName() { return name; } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org