Author: remm
Date: Thu Apr 13 04:19:06 2006
New Revision: 393784

URL: http://svn.apache.org/viewcvs?rev=393784&view=rev
Log:
- Switch to ArrayList.
- private -> protected.
- Use a marker constant for full range, because null indicates an error or no 
content.

Modified:
    
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java

Modified: 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java?rev=393784&r1=393783&r2=393784&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
 (original)
+++ 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
 Thu Apr 13 04:19:06 2006
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2004-2006 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -32,9 +32,9 @@
 import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
-import java.util.Enumeration;
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.StringTokenizer;
-import java.util.Vector;
 
 import javax.naming.InitialContext;
 import javax.naming.NameClassPair;
@@ -152,6 +152,12 @@
     protected int sendfileSize = 48 * 1024;
     
     
+    /**
+     * Full range marker.
+     */
+    protected static ArrayList FULL = new ArrayList();
+    
+    
     // ----------------------------------------------------- Static Initializer
 
 
@@ -190,7 +196,7 @@
     /**
      * Size of file transfer buffer in bytes.
      */
-    private static final int BUFFER_SIZE = 4096;
+    protected static final int BUFFER_SIZE = 4096;
 
 
     // --------------------------------------------------------- Public Methods
@@ -732,7 +738,7 @@
             cacheEntry.attributes.setMimeType(contentType);
         }
 
-        Vector ranges = null;
+        ArrayList ranges = null;
         long contentLength = -1L;
 
         if (cacheEntry.context != null) {
@@ -791,9 +797,10 @@
 
         }
 
-        if ( (cacheEntry.context != null) ||
-             ( ((ranges == null) || (ranges.isEmpty()))
-               && (request.getHeader("Range") == null) ) ) {
+        if ( (cacheEntry.context != null) 
+                || ( ((ranges == null) || (ranges.isEmpty()))
+                        && (request.getHeader("Range") == null) )
+                || (ranges == FULL) ) {
 
             // Set the appropriate output headers
             if (contentType != null) {
@@ -851,7 +858,7 @@
 
             if (ranges.size() == 1) {
 
-                Range range = (Range) ranges.elementAt(0);
+                Range range = (Range) ranges.get(0);
                 response.addHeader("Content-Range", "bytes "
                                    + range.start
                                    + "-" + range.end + "/"
@@ -897,10 +904,10 @@
                         // Silent catch
                     }
                     if (ostream != null) {
-                        copy(cacheEntry, ostream, ranges.elements(),
+                        copy(cacheEntry, ostream, ranges.iterator(),
                              contentType);
                     } else {
-                        copy(cacheEntry, writer, ranges.elements(),
+                        copy(cacheEntry, writer, ranges.iterator(),
                              contentType);
                     }
                 }
@@ -980,7 +987,7 @@
      * @param response The servlet response we are creating
      * @return Vector of ranges
      */
-    protected Vector parseRange(HttpServletRequest request,
+    protected ArrayList parseRange(HttpServletRequest request,
                                 HttpServletResponse response,
                                 ResourceAttributes resourceAttributes)
         throws IOException {
@@ -1005,7 +1012,7 @@
                 // If the ETag the client gave does not match the entity
                 // etag, then the entire entity is returned.
                 if (!eTag.equals(headerValue.trim()))
-                    return null;
+                    return FULL;
 
             } else {
 
@@ -1013,7 +1020,7 @@
                 // the last modification date of the entity, the entire entity
                 // is returned.
                 if (lastModified > (headerValueTime + 1000))
-                    return null;
+                    return FULL;
 
             }
 
@@ -1042,7 +1049,7 @@
 
         // Vector which will contain all the ranges which are successfully
         // parsed.
-        Vector result = new Vector();
+        ArrayList result = new ArrayList();
         StringTokenizer commaTokenizer = new StringTokenizer(rangeHeader, ",");
 
         // Parsing the range list
@@ -1105,7 +1112,7 @@
                 return null;
             }
 
-            result.addElement(currentRange);
+            result.add(currentRange);
         }
 
         return result;
@@ -1510,13 +1517,13 @@
     }
 
 
-    // -------------------------------------------------------- Private Methods
+    // -------------------------------------------------------- protected 
Methods
 
 
     /**
      * Check if sendfile can be used.
      */
-    private boolean checkSendfile(HttpServletRequest request,
+    protected boolean checkSendfile(HttpServletRequest request,
                                   HttpServletResponse response,
                                   CacheEntry entry,
                                   long length, Range range) {
@@ -1553,7 +1560,7 @@
      * and false if the condition is not satisfied, in which case request
      * processing is stopped
      */
-    private boolean checkIfMatch(HttpServletRequest request,
+    protected boolean checkIfMatch(HttpServletRequest request,
                                  HttpServletResponse response,
                                  ResourceAttributes resourceAttributes)
         throws IOException {
@@ -1598,7 +1605,7 @@
      * and false if the condition is not satisfied, in which case request
      * processing is stopped
      */
-    private boolean checkIfModifiedSince(HttpServletRequest request,
+    protected boolean checkIfModifiedSince(HttpServletRequest request,
                                          HttpServletResponse response,
                                          ResourceAttributes resourceAttributes)
         throws IOException {
@@ -1635,7 +1642,7 @@
      * and false if the condition is not satisfied, in which case request
      * processing is stopped
      */
-    private boolean checkIfNoneMatch(HttpServletRequest request,
+    protected boolean checkIfNoneMatch(HttpServletRequest request,
                                      HttpServletResponse response,
                                      ResourceAttributes resourceAttributes)
         throws IOException {
@@ -1693,7 +1700,7 @@
      * and false if the condition is not satisfied, in which case request
      * processing is stopped
      */
-    private boolean checkIfUnmodifiedSince(HttpServletRequest request,
+    protected boolean checkIfUnmodifiedSince(HttpServletRequest request,
                                            HttpServletResponse response,
                                            ResourceAttributes 
resourceAttributes)
         throws IOException {
@@ -1726,7 +1733,7 @@
      *
      * @exception IOException if an input/output error occurs
      */
-    private void copy(CacheEntry cacheEntry, InputStream is,
+    protected void copy(CacheEntry cacheEntry, InputStream is,
                       ServletOutputStream ostream)
         throws IOException {
 
@@ -1776,7 +1783,7 @@
      *
      * @exception IOException if an input/output error occurs
      */
-    private void copy(CacheEntry cacheEntry, InputStream is, PrintWriter 
writer)
+    protected void copy(CacheEntry cacheEntry, InputStream is, PrintWriter 
writer)
         throws IOException {
 
         IOException exception = null;
@@ -1823,7 +1830,7 @@
      * @param range Range the client wanted to retrieve
      * @exception IOException if an input/output error occurs
      */
-    private void copy(CacheEntry cacheEntry, ServletOutputStream ostream,
+    protected void copy(CacheEntry cacheEntry, ServletOutputStream ostream,
                       Range range)
         throws IOException {
 
@@ -1858,7 +1865,7 @@
      * @param range Range the client wanted to retrieve
      * @exception IOException if an input/output error occurs
      */
-    private void copy(CacheEntry cacheEntry, PrintWriter writer,
+    protected void copy(CacheEntry cacheEntry, PrintWriter writer,
                       Range range)
         throws IOException {
 
@@ -1901,19 +1908,19 @@
      * @param contentType Content type of the resource
      * @exception IOException if an input/output error occurs
      */
-    private void copy(CacheEntry cacheEntry, ServletOutputStream ostream,
-                      Enumeration ranges, String contentType)
+    protected void copy(CacheEntry cacheEntry, ServletOutputStream ostream,
+                      Iterator ranges, String contentType)
         throws IOException {
 
         IOException exception = null;
 
-        while ( (exception == null) && (ranges.hasMoreElements()) ) {
+        while ( (exception == null) && (ranges.hasNext()) ) {
 
             InputStream resourceInputStream = 
cacheEntry.resource.streamContent();
             InputStream istream =
                 new BufferedInputStream(resourceInputStream, input);
 
-            Range currentRange = (Range) ranges.nextElement();
+            Range currentRange = (Range) ranges.next();
 
             // Writing MIME header.
             ostream.println();
@@ -1958,13 +1965,13 @@
      * @param contentType Content type of the resource
      * @exception IOException if an input/output error occurs
      */
-    private void copy(CacheEntry cacheEntry, PrintWriter writer,
-                      Enumeration ranges, String contentType)
+    protected void copy(CacheEntry cacheEntry, PrintWriter writer,
+                      Iterator ranges, String contentType)
         throws IOException {
 
         IOException exception = null;
 
-        while ( (exception == null) && (ranges.hasMoreElements()) ) {
+        while ( (exception == null) && (ranges.hasNext()) ) {
 
             InputStream resourceInputStream = 
cacheEntry.resource.streamContent();
             
@@ -1976,7 +1983,7 @@
                                                fileEncoding);
             }
 
-            Range currentRange = (Range) ranges.nextElement();
+            Range currentRange = (Range) ranges.next();
 
             // Writing MIME header.
             writer.println();
@@ -2019,7 +2026,7 @@
      * @param ostream The output stream to write to
      * @return Exception which occurred during processing
      */
-    private IOException copyRange(InputStream istream,
+    protected IOException copyRange(InputStream istream,
                                   ServletOutputStream ostream) {
 
         // Copy the input stream to the output stream
@@ -2052,7 +2059,7 @@
      * @param writer The writer to write to
      * @return Exception which occurred during processing
      */
-    private IOException copyRange(Reader reader, PrintWriter writer) {
+    protected IOException copyRange(Reader reader, PrintWriter writer) {
 
         // Copy the input stream to the output stream
         IOException exception = null;
@@ -2086,7 +2093,7 @@
      * @param end End of the range which will be copied
      * @return Exception which occurred during processing
      */
-    private IOException copyRange(InputStream istream,
+    protected IOException copyRange(InputStream istream,
                                   ServletOutputStream ostream,
                                   long start, long end) {
 
@@ -2138,7 +2145,7 @@
      * @param end End of the range which will be copied
      * @return Exception which occurred during processing
      */
-    private IOException copyRange(Reader reader, PrintWriter writer,
+    protected IOException copyRange(Reader reader, PrintWriter writer,
                                   long start, long end) {
 
         try {
@@ -2179,7 +2186,7 @@
     // ------------------------------------------------------ Range Inner Class
 
 
-    private class Range {
+    protected class Range {
 
         public long start;
         public long end;



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to